PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wieviele Texturen in einem Pass?


Gast
2005-06-09, 08:55:29
Hallo

ich war etwas verwundert. Ich habe eine 6800 mit 128MiB Speicher und wenn ich versuche eine Szene pro Pass mit 6 Texturen zu rendern, bekomme ich von der Engine einen Fehler, daß die Hardware das nicht kann.

Wieviele Texturen gleichzeitig können denn aktuelle Grafikchips in einem Pass rendern? Oder kann auch ggf. mein Speicher zu Ende sein? Sind alles Texturen mit 4096²?

Ich dachte mit meinen 16 Pipelines könnte ich 16 Texturen gleichzeitig rendern?


danke

Demirug
2005-06-09, 09:28:30
Die Anzahl der Pipes ist dabei völlig egal. Die 6800 kann 16 Texturen pro Pass. Ich vermute allerdings das die Engine dazu die falschen API Funktionen benutzt und deswegen keine 6 Texturen in einem Pass rendern will. Die 4096² Texturen sind aber auch etwas heftig. In den Grafikkartenspeicher passen die nicht mehr. Es wäre also auch durchaus möglich das die Engine da Sperren eingebaut hat. Da ich aber nicht weiss von welcher Engine wir hier sprechen ist das natürlich nur ein Schuss ins Blaue.

Chris Lux
2005-06-09, 09:28:52
Hallo

ich war etwas verwundert. Ich habe eine 6800 mit 128MiB Speicher und wenn ich versuche eine Szene pro Pass mit 6 Texturen zu rendern, bekomme ich von der Engine einen Fehler, daß die Hardware das nicht kann.

Wieviele Texturen gleichzeitig können denn aktuelle Grafikchips in einem Pass rendern? Oder kann auch ggf. mein Speicher zu Ende sein? Sind alles Texturen mit 4096²?

Ich dachte mit meinen 16 Pipelines könnte ich 16 Texturen gleichzeitig rendern?


danke
was verwendest du?

was du testen kannst um das zu erfahren:
-opengl (glGetIntegerv nutzen um werte zu erfahren):
- - reine multitexture extension: GL_MAX_TEXTURE_UNITS (sollte auf 6800 nur 4 sein)
- - shader ab ARB_fragment program: GL_MAX_TEXTURE_IMAGE_UNITS und GL_MAX_TEXTURE_COORS

erklärung: beim multitexturing ist eine textur an eine texture unit mit den an sie gebundenen texture koordinaten gebunden. bei den shadern kannst du texturen getrennt von texturekoordinaten nutzen, da die klassischen texture units so nicht mehr existieren. auf der 6800 sollen es 8 texture coords sein und 16 texture image units.

HTH

p.s. bei d3d kenn ich mich nicht so gut aus, sollte aber in den caps stehen unter ähnlichen begriffen.

p.p.s. nützliches programm um diese infos zu erhalten: http://www.realtech-vr.com/glview

zeckensack
2005-06-09, 13:09:02
Genau.
NVIDIA unterstützt bei "fixed function MT" maximal 4 Texturen pro Pass. Wenn du mehr brauchst, musst du Shader ({ARB|NV}_fragment_program oder PS2.0) benutzen.

aths
2005-06-10, 13:00:04
Genau.
NVIDIA unterstützt bei "fixed function MT" maximal 4 Texturen pro Pass. Hast du eine Ahnung, warum? Wären da nicht auch 8 Texturen möglich (in D3D7)?

Will NV auf Kraft Abwärtskompatibilität behalten, die Shader-Nutzung fördern, oder sind die nur arbeitsscheu?

zeckensack
2005-06-10, 13:27:55
Hast du eine Ahnung, warum? Wären da nicht auch 8 Texturen möglich (in D3D7)?

Will NV auf Kraft Abwärtskompatibilität behalten, die Shader-Nutzung fördern, oder sind die nur arbeitsscheu?Sie wollen dass die Leute Shader nutzen.
Das ist IMO auch für die Treiberprogger angenehmer, also "arbeitsscheu" sind sie in gewissem Sinne auch.

Demirug
2005-06-10, 13:30:13
Zumindestens beim NV3X hat das auch noch Performancesgründe. Für bis zu 4 Texturen pro Pass haben die noch eine Art Turbo Mode. Wenn man mehr braucht funktioniert dieser aber nicht mehr.

aths
2005-06-10, 20:24:47
Zumindestens beim NV3X hat das auch noch Performancesgründe. Für bis zu 4 Texturen pro Pass haben die noch eine Art Turbo Mode. Wenn man mehr braucht funktioniert dieser aber nicht mehr.Wäre aber sicherlich noch schneller als mit Multipass.

Sie wollen dass die Leute Shader nutzen.
Das ist IMO auch für die Treiberprogger angenehmer, also "arbeitsscheu" sind sie in gewissem Sinne auch.Sollen Shader genutzt werden, weil das jetzt einfach in ist, oder weil es immer hässlicher wird, auf neuerer Hardware ein Multitexturing-Setup per Treiber in einen Shader umzusetzen?

Demirug
2005-06-10, 20:35:43
Wäre aber sicherlich noch schneller als mit Multipass.

Ich habe es nie ausprobiert aber ich könnte mir durchaus vorstellen das es in Verbindung mit viel AF im Multipass schneller ist.

Sollen Shader genutzt werden, weil das jetzt einfach in ist, oder weil es immer hässlicher wird, auf neuerer Hardware ein Multitexturing-Setup per Treiber in einen Shader umzusetzen?

Bei Shadern hat man den Vorteil das diese in der Regel ausserhalb des Renderloops anglegt und optimiert werden können.

Multitexture Setups muss man immer innerhalb des Renderloops validieren und übersetzten wenn man etwas daran ändert.

aths
2005-06-17, 21:44:25
Bei Shadern hat man den Vorteil das diese in der Regel ausserhalb des Renderloops anglegt und optimiert werden können.

Multitexture Setups muss man immer innerhalb des Renderloops validieren und übersetzten wenn man etwas daran ändert.Trifft das generell auf Pixelshader zu, also auch auf 1.1-1.3?

Neomi
2005-06-17, 22:20:47
Trifft das generell auf Pixelshader zu, also auch auf 1.1-1.3?

Jep. Der Shader wird erstmal assembliert und liegt dann als Token-Array vor. Dieses Array wird dann vom Device zu einem nutzbaren Shader gemacht, den kann man ganz normal per Handle setzen.