Ambient Term
특정한 빛이 들어오는 것이 아닌
간접적으로 빛들이 다양한 형태로 들어오는 경우를 의미하고
빛의 source를 정확히 알 수 없기 때문에,
물체의 주변광 ambient 색과 물체의 material ambient 색을 곱해서 계산한다
Emmisive Term
material 표면 자체가 빛을 발산하는 경우이고
materail의 emmisive 값 만으로 계산이 된다
Phong Lighting Model
diffuse, specular, ambient, emissive를 모두 합한 것이
바로 Phong Lighting Model을 적용한 것이다
Per-fragment Lighting
fragment shader에서 라이팅을 위해서는 l, n, r, v 값을 알아야 하고
해당 값들을 fragment shader로 넘겨주는 것이 중요하다
l 값은 어떤 정점이든 똑같기 때문에 uniform으로 넘겨주면 된다
반면, n, r, v 값은 정점에 따라 다른 값들을 가지니 attributes로 넘겨줘야 하고
rasterizer 단계의 scan conversion을 통해 보간이 된다
r 값은 l, n을 통해 "r = 2n(n·l)-l" 공식을 이용해 계산할 수 있다
l 값은 world-space 좌표 기준으로 uniform을 통해 넘겨주기에
n 값도 rasterizer 단계의 scan conversion을 통해 나온 normal을 정규화하고
동일한 world-space 좌표 기준으로 정의해주어야 한다
v 값은 world transform을 진행한 world-space 좌표에 EYE 좌표를 빼주면 구할 수 있다
'그래픽스 > [전북대] OpenGL' 카테고리의 다른 글
[OpenGL Note] Output Merger - Alpha Blending (1) | 2024.04.20 |
---|---|
[OpenGL Note] Output Merger - Z buffering (1) | 2024.04.20 |
[OpenGL Note] Lighting - Diffuse, Specular (0) | 2024.04.19 |
[OpenGL Note] Fragment Shader (0) | 2024.04.18 |
[OpenGL Note] Texture Wrapping과 Texture Filtering (1) | 2024.04.18 |