ich hab da mal wieder eine exotische Frage Gäbe es irgendwie die Möglichkeit im Shader partiell zu sagen, dass sich Pointsprites nicht zur Kamera ausrichten sollen? Problem ist, das ich alle meine Partikel in einem Rutsch rendere, doch bei einigen möchte ich nicht das diese sich zur Kamera ausrichten. Diese nun komplett separat zu behandeln, und diese vielleicht mit eigenen Quads zu rendern, würde einen extremen Aufwand bedeuten..
Registriert: Sa Mär 31, 2012 23:14 Beiträge: 26
Programmiersprache: PASCAL
Ich würd sagen nein. Wie soll sich ein Pointsprite überhaupt [nicht zur Kamera ausrichten]? Das ist doch der Sinn der ganzen Aktion. Wenn du nicht 2 Draw-Calls machen willst musst du wahrscheinlich 'nen Geometry-Shader bemühen um dir selbst ein Quad zurechtzubasteln oder eine andere Lösung finden... Würde mich freuen wenn mir der nächste sagen würde dass ich hier grad Mist geschrieben hab, rotierte Sprites wären nämlich echt mal was tolles.
MfG Yoda
_________________ The force, strong it is in OpenGL.
mhh hätte ja sein können das man irgendwie übern Vertex Shader die Camera-Position "faken" kann...Ich versteh auch nicht so ganz wo und wann die Graka die Billboard transformation macht.
..Ich versteh auch nicht so ganz wo und wann die Graka die Billboard transformation macht.
Ich würde sagen im Primitve-Assembly-Schritt. Quasi direkt nach Vertex bzw. Geometryshader. Aus einem Punkt wird einfach ein Quad der angegebenen Größe das in der XY-Ebene liegt (= zur Kamera ausgerichtet).
Du kannst diesen Schritt im Geometryshader selbst implementieren indem du einfach einen Triangle-Strip mit zwei Dreiecken (=Quad) rausschreibst. Die vier Vertices musst du dir dann natürlich selbst berechnen...ist ja der Sinn der Sache
Ja katze, aber meinst ich bekomm das Billboardgedönst genauso schnell hin wie er das bei Pointsprites macht? Denn für 99% der Partikel brauch ich ja die billboard funktionalität.
Es wird natürlich etwas langsamer sein denke ich. Aber ich würde vermuten, dass du das kaum merken wirst. Normalerweise ist eher die Füllrate (also Pixel) das Problem. Vertexbound auf der Grafikkarte ist man eher selten, sofern die Partikel zumindest, wenn die Partikel deutlich größer als 1px sind. Meine Erfahrungswerte beziehen sich hier auf ein System wo die Partikel so ca. 16-32px groß waren. Aber um sicher zu sein wie sich das auswirkt wirst du es wohl ausprobieren müssen, hinterher ist man immer schauer
Lässt sich das Partikelsystem den nicht irgendwie zweiteilen? Also erst den vordern Teil des Buffers mit den normalen Partikel rendern und dann in einem zweiten Call den hinten Teil mit einem anderen Shader? Sollte funktionieren solange du nicht irgendwie sowas wie Z-Sortierung brauchst, wo dann wegen der geringen Partikelzahl aber die erste Lösung eh besser wäre.
Mitglieder in diesem Forum: 0 Mitglieder und 16 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.