글로벌 조명 수식의 확산 및 반사 조명 구성 요소에는 조명 감쇠 및 스포트라이트 원뿔을 설명하는 용어가 포함되어 있습니다. 이러한 용어는 아래에 설명되어 있습니다.
감쇠
빛의 감쇠는 빛의 유형과 빛과 꼭짓점 위치 사이의 거리에 따라 달라집니다. 감쇠를 계산하려면 다음 수식 중 하나를 사용합니다.
Atten = 1/( att0i + att1i * d + att2i * d²)
어디:
| 매개 변수 | 기본값 | 형 | 묘사 | 레인지 |
|---|---|---|---|---|
| att0 | 0.0 | 뜨다 | 상수 감쇠 계수 | 0에서 +무한대까지 |
| att1 | 0.0 | 뜨다 | 선형 감쇠 계수 | 0에서 +무한대까지 |
| att2 | 0.0 | 뜨다 | 이차 감쇠 계수 | 0에서 +무한대까지 |
| d | 해당(N/A) | 뜨다 | 꼭짓점 위치에서 밝은 위치까지의 거리 | 해당(N/A) |
- 빛이 방향광이면 Atten = 1입니다.
- 광원과 꼭짓점 사이의 거리가 광원 범위를 초과하는 경우 Atten = 0입니다.
att0, att1, att2 값은 D3DLIGHT9Attenuation0, Attenuation1 및 Attenuation2 멤버에 의해 지정됩니다.
조명과 꼭짓점 위치 사이의 거리는 항상 양수입니다.
d = | L디르 |
어디:
| 매개 변수 | 기본값 | 형 | 묘사 |
|---|---|---|---|
| L디르 | 해당(N/A) | D3DVECTOR | 꼭짓점 위치에서 밝은 위치로의 방향 벡터 |
d가 광원 범위보다 크면, 즉 D3DLIGHT9 구조의 Range 멤버인 Direct3D는 더 이상 감쇠 계산을 수행하지 않으며 조명에서 꼭짓점에 영향을 주지 않습니다.
감쇠 상수는 수식의 계수 역할을 하며 간단한 조정을 통해 다양한 감쇠 곡선을 생성할 수 있습니다. Attenuation1을 1.0으로 설정하여 감쇠하지 않지만 범위별로 제한되는 조명을 만들거나 다양한 감쇠 효과를 얻기 위해 다른 값을 실험할 수 있습니다.
조명의 최대 범위에서 감쇠는 0.0이 아닙니다. 조명 범위에서 조명이 갑자기 나타나지 않도록 하기 위해 애플리케이션은 조명 범위를 늘릴 수 있습니다. 또는 감쇠 계수가 광원 범위에서 0.0에 가까우도록 애플리케이션에서 감쇠 상수도 설정할 수 있습니다. 감쇠 값은 광원 색의 빨간색, 녹색 및 파란색 구성 요소를 곱하여 조명이 꼭짓점에 이동하는 거리 요소로 빛의 강도를 조정합니다.
스포트라이트 계수
다음 수식은 스포트라이트 요소를 지정합니다.
스포트라이트 계수수식
| 매개 변수 | 기본값 | 형 | 묘사 | 레인지 |
|---|---|---|---|---|
| 로나는 | 해당(N/A) | 뜨다 | 스포트라이트 i의 코사인(각도) | 해당(N/A) |
| phii | 0.0 | 뜨다 | 라디안으로 스포트 라이트 i의 음수 각도 | [thetai, pi) |
| 세타 | 0.0 | 뜨다 | 라디안으로 스포트라이트 i의 움브라 각도 | [0, pi) |
| 감쇠 | 0.0 | 뜨다 | 폴오프 계수 | (-infinity, +infinity) |
어디:
rho = norm(Ldcs).norm(Ldir)
그리고:
| 매개 변수 | 기본값 | 형 | 묘사 |
|---|---|---|---|
| Ldcs | 해당(N/A) | D3DVECTOR | 카메라 공간에서 조명 방향의 음수 |
| L디르 | 해당(N/A) | D3DVECTOR | 꼭짓점 위치에서 밝은 위치로의 방향 벡터 |
광원 감쇠를 계산한 후 Direct3D는 해당하는 경우 스포트라이트 효과, 빛이 표면에서 반사하는 각도 및 현재 재료의 반사를 고려하여 해당 꼭짓점에 대한 확산 및 반사 구성 요소를 계산합니다. 자세한 내용은 SpotLight참조하세요.
관련 항목