빛
3d 공간에서 빛이 닿지 않는 곳은 무조건 까만색이다. 빛이 닿음으로서 비로소 색이 정해지는 것이다.
난반사광(Diffuse Light)
빛은 표면에 닿으면 다수의 방향으로 난반사된다. 현실 세계에서 거울 같은 일부 물체를 제외한 대부분의 물체의 가시성은 빛의 난반사에 의해 확보된다. 3d 공간에서도 디퓨즈 라이트는 물체의 빛의 강도를 조절하는 주요한 역할을 한다.
일반적인 직사광선의 경우 빛이 물체 표면의 위에서 직선으로 내리꽃는게 가장 빛이 강하다. 빛이 옆에서 비출 경우엔 내리꽃는 빛보다 약하다. 빛이 닿지 않는 곳은 빛이 적용되지 않는다.
즉 빛이 들어오는 각도에 따라 빛의 표현 세기가 달라진다.

램버시안 조명 모델에 의하면 빛의 휘도 I는 다음과 같이 구한다.
전술했듯 빛은 표면의 위에서 내리꽃는게 가장 강도가 강하므로, 표면의 법선벡터와 빛의 벡터가 이루는 각도 $\theta$가 0일 때 가장 빛이 강하며, 빛을 기울일 수록 점점 약해지다 90' 가 넘으면 빛이 들어오지 않게 된다.
0'에서 가장 크고, 90'가 넘으면 0이하로 떨어지는 값을 표현하기 위해 코사인 삼각함수를 사용한 것이며 실제 계산시엔 표면의 법선벡터와 빛의 방향벡터 둘다 정규화(normalize)를 거쳐서 크기를 1로 만든다음 사용하기에 결국 $\cos\theta$ 값이 휘도를 결정하게 된다.
환경광(Ambient Light)
디퓨즈 라이트의 특성은 빛의 벡터와 표면의 법선벡터와의 각도 $\theta$가 90'가 넘으면 아예 빛이 적용되지 않는다. 즉 달의 뒷면과 같은 상태가 되는데, 실제 현실 세계에서의 빛은 한 번만 반사되는 것이 아니라 수천, 수만번 반사되며 빛이 직접적으로 닿지 않는 범위까지 반사되어 얇게 빛을 퍼뜨린다.
디퓨즈 라이트만으로는 이 특성을 구현할 수 없을 뿐더러, 현실 세계의 빛과 같은 글루벌 일루미네이션에 필요한 레이 트레이싱을 구현하기에는 아직 현대의 컴퓨팅 파워가 부족하다(최근 Nvidia의 RTX 시리즈부터 제한적으로 구현되기 시작)
그래서 공간의 모든 부분에 최소한 빛이 반사되어 닿은 부분이 약간이라도 있다는 가정 하에 공간에 최소한의 빛을 적용하는 것이 엠비언트 라이트이다.
정반사광(Specular Light)
정반사광은 난반사광과 다르게 한 방향으로만 반사되어 진행하는 빛이다.
한 방향으로 강하게 반사되기 때문에 빛의 최대값인 1(하얀색)으로 표현되며, 정반사는 특정 시점에서만 볼 수 있으므로 카메라의 시점이 고려대상에 포함된다.
스페큘러가 좁게 적용된 메테리얼일수록 메탈릭한 느낌이 강해지며, 넓게 적용된 메테리얼일수록 비금속적 느낌이 강해진다
'DirectX' 카테고리의 다른 글
| DX11 버텍스 / 픽셀 셰이더 관련 양식 설명 (0) | 2019.08.13 |
|---|---|
| 렌더링 파이프라인 - Input Assembler Stage(입력 조립 단계) (0) | 2019.08.08 |
| 디퓨즈맵핑, 스페큘러매핑, 노말매핑, 환경매핑 (0) | 2019.04.01 |
| 셰이더-1 (0) | 2019.03.22 |
| COM, 텍스쳐, 버퍼링 (0) | 2019.01.17 |