HLSL - Erstellen von Schatten in 2D

7

Die Art und Weise, wie ich Schatten erstelle, erfolgt mit der folgenden Technik: http://www.catalinzima.com/2010/07/my-technique-for-the-shader-based-dynamic-2d-shadows/

Aber ich habe Fragen an HLSL. So wie ich es derzeit mache, habe ich ein Schwarzweißbild, wobei Schwarz "Objekt" und Weiß "Nichts" bedeutet. Ich verzerre dann das Bild wie im Tutorial. Ich mache das mit einem Pixel-Shader, aber anstatt auf dem Bildschirm zu rendern, rendere ich zu einer Textur, zurück zu meiner Anwendung. Ich nehme das, erstelle die Schatten und sende es zurück an die Grafikkarte, um die Verzerrung rückgängig zu machen, nachdem der Schatten hinzugefügt wurde. Dies kommt zurück und ich habe eine Schattenschablone. Ich kann dies auf das Originalbild legen und sie zurück an die Grafikkarte senden, die sie dann auf den Bildschirm bringt.

Für mich ist das viel hin und her. Gibt es eine Möglichkeit, dies zu vermeiden?

Das Problem, das ich habe, ist, dass ich im Grunde alle Positionen in der Textur dreimal durchlaufen und jedes Mal die neue neue Textur anstelle der ursprünglichen verwenden muss. Ich habe versucht, mich über Pässe zu informieren, aber ich glaube nicht, dass ich dort in die richtige Richtung gehe.

Hilfe?

Richard
quelle

Antworten:

2

Ich habe Catalins Methode eine ganze Weile studiert. Das Problem bei dieser Methode ist, dass sie pixelgenau ist. Das Funktionieren erfordert viel Arbeit im Pixel-Shader, wenn auch mit großer Wirkung.

Eine viel schnellere Möglichkeit, Schatten zu erstellen, ist der Vertex-Shader. Ich habe Krypton ausprobiert und denke darüber nach, meinem Inhalt Schattennetze hinzuzufügen, nur um ihn zu verwenden. Video

Nathan geht
quelle
0

Das Beste, was Sie tun können, ist, zwei Lichter zu haben.

Sie werden in einem der späteren Schritte feststellen, dass die Verzerrung der horizontalen Position im roten Kanal und die vertikale Position im grünen Kanal gespeichert ist. Die blauen und Alpha-Kanäle werden derzeit nicht verwendet, was bedeutet, dass Sie diesen Shader im Wesentlichen mit zwei Lichtquellen ausführen können.

Es ist ein wirklich komplizierter und teurer Shader, daher glaube ich nicht, dass Sie mehr als einen Schritt herausschneiden können.

kanno41
quelle