4. 지난 이야기
그래픽스 파이프라인에서 프래그먼트 처리 단계는 프래그먼트의 색상을 구한다.
색상은 텍스쳐링과 조명 등을 통해 구해진다.
5. 조명이란 무엇인가
조명(illumination or lighting)은 광원과 물체 사이의 상호작용을 처리하는 기술이다.
조명 모델
국소 조명 모델(Local illumination)
전역 조명 모델(global illumination)
6. 국소 조명 모델
광원과 표면 재질의 특성만을 고려한 조명 모델이다.
직접 조명(direct lighting)이라고 한다.
계산이 간단하지만 퀄리티가 떨어진다.
7. 전역 조명 모델
현실에서는 모든 표면에 빛이 간접적으로 도달한다. (장면의 특정 위치에서 광원이
보이지 않더라도, 조명은 다른 표면의 반사나 굴절 등을 통해 그 위치에 전달된다.)
이러한 간접 조명을 고려하기 위해 전역 조명 모델(global illumination)은 주변 물체
들을 잠재적인 광원으로 본다.
8. 전역 조명 모델의 문제점
계산하는 데 너무 많은 비용이 든다.
레스터라이제이션 기반의 GPU 아키텍쳐는 국소 조명 모델이 더 적절하다.
9. 전역 조명 모델의 동향
정밀한 GI를 이용하기 보다는 계산을 간략화한 GI를 이용한다.
GI를 미리 계산한 후 텍스쳐에 저장하여 이를 실시간에 사용한다.
12. Diffuse term
디퓨즈 항은 객체의 표면에 부딪힌 후 전방향으로 흩어지는 빛을 표현한다
물체의 표면으로 들어온 빛은 모든 방향으로 같은 강도로 반사된다. 이를 난반사라
부른다.
따라서, 반사량은 카메라 시선(시야 방향)에 무관하다.
13. Diffuse term - Lambert’s law -
대신 반사량은 물체 표면에 들어오는 빛의 양에 비례한다.
빛의 양은 노말 벡터와 빛 벡터의 내적으로 측정할 수 있다.
이를 람베르트 법칙이라 한다.
빛의 양 = max 𝑛 ∙ 𝑙, 0 = max(𝑛𝑙𝑐𝑜𝑠𝜃, 0)
𝑝: 물체 표면 위의 한 점
𝑙 : 빛벡터
𝑛: 노말벡터
𝜃: 입사각
14. Diffuse term - Lambert’s law -
그림 (b)와 같이 노말 벡터와 빛 벡터의 방향이 같을 경우, 빛의 양이 가장 크다.
그림 (c)와 같이 입사각이 90도일 경우, 값이 0이 된다.
그림 (d)와 같이 입사각이 90도 이상일 경우 내적은 음의 값이 된다. 이럴 경우 빛의
양은 0으로 한다.
max 𝑛𝑙𝑐𝑜𝑠0, 0 = 𝑛𝑙 max 𝑛𝑙𝑐𝑜𝑠90°
, 0 = 0 max 𝑛𝑙𝑐𝑜𝑠120°
, 0 = 0
15. Diffuse term - 빛의 색과 재질 -
빛의 양 이외에도 추가적으로 빛의 고유색과 재질의 디퓨즈 반사율(diffuse
reflectance)을 고려하여 디퓨즈 항을 계산한다.
𝐿 𝑑 = max 𝑛 ∙ 𝑙, 0 𝑠 𝑑 ⊗ 𝑚 𝑑
𝐿 𝑑 : 디퓨즈 항
𝑠 𝑑 : 빛의 고유색
𝑚 𝑑 : 재질의 디퓨즈 반사율
16. Diffuse term - 빛의 색과 재질 -
백색 빛 (1, 1, 1)이 물체의 표면 반사 노란빛을 띤다면 빨강색과 초록색은 반사하고
파란색을 흡수한다. 재질 파라미터를 이용하여 이러한 종류의 필터링이 가능하다.
(1, 1, 1) ⊗ (1, 1, 0) = (1, 1, 0) (0.5, 0.5, 0.5) ⊗ (0.5, 1, 0.5) = (0.25, 0.5, 0.25)
𝑠 𝑑 ⊗ 𝑚 𝑑
20. Specular term -시야 벡터-
디퓨즈 항이 시야 벡터에 독립적인 반면 스펙큘러 항은 시야 벡터에 의존한다.
하이라이트의 감소되는 정도는 (𝑟 ∙ 𝑣) 𝑠ℎ
로 근사적으로 계산되며, sh는 표면의 반짝임
(shininess)를 의미한다.
완벽히 매끄러운 표면의 경우, sh값은 무한대가 되고 𝜌 = 0일 경우에만 카메라에 보인다.
그렇지 않은 표면에서는, 𝜌가 0일 때 가장 큰 하이라이트가 생기고 𝜌가 커질수록 급격히
감소한다.
22. Specular term
스펙큘러 항의 최종식은 아래와 같다.
디퓨트 항의 재질과는 달리 스펙큘러 항의 재질 특성은 (0.9, 0.9, 0.9), (0.8, 0.8, 0.8)
등과 같이 회색조(gray-scale)로 표현되는데, 이는 하이라이트가 광원을 띄게 하기
위함이다.
23. Ambient term
앰비언트 항은 장면 속 물체들로 반사된 빛을 근사적으로 표현한다. 흔히 간접광이
라 부른다.
퐁 모델에서 엠비언트 항은 빛이 물체의 모든 표면에 동일한 광도로 반사된다.
27. 쉐이딩 언어
C 언어와 매우 유사하다.
Hight Level Shading Launguage(HLSL) by Microsoft
GLSL(OpenGL Shading Language) by OpenGL
벡터와 행렬 같은 특수한 데이터 타입을 지원한다.
입력 데이터의 두가지 종류
Varing data: 쉐이더를 실행할 때마다 변하는 데이터(예 : 버텍스)
Uniform data : 다수의 쉐이더에서 공유되는 일정한 값(예 : 월드 행렬)
30. Per-vertex Lighting 의 문제점
하나의 삼각형을 이루는 3개의 버텍스에 하이라이트가 없을 경우, 삼각형 사이에 점 p에
서 하이라이트가 존재해도 Per-vertex Lighting의 결과는 하이라이트가 보이지 않는다.
Per-vertex Lighting
Per-fragment Lighting
실제 조명