Esse problema parece artefatos padrão da acne do mapa de sombras. Além disso, sua equação de iluminação está incompleta ou incorreta. A luz não deve influenciar rostos com normais voltados para longe dela. Isso também significa que, com uma equação adequada, o lado "escuro" da esfera não deve ter artefatos de acne.
Existem três fontes de artefatos de acne:
- A primeira fonte de acne é a precisão do mapa de sombras. Certifique-se de que os planos próximos e distantes da luz projetada pelas sombras sejam o mais estreitos possível. Todos os objetos antes do plano próximo podem ser colocados em panqueca, pois sua profundidade exata não é importante.
- Segunda fonte de acne é a resolução do mapa de sombras. Para uma luz direcional, você deve fazer mapas de sombras em cascata com pelo menos 3 1024x1012 cascatas por ~ 100-200m de distância da sombra. É difícil cobrir distâncias de sombra semelhantes com um mapa de sombra com projeção uniforme.
- A terceira fonte de acne é um filtro de mapa de sombras amplo, como o PCF, pois o uso de um único valor de comparação de profundidade de profundidade em um núcleo amplo é insuficiente. Existem muitos métodos para corrigi-lo, mas nenhum deles é robusto.
Para resumir, um frustum apertado com algumas cascatas e alguns ajustes de polarização é suficiente para fazer o caso geral funcionar (luz direcional). Comece ajustando desativando a filtragem de sombra e ajustando para filtragem somente quando os mapas de sombra básicos forem robustos o suficiente.
Além do viés de profundidade constante (que você usa atualmente), você também deve adicionar o viés de profundidade da inclinação e o viés de profundidade máxima da inclinação. Ambos podem ser implementados como estado de renderização ou como código de sombreador durante a renderização de mapa de sombra. O viés de profundidade da inclinação é simplesmente um valor de viés mágico dimensionado por ponto (normal, lightDir).
Existem alguns métodos interessantes adicionais e a maioria deles é implementada na excelente demonstração: Matt Pettineo - "Uma amostra de técnicas de sombra" .
- Flip culling durante a renderização do mapa de sombras (troca a acne por Peter panning).
- O mapeamento de sombra de deslocamento normal faz maravilhas para problemas de polarização, mas requer ter normais de vértice durante o sombreamento.
- Os métodos baseados em variação (ESM, VSM, EVSM) removem completamente os problemas de polarização, mas têm outras desvantagens (vazamentos de luz e / ou problemas de desempenho).