Kamera Transformation im Shader
-
Mir ist gerade mehr oder weniger zufällig aufgefallen, dass nahezu alle Tutorials sowohl view als auch projection Transformation im Shader machen. Es ist nun schon etwas her, dass ich das letzte mal ein paar Shader angefasst habe, aber ich bin mir doch recht sicher, dass ich damals view und projection auf der CPU zusammengerechnet habe. Ganz einfach aus dem Grund, dass man das ja eigentlich nur einmal pro frame, und nicht einmal pro frame pro vertex machen muss. Ich habe mir damals nicht wirklich viel dabei gedacht, hat halt funktioniert. Gibt es einen Grund dafür, dass view und projection so oft separat im Shader gehalten werden?
-
Also ich denke, Beleuchtungsberechnung ist im projizierten Raum nicht allzu gut umzusetzen, aber auch im Objektraum nicht. Von daher muss man irgendwie an die Welt-Koordinaten kommen, oder an die Kamerakoordinaten. Letzteres genügt, von daher braucht man nur zwei Matrizen "um die Beleuchtung herum" (Objekt-Transformation * Kamera und Projektion halt)
-
Hm.. ist das der einzige Grund? Kann ich mir fast nicht vorstellen, ich meine, heutzutage wird das doch alles im Pixelshader gemacht. Andererseits, die Macht der Gewohnheit.
-
Wenn eben z.B. für Beleuchtung die World oder View Space Position benötigt wird, dann braucht es rein aus Prinzip so oder so zwei Matrix-Multiplikationen. Wie ich die dann aufteile ist egal. Aber wenn eine Multiplikation reichen würde, ist es natürlich unnötig, zwei zu machen...
cooky451 schrieb:
Hm.. ist das der einzige Grund? Kann ich mir fast nicht vorstellen, ich meine, heutzutage wird das doch alles im Pixelshader gemacht.
Im PixelShader etwas zu tun, was man im PixelShader nicht tun müsste, ist auch heute wohl nur in sehr seltenen Fällen eine gute Idee...
-
@dot Ich sehe das aber doch schon richtig, dass die meisten modernen Spiele per-pixel lighting benutzen. Aber gut, etwas total Offensichtliches scheine ich nicht übersehen zu haben, das wollte ich ja nur wissen. Das mit der Beleuchtung behalte ich mal im Hinterkopf.