Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

14.08.2009, 16:37

[HLSL] tex2D() im Vertex Shader

Hi Spieleprogrammierer!

Momentan habe ch für jeden Terrain Block einen eigenen Vertex Shader, was bei großen Terrains sehr den Speicher beansprucht. Nun möchte ich nur einen VertexBuffer haben. Ich habe mir das so gedacht das ich einen Buffer habe mit 33*33 Vertices. Die Vertices beinhalten lediglich einen 2D Vector für die Position. Die Höhe, Normalen und Texturkoordinaten werden dann im Shader berechnet. Soweit funktioniert das ganz gut, nur leider muss ich tex2Dlod benutzen um an die Heightmap heran zu kommen, da tex2D() im Vertex Shader leider nicht unterstützt wird. tex2Dlod gibt es erst ab Shader Model 3.0, möchte aber eigentlich 2.0 unterstützung haben. Gibt es vieleicht eine Möglichkeit an die Höhendaten heran zu kommen, so das dass ganze auch mit Shader Model 2.0 funzt?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

14.08.2009, 17:00

Ich fürchte das wird leider nix, Vertex Texture Fetch gibts erst ab Shader Model 3.0 (ein Texture Fetch mit tex2D() ist im Vertex Shader übrigens rein technisch nicht möglich da der LoD da aus dem Screen Space Gradienten der Texturkoordinaten berechnet werden müsste und der ist im Vertex Shader noch nicht bekannt) ;)

Es gäbt evtl. noch einen alternativen Weg über den Tesselator allerdings gibts praktisch keine Hardware die das unterstützt, zumindest wird die noch viel seltener sein als Shader Model 3.0 Hardware...

3

19.09.2009, 17:46

Heutzutage macht man das mit einer Heightmap als Resource welche man einem GeometryShader übergibt, der für dich die Vertexes errechnet.
Was du meinst ist ja Terrain-Streaming.
Sowas wie VirtualBumpMapping is nicht schlecht, nur ganz groß, eben für Vertices -> Das wäre dann (SubPolygon-)DisplacementMapping evtl. mit Tesselation.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

19.09.2009, 19:18

Zitat von »"zodX"«

Heutzutage macht man das mit einer Heightmap als Resource welche man einem GeometryShader übergibt, der für dich die Vertexes errechnet.


Mach das mal mit SM 2.0 Hardware, dann schenk ich dir n Keks ;)

Werbeanzeige