Estoy jugando con el modelado 3D de procedimiento simple para hacer pequeños edificios para la impresión 3D. Un ejemplo:
Para hacer que los modelos sean más legibles en pantalla, he implementado el mapeo básico de sombras para una sola luz direccional. Como mi escena no está cambiando, solo renderizo el mapa de sombras una vez usando un cuadro alineado de eje de la escena para descubrir cuáles deberían ser los límites del mapa de sombras. Las sombras y los límites parecen tener todas las matrices correctas, pero acercarse un poco se ve terrible:
Por la lectura que hice, entiendo el peter panning y lo que podría hacer al respecto, pero los bordes irregulares, que creo que son una forma de alias proyectivo, se ven tan mal que creo que algo está mal en mi implementación básica.
Pirateé el sombreador de píxeles para mostrar los límites del texel de sombra:
Tengo filtrado bilineal en la textura (sin él, tengo un acné sombra grave). Lamentablemente, mi intento de PCF también falló; parece igual de irregular:
Aquí está el caso de muestra única con filtrado bilineal deshabilitado:
¿Parece esto un alias proyectivo "típico"? ¿Podría la representación dinámica del mapa de sombras, usando el frustum de vista recortado a la escena, posiblemente en cascada, abordar el problema?
Editar: Agregar un primer plano de filtrado bilineal, comparación de sombra posterior, solo para mostrar lo que obtengo. El acné de sombra malo aparece debido a los bordes interiores; Estoy modelando con bloques virtuales apilados y no estoy haciendo una operación de unión adecuada. Según mi lectura, implementar operaciones booleanas en poliedros no es trivial, pero también me permitirá implementar volúmenes de sombra estáticos, así como limpiar algunos programas de impresión 3D.