Shader normalmap GLSL

0

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:

  1. Jako druga tekstura nakładana jest Normalmapa

VertexShader:

  1. Normalizuje wektor światła i udostępnia go PS.

PixelShader:

  1. Z drugiej tekstury (Normalmapy) wyliczany wektor normalny i jest normalizowany do długości 1.
  2. 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/

1

Myślę że tutaj znajdziesz wszystkie twoje odpowiedzi: http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/

1 użytkowników online, w tym zalogowanych: 0, gości: 1