Su problema resolverá el renderizado con 1 bit alfa. Lo que significa que especifica algún alfa de textura de origen que no se procesa (principalmente 0.5).
Tienes que escribir tu propio sombreador para salvar la profundidad de la luz y usar las instrucciones discard
. El descarte existe en hlsl, glsl y también en cg. Solo existe en el sombreador de píxeles / fragmentos y descarta el fragmento actual del renderizado en backBuffer y en z-buffer.
if (texSample.a < 0.5)
discard;
La ventaja es que no necesita cambiar la representación de la segunda pasada, solo la representación de la profundidad de la luz. También he demostrado que funciona:
Si desea representar las sombras correctas para varios objetos transparentes, tendrá que usar texturas de profundidad múltiples, con información de profundidad y opacidad renderizada usando pelado de profundidad. Y para el humo, el cabello, etc. Los mapas de opacidad profunda o de opacidad de Fourier son la mejor solución (principalmente recomiendo mapas de opacidad de Fourier)
editar: me acabo de dar cuenta de que olvidé agregar créditos. Como siempre. El modelo de árbol es del proyecto loopix, que es genial si está buscando algunos modelos de vegetación de baja polivinilo, una textura y libres.