1. Lighting System
1.1 Lighting
- 조명과 음영은 물체의 입체감과 부피감을 묘사하는 데 큰 도움
- 시각적 인식은 빛과 물체 재질의 상호작용에 의존
- 실사적인 장면을 생성하는 문제의 상당 부분은 물리적으로 정확한 조명 모형과 관련
- 정확한 조명 모형일수록 계산 비용이 높음, 사실감과 속도의 균형을 맞추는 것이 중요
- 영화의 프레임들이 실시간으로 생성되는 것이 아닌 미리 렌더링해 두는 것
- 게임은 실시간 응용 프로그램이므로 프레임들이 적어도 초당 30프레임의 속도로 렌더링할 필요가 있음
1.1.1 Material & Intensity
- 정점 색상을 직접 지정X, 표면의 재질 특성과 광원의 특성을 설정하고 조명 방정식을 적용하여 정점 색상이 결정
- 조명 방정식은 빛과 재질의 상호작용에 기초해서 정점 색상을 계산하는 역할
- 재질은 빛이 물체의 표면과 상호작용하는 방식을 결정하는 속성들의 집합
- 표면이 반사 흡수하는 빛의 색상들, 표면의 반사율, 투명도, 광택도는 모두 표면의 재질을 구성하는 매개변수
- 조명 모형에서 하나의 광원은 빨간색과 녹색, 파란색의 빛을 여러 가지 세기로 방출
- 다양한 빛의 색을 흉내 & 광원에서 나온 빛이 물체와 충돌하면 물체의 표면이 그 빛의 일부를 흡수, 일부는 반사
1.1.2 Normal Vector
- 면 법선은 한 다각형이 향하고 있는 방향을 나타내는 단위 벡터, 다각형의 모든 점에 수직인 단위 벡터
- 표면 법선은 표면의 한 점의 접평면에 수직인 단위 벡터, 표면의 한 점이 바라보는 방향을 결정함을 기억
- 조명 계산을 위해서는 삼각형 메시 표면의 모든 점에서 표면 법선이 필요
- 광원이 메시 표면의 점으로 입사한 각도를 구할 수 있으므로 삼각형의 정점들, 세 꼭짓점에서만 지정
- 래스터화 과정에서 세 정점 법선의 보간을 통해 표면 점의 법선이 결정
- 삼각형의 두 변의 벡터를 알고 있을 경우 외적을 통해 법선 벡터를 구할 수 있음
1.2 Lighting System
1.2.1 Diffuse Light
- 거친 표면이 있다면 한 점을 빛이 때리면 광선들이 다양한 무작위 방향들로 흩어짐
- 반사된 빛은 시점과 무관하게 눈에 도달, 표면의 한 점의 색상은 그 점을 어디에서 보든 같음
- 이에 따라 분산광을 계산할 때 시점을 고려할 필요X & 분산광 조명 계산은 시점에 독립적
- 분산광의 색과 표면의 분산광 재질 색상에 관여
- 분산광 재질 색상은 표면이 입사 분산광을 얼마나 반사하고 흡수하는 지를 뜻함
- 분산광의 색과 분산광 재질 색상을 성분별로 곱하면 반사된 분산광의 색상이 나옴
- 입사 분산광이 (0.8, 0.8, 0.8)이고 분산광 재질 색상이 (0.5, 1.0, 0.75)인 경우, 두 값을 곱해 색상을 정함
- 반사광의 세기를 람베르트의 코사인 법칙에 의해 빛 벡터와 표면 법선의 각도에 따라 반산광의 세기를 조율
- 위 두가지 계산을 통해 반사광을 구할 수 있음
1.2.2 Ambient Light
- 조명 모형은 장면의 다른 물체에 반사된 간접광을 고려하지 않지만 한쪽 면만 비춘다고 해서 반대쪽이 검지는 않음
- 벽이나 방의 다른 물체에 반사된 빛이 주전자의 반대쪽을 비추기 때문
- 간접광의 효과를 어느 정도 흉내 내기 위해 조명 공식을 사용하여 주변광 향을 사용
- 광원에서 간접적으로 표면에 도달한 빛의 양과 표면이 주변광을 얼마나 흡수하고 반사하는 지 결정하는 값을 사용
- 모든 주변광은 물체를 균일하게 비추므로 실질적인 물리 계산이 전혀 관여하지 않음
1.2.3 Specular Light
- 매끄러문 표면인 경우, 표면을 때린 광선들 중 시점을 향한 광선들은 특히나 눈에 뚜렷하게 인식
- 특정 방향으로 반사되는 빛
- 시점에 따라 인식하지 않을 수 있고, 시점이 이동함에 따라 반영광의 양도 변함 (시점에 의존적임)
- 반영광의 세기는 밑의 그림처럼 세타가 0인경우 최대이고 사람의 눈에서 부터 멀어질 경우 점차 0으로 감소
- 계산식은 밑의 그림을 통해 설명
- 사람의 눈의 벡터와 계산을하여 구한 벡터를 사용하여 세타를 구할 수 있음
'C++ Algorithm & Study > Game Math & DirectX 11' 카테고리의 다른 글
[Direct11] 15. EX App Program - Light System (0) | 2023.06.15 |
---|---|
[Direct11] 14. Lighting System - Directional & Point & Spot Light (0) | 2023.06.15 |
[Direct11] 12. EX App Program - Hills (1) | 2023.06.14 |
[Direct11] 11. EX App Program - Color Box (0) | 2023.06.14 |
[Direct11] 10. Direct3D Effect Framework (0) | 2023.06.14 |