ich bastel noch an den Feinheiten meiner Lichter.. Mir gehts gerade um den Light-Beam (Lichtstrahl). Optisch kann ich diese nicht alle additiv blenden, denn z.B. nach 5 Kegeln ists irgendwann weiss.. und so ist es in der natur nicht.. Also um das ein wenig natürlicher zu gestalten bräucht ich eine blendfunc mit Faktor wie z.b. 1+1 = 1.4 oder so.. Sodass an den Stellen wo die Kegel sich treffen nicht komplett Addiert wird..
Wie könnt ich das realisieren? (Die Kegel werden separat auf schwarzem Hintergrund gerendert..).
Ähm, wieso machst du den Kegel nicht einfach Grau statt weiß? Wenn der Kegel die Farbe 0.7 hat bekommst du 0.7+0.7 = 1.4 Aber alles größer 1 ist natürlich immer noch weiß....
Du kannst auch bei glBlendFunc statt GL_ONE einfach GL_CONSTANT_COLOR benutzen. Dann hast du deinen Faktor. Wird über glBlendColor gesetzt.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Wie wärs mit glBlendFunc(GL_SRC_ALPHA, GL_ONE) und einem entsprechenden Alpha-Wert?
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
nun ich nutze Alpha schon um den Lichtstrahl am Ende auszufaden.. habs noch net über den Shader hinbekommen zu definieren wie weit ein Fragment von der Lichtquelle weg ist...
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Nutz dafür doch z.B. Texturkoordinaten. Mache ich bei meinen Shadern auch so, wenn ich Werte brauche, die anders nicht zu bekommen sind. Du könntest die Distanz z.B. als S-Koordinate übergeben und im Shader mit nutzen.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
habs noch net über den Shader hinbekommen zu definieren wie weit ein Fragment von der Lichtquelle weg ist...
Du kannst im Vertexshader die 3D-Position des Vertex in Weltkoordinaten ausrechnen. Diese gibst du als varying and den Fragmentshader weiter => 3D-Position im Fragmentshader. Nun gibst du dem Fragmentshader noch die 3D-Position des Lichtes, ebenfalls in Weltkoordinaten, und kannst die Distanz berechnen.
Andere einfachere Möglichkeit: Es geht um den Lichtkegel, richtig? Angenommen das Mesh siehst so das aus die Lichtquelle die Vertex-Koordinaten (0,0,0) hat....dann kannst du die Distanz noch einfacher berechnen...
Andere einfachere Möglichkeit: Es geht um den Lichtkegel, richtig? Angenommen das Mesh siehst so das aus die Lichtquelle die Vertex-Koordinaten (0,0,0) hat....dann kannst du die Distanz noch einfacher berechnen...
Distanz zwischen (0,0,0) und Vertex? Also letztlich nur length(vertex), oder vertex.z....je nach dem wie du bei dir die "Distanz" definierst. Jedenfalls ist diese Methode "einfacher", weil du dir das fummeln mit den Matrizen sparen kannst...
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.