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
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Ich hatte mir gedacht, mit Vertex-Attributen zu arbeiten ist nicht sehr schön, weil man dann auch [i]alle[/i] anderen Vertex-Daten, wie Position, Normale, Texture koordinaten usw., über die Attribute mitliefern muss - so hab ich's jedenfalls gelesen. Zum BumpMapping sind aber nicht nur die Normalen auf der NormalMap wichtig, man braucht quasi auch die Rotation des aktuellen Dreiecks. Einige Zeit zuvor hatte ich mich mit der 'Rotation' bzw. mit der Matrix der Ebene, welches ein Dreieck repräsentiert, auseinander gesetzt. Soll heißen, ich benötigte eine RotationsMatrix (also ohne Position), die in die Richtung gedreht ist, in die die Normale eines Dreiecks oder eine Ebene zeigt. Im Vertex Shader habe ich daher anhand der Vertex Normale eine Rotations matrix generiert -> das passiert dann natürlich bei jedem Pixel der gerendert wird - aufwändig, aber dafür sind Shader ja da ^^ Dann multipliziere ich im Fragment Shader jede Normale (aus der NormalMap) die mit der generierten "NormalMatrix". Die Spiegelreflektion entsteht einfach durch Cubemapping - das ist ja nichts neuen :D Um nun aus einem Vektor eine Rotations Matrix zu berechnen, habe ich ganz einfach die Winkel des Vektors zum Ursprung berechnet (asin) und dann die Matrix an X und Y Achse gedreht. Nur zwei Achsen müssen dafür gedreht werden, die Z Achse interessiert hierbei gar nicht. Wenn ihr euch unter darunter jetzt nicht so viel vorstellen könnte, könnt ihr euch gerne den Source-code meiner Engine Herunterladen und in der Datei "spSceneManagerNode.cpp" die Funktion "lookAt" nachschauen, dies ist das Prinzip, nachdem ich mich dabei gerichtet habe. |
Zitat von »"LukasBanana"«
Zum BumpMapping sind aber nicht nur die Normalen auf der NormalMap wichtig, man braucht quasi auch die Rotation des aktuellen Dreiecks.
Werbeanzeige