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

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

71

28.07.2009, 15:59

Wer hätte das gedacht, jetzt habe ich es tatsächlich, endlich geschaft den Environment Bump Mapping (EMBM) effekt zu programmieren :lol:

Und das sogar komplett ohne Tangente oder Binormal, nur mit dem Normalen-Vektor!!!


(Link)

72

28.07.2009, 16:05

Chic!

Und: Example, nicht Exsample...
Das gibt einen Eintrag ins Klassenbuch!
fka tm

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

73

28.07.2009, 16:08

Danke für den Hinweis =) hab's verbessert

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

74

28.07.2009, 16:42

Wie hast du den das gemacht? Hab davon gehört, dass man im Shader 3.0 mit den partiellen Derivaten da irgendwie das ganze per Pixel ausrechnen kann ohne sich per Vertex was reinzuholen. Kenn mich da nicht so aus...
Wär echt cool wenn du kurz erklären könntest, wie dein Ansatz funktioniert. :)

Der Screenshot sieht aber irgendwie etwas unglücklich aus - viel Umgebungsspiegelung sieht man ja nicht :?

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

75

28.07.2009, 18:15

Auf stein sollte man ja eigentlich 'so gut wie' gar nichts gespiegeltes sehen ^^
das passt eigentlich besser für Fliesen.

Du willst wissen wie ich das gemacht habe, ohne mit Vertex-Attributen zu arbeiten?
Das kann ich dir (bzw. euch) geren erklären =)

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.

PS: Ich hoffe das ist einiger Maßen verständlich. Das wichtigste ist im Grunde: im Vertex Shader anhand der Vertex-Normale eine Rotations Matrix generieren

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

76

28.07.2009, 19:27

Zitat von »"LukasBanana"«

Zum BumpMapping sind aber nicht nur die Normalen auf der NormalMap wichtig, man braucht quasi auch die Rotation des aktuellen Dreiecks.

nicht direkt, nur die rotatation relativ zur lichtquelle. deshalb transformiert man in der regel auch die position der lichtquelle relativ zum objekt ( localspace ) und berechnest nur einfache punktprodukte. damit wärst du dann bei der tangentspace geschichte.
ist effizienter als rotationsmatrixen per vertex zu speichern.
"Don't trust your eyes: They are a hell of a lot smarter than you are"

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

77

11.08.2009, 13:06

Wieder ein schöner Screenshot :D

Fur effect mit animierbaren Objekten (mit Hilfe des GLSL Vertex-shaders; OpenGL 3.1 - geht aber auch mit OGL 2.0):


(Link)

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

78

15.08.2009, 22:12

Die neuste Release-Version steht nun auch unter Sourceforge zur Verfügung:
https://sourceforge.net/projects/softpixelengine/files/

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

79

27.08.2009, 22:59

Ich habe heute ein neues Forum für meine SoftPixel Engine und andere Projekte erstellt in dem nun keinerlei lässtige Werbung mehr zu sehen ist.
Diese ist allerdings komplet auf englisch für internationale Diskussionen.

http://www.hlc-games.de/forum/

PS: Die Bilder werden auch noch angepasst.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

80

05.09.2009, 23:22

Ich habe heute Abend noch drei Bilder mit meinem GrafikTablett am PC gezeichnet.
Und zwar Maskottchen für meine 3D Engine :D


(Link)



(Link)



(Link)


Wie gefallen euch die Bilder?!

Werbeanzeige