Estou brincando com a simples modelagem 3D processual para criar pequenos edifícios para impressão 3D. Um exemplo:
Para tornar os modelos mais legíveis na tela, implementei o mapeamento básico de sombras para uma única luz direcional. Como minha cena não está mudando, apenas renderizo o mapa de sombras uma vez usando uma caixa alinhada por eixo da cena para descobrir quais devem ser os limites do mapa de sombras. As sombras e os limites parecem ter todas as matrizes corretas, mas chegar um pouco mais perto parece terrível:
Pela leitura que fiz, compreendo o peter panning e o que devo fazer sobre isso, mas as arestas irregulares, que acredito serem uma forma de aliasing projetivo, parecem tão ruins que acho que algo está errado na minha implementação básica.
Eu cortei o pixel shader para mostrar os limites da sombra texel:
Eu tenho filtragem bilinear na textura (sem ela, eu tenho uma grave acne na sombra). Infelizmente, minha tentativa de PCF também falhou - parece igualmente irregular:
Aqui está um exemplo de caso com a filtragem bilinear desativada:
Isso se parece com um aliasing projetivo "típico"? Poderia a renderização dinâmica do mapa de sombras, usando a vista cortada na cena, possivelmente em cascata, resolver o problema?
Edit: Adicionando um close de filtragem bilinear, comparação pós-sombra, apenas para mostrar o que recebo. A acne com sombra ruim aparece por causa das bordas internas; Estou modelando com blocos virtuais empilhados e não estou fazendo uma operação de união adequada. Pela minha leitura, a implementação de operações booleanas no poliedro não é trivial, mas também permitirá a implementação de volumes estáticos de sombra e a limpeza de alguns softwares de impressão 3D.