Sto armeggiando con la semplice modellazione procedurale 3D per realizzare edifici per adolescenti per la stampa 3D. Un esempio:
Per rendere i modelli più leggibili sullo schermo, ho implementato la mappatura delle ombre di base per una singola luce direzionale. Dato che la mia scena non sta cambiando, eseguo il rendering della mappa d'ombra solo una volta usando un riquadro allineato ad asse della scena per capire quali dovrebbero essere i limiti della mappa d'ombra. Le ombre e i limiti sembrano avere tutte le matrici giuste, ma avvicinarsi un po 'sembra terribile:
Dalla lettura che ho fatto, capisco il panning di Peter e cosa potrei fare al riguardo, ma i bordi frastagliati, che credo siano una forma di alias proiettivo, sembrano così cattivi che penso che qualcosa non vada nella mia implementazione di base.
Ho hackerato il pixel shader per mostrare i confini dell'ombra texel:
Ho un filtro bilineare nella trama (senza di essa, ho un'acne grave all'ombra). Purtroppo, anche il mio tentativo di PCF è fallito - sembra altrettanto sfilacciato:
Ecco il singolo caso di esempio con filtro bilineare disabilitato:
Sembra un alias proiettivo "tipico"? Il rendering dinamico della mappa ombra, usando il frustum della vista ritagliato sulla scena, possibilmente con cascata, potrebbe risolvere il problema?
Modifica: aggiunta di un primo piano di filtro bilineare, confronto post ombra, solo per mostrare ciò che ottengo. L'acne brutta ombra si presenta a causa dei bordi interni; Sto modellando con blocchi virtuali sovrapposti e non sto eseguendo una corretta operazione di unione. Dalla mia lettura, l'implementazione di operazioni booleane sui poliedri non è banale, ma mi permetterà anche di implementare volumi di ombre statiche e di ripulire alcuni software di stampa 3D.