Witam
Dużo myślałem o pisaniu Shaderów, szczególnie Normalmap i Screen Space Ambient Occlusion, ale teraz poruszę tylko sprawę Normalmap. Mam parę pytań, i przedstawię moje wyobrażenie na to jak obliczać oświetlenie z Normalmapą, ale na pewno jest lepszy sposób i chciałbym go poznać.
Ja wyobrażam sobie obliczanie światła z Normalmapą tak:
Program:
- Jako druga tekstura nakładana jest Normalmapa
VertexShader:
- Normalizuje wektor światła i udostępnia go PS.
PixelShader:
- Z drugiej tekstury (Normalmapy) wyliczany wektor normalny i jest normalizowany do długości 1.
- Obliczany kąt między tymi wektorami (gdzieś czytałem też że mnoży się światło * wektor normalny i wychodzi jak bardzo zacienione powinno być) i czym większy kąt tym mocniejszy cień jest malowany z uwzględnieniem połysku, koloru itd.
Nie znam się na tym i zastanawiam się nad tym czy PS może mieć 2 kolory piksela osobne dla każdej tekstury. I czy da sie wyłączyć domyślne oświetlenie obiektów?
Chodzi mi o to jakie kroki trzeba wykonać po kolei i gdzie (VS,PS), żeby był efekt normalmapy/