Den bekomm ich doch bestimmt ebenfalls aus der ModelViewMatrix aus sicht der Lichtquelle oder?
Das ist gar nicht nötig, den laut Wiki werden die Ebenen automatisch transformiert. Du kannst also die Richtung nehmen die auch dein Lichtquellen-Mesh hat, vermutlich (0,0,1) oder sowas.
ich mach das Culling doch an einer ganz anderen Stelle, als wo ich meine Lampen zeichne... undzwar da wo die Szene das 2. mal gerendert wird. Und das geschieht in der ModelViewMatrix aus Sicht der Szene...
hab jetzt versucht, die 4 Werte während ich die Lampen zeichne zu übergeben und erst bei der projektion das Clipping aktivieren. Doch so haut das immernoch nicht hin...
so ihr werdet es kaum glauben aber ich hab das ganze jetzt mit dem Shader ordentlich zum laufen gebracht. Jetzt muss ich nur irgendwie das ganze für mehrere Projektoren umsetzen.. Irgendwelche tipps dazu?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Du kannst ja im Shader ganz normal Schleifen machen, jede halbwegs aktuelle Grafikkarte beherrscht die ja sowieso in Hardware (füher wurde das entrollt, da waren oft nur 4 Schleifendurchläufe drin), also einfach die Positionen und Ausrichtungen deiner Projektoren an den Shader übergeben und diese in einer Schleife abarbeiten und entsprechend dann auf die finale Fragmentfarbe addieren. Texturen würd ich wie angesprochen dann in einer 3D-Textur übergeben, denn 40 verschiedene Texturen kann man so schlecht übergeben wegen des TMU-Limits von 16 Einheiten. Also vorm Rendern eine 3D-Textur erstellen, dann jede Projektortextur in einen eigenen "Slice" rendern (Z-Koordinate der 3D-Textur) und im Shader dann je nach Schleifenzähler passenden Slice nutzen.
das hört sich interessant an. Wie viel Schleifendurchläufe kann ich denn machen? Und wie viel "Slices" gibt es denn pro 3D-Textur? Wie gesagt es sollte auf durchschnittliche Rechner laufen..
Also anstatt nur eine textur&ModelViewMatrix zu übergeben, soll ich für jeden Scheinwerfer eine übergeben. Das sind dann 128bytes pro Lampe nur für die Matrizen. Gibts da nicht ne Begrenzung?
Ja.. ich weiß, eins nach dem anderen, doch schonmal vorab, könnte man im gleichen Shader nicht auch rel. einfach eine Schattenberechnung für diesen Projektor integriere? Das man sich irgendwie merkt ob ein Pixel der Textur schon projeziert wurde, wenn ja dann mach ichs einfach bissl dunkler bzw. es wird nicht projeziert?!
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Thmfrnk hat geschrieben:
das hört sich interessant an. Wie viel Schleifendurchläufe kann ich denn machen? Und wie viel "Slices" gibt es denn pro 3D-Textur? Wie gesagt es sollte auf durchschnittliche Rechner laufen..
Eine 3D-Textur hat halt eine dritte Dimension die man i.d.R. mit Slices betitelt, die Limitation ist hier halt die Limitation in der Größe für 3D-Texturen auf deiner Hardware, das musst du also vorher überprüfen.
Thmfrnk hat geschrieben:
Also anstatt nur eine textur&ModelViewMatrix zu übergeben, soll ich für jeden Scheinwerfer eine übergeben. Das sind dann 128bytes pro Lampe nur für die Matrizen. Gibts da nicht ne Begrenzung?
Nein, 128 Byte für 40 Lichtquellen sind eigentlich kein Problem, zumindest nicht auf aktueller Hardware. Zur Not kann man aber noch über Texturkoordinaten tricksen und diese als Parameterplätze "missbrauchen". So hab ich das früher gerne gemacht, ist halt bequem und wenn man die Texturkoordinaten eh nicht braucht kann man da perfekt diverse Shaderparameter reinpacken.
Thmfrnk hat geschrieben:
Ja.. ich weiß, eins nach dem anderen, doch schonmal vorab, könnte man im gleichen Shader nicht auch rel. einfach eine Schattenberechnung für diesen Projektor integriere? Das man sich irgendwie merkt ob ein Pixel der Textur schon projeziert wurde, wenn ja dann mach ichs einfach bissl dunkler bzw. es wird nicht projeziert?!
Schatten sind nicht so einfach wie du denkst, wobei man bei einem Projektor ja nur gerichtete Schatten hat, die sind dann etwas einfacher. Da kann man das rein theoretisch eigentlich direkt im selben Shader machen. Schau dir mal Beispiele zu simplem Shadowmapping an, im Shader geht das recht einfach.
Mitglieder in diesem Forum: Google [Bot] und 10 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.