다음을 통해 공유


감쇠 및 스포트라이트 비율(Direct3D 9)

글로벌 조명 수식의 확산 및 반사 조명 구성 요소에는 조명 감쇠 및 스포트라이트 원뿔을 설명하는 용어가 포함되어 있습니다. 이러한 용어는 아래에 설명되어 있습니다.

감쇠

빛의 감쇠는 빛의 유형과 빛과 꼭짓점 위치 사이의 거리에 따라 달라집니다. 감쇠를 계산하려면 다음 수식 중 하나를 사용합니다.

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참조하세요.

조명 수학