Shader normalmap GLSL

bajos
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:UwUdź
  • Postów:267
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/


128 postów [25.06.2015r. 21:03]
edytowany 2x, ostatnio: bajos
SE
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:21
1

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

bajos
@setsudanhana, widziałem to już, ale nie chciało (i nie znam za dobrze więc muszę pojedyncze wyrazy tłumaczyć sobie czasem) mi się czytać po ang. Cel uświęca środki :D Przydało by się coś o efektach OpenGL po PL.
SE
Niestety nie kojarzę jakichś polskich materiałów. Możesz zawsze poczytać forum polskiego game-dev'u, tutaj masz akurat dział zajmujący się OpenGL'em: http://forum.warsztat.gd/index.php?board=9.0

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.