Eu tenho trabalhado na implementação de mapeamento de sombra de variação para o meu jogo. Consegui obter uma luz de ponto trabalhando com o mapeamento de sombra de variação com um desfoque gaussiano aplicado ao mapa de sombra para reduzir o alias. Agora, estou tentando implementar luzes pontuais, mas não sei como adaptar o desfoque gaussiano para trabalhar com o mapa de sombras quando armazenado em um mapa de cubo. Eu procurei por um tempo, mas não consigo encontrar exemplos que usem luzes de ponto. Alguém pode me ajudar aqui?
xna
xna-4.0
shadow-mapping
Telanor
fonte
fonte
Respostas:
Há um exemplo de como fazer o mapeamento de sombra de variação com luzes pontuais, mas ele usa o mapeamento parabolóide duplo em vez do mapeamento de cubo. O tutorial com o exemplo é mostrado aqui .
Se você deseja lidar com um pouco menos de detalhes que os mapas de cubo, o mapeamento de sombra de variação de DP é mais fácil de codificar e requer duas texturas em vez de seis, economizando um pouco de memória. Você também tem apenas uma costura para esconder.
As luzes pontuais são geralmente o tipo mais difícil de aplicar o mapeamento de sombra (e consomem mais memória), e é por isso que muitos jogos não as usam com tanta frequência.
fonte
Quando eu implementei isso antes, apenas desfoquei cada face de cubo individualmente, usando um desfoque Gaussiano 2D padrão. Você pode introduzir costuras nas bordas do cubo, porque o borrão não as atravessa, mas, na minha experiência, isso quase nunca é perceptível. YMMV, é claro.
Você provavelmente poderia até fazer um borrão nas bordas do cubo escrevendo um sombreador de borrão que receberia sua entrada na forma de um mapa de cubos e distribuir amostras em torno de um vetor 3D, amostrando um cone de direções. Isso parece complicado e lento, então eu tentaria desfocar cada rosto individualmente primeiro.
fonte