거친 표면의 한 점에 조명을 비추면 광선들이 다양한 무작위 방향들로 흩어질 것이다. 이를 분산 반사(diffuse reflection)라고 부른다.
분산광의 계산은 두 부분으로 나뉜다.
- 분산광의 색과 표면의 분산광 재질 색상을 조정한다.
- 반사광의 세기를 람베르트의 코사인 법칙에 의거해서 조정한다.
첫 번째는 분산광 재질 색상을 표면이 입사 분산광을 얼마나 반사하고 흡수하는지를 의미한다. 예를 들어 표면의 한 점이 분산광의 반사율이 적색광은 50%, 녹색광은 100%, 청색광을 75%이고 분산광의 세기가 80%인 백색광 즉, 적녹청 모두 80%인 빛이 들어온다고 가정했을때, 입사 분산광 ld = (0.8, 0.8, 0.8)이고, 분산광 재질 색상은 md = (0.5, 1.0, 0.75)가 된다. 이때 반사된 분산광은 다음과 같다.
두 번째는 빛 벡터와 표면 법선의 각도에 따라 반사광의 세기를 조율하는 것을 의미한다. ld가 분산광 색상이고 md가 분사광 재질 색상, L이 빛 벡터이고 n이 표면 법선벡터라고 할 때, kd = max(L · n, 0)이라고 하자. 이때 반사된 분산광은 다음과 같다.
728x90
'서적 정리 > DirectX11을 이용한 3D 게임 프로그래밍 입문' 카테고리의 다른 글
64.재질의 설정 (0) | 2022.03.03 |
---|---|
63.조명 중간 정리 (0) | 2022.03.03 |
62.반영광 조명 (0) | 2022.03.03 |
61.주변광 조명 (0) | 2022.03.02 |
59.람베르트의 코사인 법칙(Lambert's cosine law) (0) | 2022.03.02 |
58.법선 벡터(Normal Vector) (0) | 2022.03.01 |
57.빛과 재질의 상호작용 (0) | 2022.03.01 |
56.Direct3D의 그리기 연산 요약 (0) | 2022.02.21 |
댓글