Ihr Problem wird das Rendern mit 1-Bit-Alpha lösen. Dies bedeutet, dass Sie ein Alpha der Quelltextur angeben, das nicht gerendert wird (meistens 0,5).
Sie müssen Ihren eigenen Shader schreiben, um die Tiefe vor Licht zu schützen und Anweisungen zu verwenden discard
. Discard gibt es auch in hlsl, glsl und in cg. Es existiert nur im Pixel / Fragment-Shader und verwirft aktuelle Fragmente aus dem Rendering in backBuffer und in z-buffer.
if (texSample.a < 0.5)
discard;
Der Vorteil ist, dass Sie Ihr Rendering im 2. Durchgang nicht ändern müssen, sondern nur das Rendering der Lichttiefe. Auch ich habe bewiesen, dass es funktioniert:
Wenn Sie korrekte Schatten für mehrere transparente Objekte rendern möchten, müssen Sie Texturen mit mehreren Tiefen verwenden, wobei Tiefen- und Deckkraftinformationen mithilfe von Tiefenschälen gerendert werden. Und für Rauch, Haare usw. Tiefenopazität oder Fourier-Opazitätskarten sind die beste Lösung (ich empfehle meistens Fourier-Opazitätskarten)
edit: Mir ist gerade klar geworden, dass ich vergessen habe, Credits hinzuzufügen. Wie immer. Das Baummodell stammt aus dem Loopix-Projekt, was einfach großartig ist, wenn Sie nach LowPoly, einer Textur und freien Vegetationsmodellen suchen.