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

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

21

06.08.2012, 19:05

Dagegen spricht, dass meine Modellklasse nicht wissen kann, welche Daten später benötigt werden. Es könnte ja sein, dass im Laufe des Spiels ein anderer Shader zum Rendern des gleichen Objekts herangezogen wird, der ein anderes Vertexformat erwartet. Was mache ich dann? Einen neuen Vertexpuffer anlegen, der neue Daten enthält? Das dürfte ja nicht wiklich performant sein...

Und nochmal eine Frage (diesmal zum Thema): Bumpmapping wird in diesem Tutorial erklärt: http://www.rastertek.com/dx11tut20.html Die Binormale und die Tangente werden aus den 3 Vertices eines Dreiecks berechnet. Warum berechnet (Kreuzprodukt) der Autor anschließend aus diesen eine neue Normale und behält nicht die Ursprüngliche?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

22

06.08.2012, 19:49

Dagegen spricht, dass meine Modellklasse nicht wissen kann, welche Daten später benötigt werden. Es könnte ja sein, dass im Laufe des Spiels ein anderer Shader zum Rendern des gleichen Objekts herangezogen wird, der ein anderes Vertexformat erwartet.


Normal existiert ein Basisset von Attributen, dass jeder Shader verwendet (Position, UV-Set, [Farbe], Tangentframe), wenn ein Shader mal ein Attribut nicht benötigt ist das meißt nicht ganz so tragisch. Würdest du darauf Rücksicht nehmen müsstest du z.B. für einen Light-Prepass sämtliche Modeldaten in doppelter Ausführung hinterlegen. Oft ist es aber so, dass Attribute hinzukommen die nicht zu diesem Basisset gehören (z.B. Skinningdaten, weitere UV-Sets für Textursplatting, o.ä.). Es macht hier keinen Sinn diese Daten standardmäßig für jedes Model zu hinterlegen, da ja nur ein Subset von Modellen diese Daten effektiv benötigt. Diese Modelle werden entsprechend auch mit anderen Shadern gerendert. Dafür bietet sich oft an solche Features im Shader über Macros zu aktivieren und entsprechend das Vertexlayout anzupassen.
@D13_Dreinig

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

23

06.08.2012, 20:55

Ok danke. Das hat sehr geholfen. Ich werde zu jedem Vertex jetzt Koordinaten, Texturkoordinaten, Farbe, Normale, Tangente und Binormale hinterlegen. Sollte später ein spezieller Shader was anderes benötigen, muss von der Modellklasse eben abgeleitet werden und die Methode, die die Buffer erstellt, muss überschrieben werden.

Werbeanzeige