PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vertex Texturen (VS 3.0) im Einsatz


Demirug
2004-08-28, 09:53:07
Sieht so aus als hätte nVidia jemanden gefunden der es benutzten will.

http://developer.nvidia.com/object/using_vertex_textures.html

Im PDF (ftp://download.nvidia.com/developer/Papers/2004/Vertex_Textures/Vertex_Textures.pdf) gibt es auch noch Bilder.

Bevor jetzt wieder das geflame anfängt:

Man kann das ganze natürlich auch ohne Vertex Texturen realisieren nur muss dann eben die CPU einen grösseren Teil der Vertexshader arbeit übernehmen.

LovesuckZ
2004-08-28, 10:01:40
Man kann das ganze natürlich auch ohne Vertex Texturen realisieren nur muss dann eben die CPU einen grösseren Teil der Vertexshader arbeit übernehmen.

Das ist wohl der Grund, dass die FX Karten die "Pirates" demo abspielen koennen.
Nun, wird auch deutlich schneller sein auf den NV40 Karten?
Vorallen, sieht es mit Point sampling ueberhaupt schoen aus?

DanMan
2004-08-28, 16:45:04
Vorallen, sieht es mit Point sampling ueberhaupt schoen aus?
Laut PDF kann man seinen eigenen Filtercode mit in den Vertex Shader reinprogrammieren. Ein Beispiel für bilineares Filtern steht auch drin, was sogar schnell laufen soll. Wobei das natürlich alles ein Schritt zurück in die Texturfilter-Steinzeit ist.

M@g
2004-08-28, 16:56:05
Ruhig Blut, Bilinear ist ja nur der Anfang, schön das es einsetzbar ist, aber es bildet nunmal die Grundlage für Trilinear und noch andere "Feinheiten".
Der Filtercode ist sicher per CPU Emulation um einiges langsamer, als wenn die GPU die Arbeit übernimmt, da freut man sich doch gleich schon auf die nächste Generation, die da wohl noch mehr bietet :smile:

DanMan
2004-08-28, 17:08:41
da freut man sich doch gleich schon auf die nächste Generation, die da wohl noch mehr bietet :smile:
Um die gehts aber nicht. Und trilineares Filtern soll schonwieder zuviel Leistung kosten auf die Art.

Asmodeus
2004-08-28, 17:24:19
Bei dem Nvidia Paper über Vertex Textures ist mir ein Abschnitt absolut schleierhaft:


Another advantage of the dynamic branching in the vertex shaders is the possibility of early-out. Since graphics hardware culls vertices only after they have been processed by the vertex-shader, the vertex shader could be doing a lot of work for vertices that ultimately get thrown away. Thus, an expensive vertex shader should test early on if a vertex is going to be clipped, and if so early-out via a dynamic branch. Here is an example of clipping on the GPU:

// OpenGL example

float4 vClipPos = mul( ModelViewProj, vPos );
float3 bClip = abs( vClipPos.xyz ) < ( vClipPos.www + vClipOffset );
if( all(bClip) )
{
DoLightingAndDisplacement();
}


Meiner Meinung nach kann man in einem Vertexprogramm doch keinen Vertex eines zusammenhängenden Meshes von einer nachfolgenden Lichtberechnung ausschließen. Sobald von einem Dreieck ein Eckpunkt ausserhalb des Bildschirmbereichs liegt (er also geclippt wird) wird ja trotzdem eine Interpolation zu den anderen beiden, noch sichtbaren Eckpunkten auf Fragmentebene durchgeführt. Wird der Vertex nun aber vorher durch das Vertexprogramm von der nachfolgenden Berechnung ausgeschlossen, so treten doch garantiert Beleuchtungsartefakte auf. Umgehen könnte man das ganze nur, wenn man die komplette Beleuchtungsberechnung auf den Fragmentshader verschiebt (bei dem Beispiel scheint es so aber nicht gedacht zu sein, da ja eindeutig von DoLightingAndDisplacement() die Rede ist.

Gruss, Carsten.

Xmas
2004-08-29, 04:24:10
Daher ja auch das vClipOffset. Wenn du die maximale Distanz zweier benachbarter Eckpunkte in einem Mesh kennst, kannst du damit bedenkenlos clippen, weil du sozusagen nur die Eckpunkte aus der "zweiten Reihe" erwischst.

(Ich hab mir das PDF übrigens noch nicht durchgelesen)

Corrail
2004-08-29, 12:21:51
Um die gehts aber nicht. Und trilineares Filtern soll schonwieder zuviel Leistung kosten auf die Art.

Trillineares Filtern im Vertex Shader ist überhaupt so eine Sache. Laut Definition braucht man für trilineares Filtern Mip-Maps. Das Problem ist hier nur, dass kein Texture-LOD (wie beim Fragment/Pixel Shader) berechnet werden kann. Man muss das also selbst berechnen.

MadManniMan
2004-08-30, 23:06:12
Wieso kann man keine Mips berechnen? Auf X- und Y-Achse je halbierte und hierbei pro Texel interpolierte Werte erscheinen mir doch wirklich nicht unsinnig.

Corrail
2004-08-30, 23:42:03
Wieso kann man keine Mips berechnen? Auf X- und Y-Achse je halbierte und hierbei pro Texel interpolierte Werte erscheinen mir doch wirklich nicht unsinnig.

Sorry, hab mich ein wenig unpräzise ausgedückt. Ich habe hier gemeint, dass das Texture-LOD nicht automatisch (vom Treiber/GPU) berechnet werden. Man muss das Texture-LOD manuell im Shader berechnen.

Coda
2004-08-30, 23:58:45
Anisotropische Filter machen in dem Fall ja eh keinen Sinn, weil es sich ja nicht um ne Fläche handelt.

MadManniMan
2004-08-31, 00:56:02
Anisotropische Filter machen in dem Fall ja eh keinen Sinn, weil es sich ja nicht um ne Fläche handelt.

Anisotrope ( ;) ) Filter könnten meiner Vorstellungskraft zufolge tatsächlich auch hier was bringen - präzisiere bitte, damit ich diese Vorstellung verdrängen kann :D

Und Corrail: äh, ich kannte bisher nur von der API und vorgefertigte Mips - muß man beim Displacement Mapping umdenken?

Corrail
2004-08-31, 01:06:31
Und Corrail: äh, ich kannte bisher nur von der API und vorgefertigte Mips - muß man beim Displacement Mapping umdenken?
Wenn ich mich jetzt nicht total irre ist das Problem folgendes: Bei Texture im Pixel/Fragment Shader berechnet dir die GPU automatisch (abhängig von der Distanz) das Texture-LOD, also die Mipmap Stufe, wo gefiltert werden soll. Das ist beim Vertex Textureing anders, da es hier keine direkte Distanz gibt. Deshalb muss der Shader-Programmierer das Texture-LOD selbst angeben/berechnen; es wird hier nicht automatisch getan.

MadManniMan
2004-08-31, 01:31:39
Aso aso, den ... errm ... "Abstand" meinst du - ich verstehe nur nicht, warum bei Geometrie und Texturen nicht Entfernungen Entfernungen bleiben :grübel:

Coda
2004-08-31, 02:00:29
Nehmen wir mal an wir benützen die Textur um ne Heighmap zu displacen, dann bringt anisotrope Filterung nichts, sondern würde eher zu seltsamen Ergebnissen führen, weil die Geometrie nicht aus jedem Blickwinkel gleich aussieht.

Wenn man die Textur als Vertex Color benützt, dann würde es vielleicht schon was nützen.

MadManniMan
2004-08-31, 02:17:42
Von letzterem Fall ging ich auch ursprünglich aus! :)

Coda
2004-08-31, 02:20:42
Hm, ich glaube aber das der Fall nie genutzt wird, weil dann kann man ja gleich normale Texturen (bei besserer Qualität) benützen.

Gast
2004-08-31, 09:08:13
Vertex Texturen (VS 3.0) im Einsatz
Außer schicken Bildchen kann ich nichts entdecken. Werbung lügt - nie vergessen!;)

Xmas
2004-08-31, 12:23:19
Aso aso, den ... errm ... "Abstand" meinst du - ich verstehe nur nicht, warum bei Geometrie und Texturen nicht Entfernungen Entfernungen bleiben :grübel:
Entfernung spielt eigentlich nur indirekt eine Rolle.

Im PS hast du vier Pixel (Quad), jeweils mit Texturkoordinaten. Aus den Differenzen der Texturkoordinaten untereinander kannst du berechnen welche Fläche im Texturspace bedeckt wird, und damit auch den LOD der genommen werden soll.

Im VS hast du aber nur einen einzigen Eckpunkt. Von einem Punkt kannst du aber nicht auf eine Fläche schließen, dafür müsstest du die Nachbarn kennen.

Darüber hinaus muss man sich auch immer fragen ob das Flächenintegral bei Geometrie Sinn macht.

MadManniMan
2004-08-31, 12:30:41
Bis auf den letzten Satz hab ich alles verstanden - ich habe einfach nach anderthalb Jahren ohne Mathe keine Ahnung mehr, wozu man Integrale benützt.

Gast
2004-08-31, 13:06:48
Wenn ich mich jetzt nicht total irre ist das Problem folgendes: Bei Texture im Pixel/Fragment Shader berechnet dir die GPU automatisch (abhängig von der Distanz) das Texture-LOD, also die Mipmap Stufe, wo gefiltert werden soll. Das ist beim Vertex Textureing anders, da es hier keine direkte Distanz gibt. Deshalb muss der Shader-Programmierer das Texture-LOD selbst angeben/berechnen; es wird hier nicht automatisch getan.
Ich dachte der DX8.1 Matrox Parhelia hat das beim Displacement Mapping automatisch gemacht?

Corrail
2004-08-31, 13:26:57
Ich dachte der DX8.1 Matrox Parhelia hat das beim Displacement Mapping automatisch gemacht?

Displacement Mapping ist ja nur eine Anwendung von Vertex Texturing. Bei Displacment Mapping kann ich mir sehr wohl vorstellen, dass die GPU automatisch das Texture-LOD berechnet. Nur ist das allgemein leider nicht der Fall.

SuperHoschi
2004-08-31, 14:35:09
Sieht so aus als hätte nVidia jemanden gefunden der es benutzten will.

http://developer.nvidia.com/object/using_vertex_textures.html

Im PDF (ftp://download.nvidia.com/developer/Papers/2004/Vertex_Textures/Vertex_Textures.pdf) gibt es auch noch Bilder.

Bevor jetzt wieder das geflame anfängt:

Man kann das ganze natürlich auch ohne Vertex Texturen realisieren nur muss dann eben die CPU einen grösseren Teil der Vertexshader arbeit übernehmen.

Ich habe mir zwar nur die Bilder in dem PDF angesehen, aber WOW
wenn ich mich im Sessel zurück lehne und die Bilder mit dem Schiff
auf den Wellen angucke werde ich beim VS-Bild fast schon seekrank.

Sieht wesentlich realistischer aus als die "standard" Bilder mit Bumpmapping.
Da die Graka das alles selbst berechnet brauch ich bald nur mehr einen
500MHz Rechner mit PCI Bus da ja quasi alles "in" der Graka abläuft. ;D

CU
SuperHoschi

Aquaschaf
2004-08-31, 15:33:18
Da die Graka das alles selbst berechnet brauch ich bald nur mehr einen
500MHz Rechner mit PCI Bus da ja quasi alles "in" der Graka abläuft. ;D

CU
SuperHoschi

So wird es bestimmt nicht kommen, die CPU hat immer genug zu tun ;)

r@w
2004-09-01, 09:48:31
So wird es bestimmt nicht kommen, die CPU hat immer genug zu tun ;)Zumindest kann sie sich dann wieder auf wirklich relevante Dinge 'konzentrieren'!
:D

So etwas 'Unwichtiges' wie die KI oder die Physik-Engine wäre hier zu erwähnen, wo ältere Titel ja nun überhaupt nicht glänzen. Sehr positiv überrascht war ich allerdings von den beiden aktuellen Titeln Doom3 und FarCry die gerade in Richtung KI die Meßlatte doch extremst nach oben gehieft haben...

Razor

Coda
2004-09-01, 14:57:27
Doom 3 und KI, hab ich was verpasst?

tokugawa
2004-09-01, 20:15:33
Außer schicken Bildchen kann ich nichts entdecken. Werbung lügt - nie vergessen!;)

Da sind auch Papers :P Außerdem ist das die Entwicklerseite. Die ist zwar auch nicht webefrei, spart aber eindeutig mehr an Werbung als die normalerweise den Gamern sichtbare Seite von NVIDIA.

tokugawa
2004-09-01, 20:18:24
Doom 3 und KI, hab ich was verpasst?

Naja, es simuliert doch sehr realistisch das Verhalten von Zombies :) also von gehirntoten triebgesteuerten Wesen.

Aber hast recht, irgendwie sind die Gegner in Doom 3 nicht recht schlau, IMO.