Bawię się prostym proceduralnym modelowaniem 3D, aby stworzyć malutkie budynki do drukowania 3D. Przykład:
Aby modele były bardziej czytelne na ekranie, zaimplementowałem podstawowe mapowanie cieni dla pojedynczego światła kierunkowego. Ponieważ moja scena się nie zmienia, po prostu renderuję mapę cienia za pomocą wyrównanego do osi pola sceny, aby dowiedzieć się, jakie powinny być granice mapy cienia. Cienie i granice wyglądają tak, jakby wszystkie macierze były prawidłowe, ale przybliżenie się wygląda okropnie:
Z lektury, którą wykonałem, rozumiem panoramowanie Petera i co mogę z tym zrobić, ale poszarpane krawędzie, które moim zdaniem są formą aliasingu projekcyjnego, wyglądają tak źle, że myślę, że coś jest nie tak z moją podstawową implementacją.
Zhakowałem moduł cieniujący piksele, aby pokazać granice teksli:
Mam dwuliniowe filtrowanie w teksturze (bez tego mam poważny trądzik w cieniu). Niestety, moja próba PCF również się nie powiodła - wygląda na równie nierówną:
Oto przykładowy przypadek z wyłączonym filtrowaniem dwuliniowym:
Czy to wygląda jak „typowe” aliasing projekcyjny? Czy dynamiczne renderowanie mapy cienia przy użyciu fragmentu widoku przyciętego do sceny, być może z kaskadowaniem, może rozwiązać ten problem?
Edycja: Dodając zbliżenie do filtrowania dwuliniowego, porównuj cienie, aby pokazać, co otrzymuję. Trądzik zły cień pojawia się z powodu wewnętrznych krawędzi; Modeluję ze stosami wirtualnych bloków i nie wykonuję poprawnej operacji łączenia. Z mojego czytania, implementowanie operacji logicznych na wielościanach nie jest trywialne, ale pozwoli mi również na implementację statycznych woluminów cienia, a także oczyszczenie niektórych programów do drukowania 3D.