czwartek, 26 marca 2009

Oświetlenie punktowe i "coding standard"

Po pierwsze chwalenie się. Zrobiłem oświetlenie punktowe :) Wyszło przy okazji parę ciekawostek. Przede wszystkim samodzielnie wymyśliłem jak poprawnie znaleźć koordynaty dla takiej tekstury :), nie jest specjalnie skomplikowane, ale zawsze miło samemu coś odkryć, a nie tylko ctrl-c ctrl-v. Początkowo myślałem, że współrzędne powinny być normalizowane. Nie ma jednak takiej potrzeby.
Znormalizowane wspólrzędne

Zapomniałem, że w klasie tekstury nie było kodu tworzącego mapy sześcienne. Dalej okazało się, że macierz widoku jest robiona nie tak jak powinna. W efekcie cień poruszał się w innym kierunku niż obiekt. Ostatecznym problemem były "poszarpane" cienie.
Niedobra macierz projekcji

Przyczyną było nie schodzenie się obrazków na krawędziach, czyli źle zrobiona macierz projekcji.
Poprawny efekt


Po drugie, dziękuję Ci Motorolo za Twój coding standard. Dzięki niemu nie musiałem szukać tego błędu:
if (LightType_Directional = type)
Wskazał mi go kompilator, takim oto komunikatem: "non-lvalue in assignment"

1 komentarz:

lednar pisze...

Czasem warto się pochwalić.:)