다음을 통해 공유


감쇠 및 스포트라이트 요소(Direct3D 9)

전역 조명 수식의 확산 및 반사 조명 구성 요소에는 조명 감쇠와 스포트라이트 원뿔을 설명하는 용어가 있습니다. 다음은 이러한 용어에 대한 설명입니다.

감쇠

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

Atten = 1/( att0i + att1i * d + att2i * d²)

위치:

매개 변수 기본값 Type Description 범위
att0i 0.0 FLOAT 정적 감쇠 계수 0 ~ 양의 무한대
att1i 0.0 FLOAT 선형 감쇠 계수 0 ~ 양의 무한대
att2i 0.0 FLOAT 이차 감쇠 계수 0 ~ 양의 무한대
해당 없음 FLOAT 꼭짓점 위치에서 조명 위치까지의 거리 해당 없음

 

  • Atten = 1, 조명이 방향성 광원인 경우
  • Atten = 0, 조명과 꼭짓점 간의 거리가 조명의 범위를 초과할 경우

att0, att1, att2 값은 D3DLIGHT9의 Attenuation0, Attenuation1 및 Attenuation2 멤버에 의해 지정됩니다.

조명과 꼭짓점 위치 간의 거리는 항상 양수입니다.

d = | Ldir |

위치:

매개 변수 기본값 Type 설명
Ldir 해당 없음 D3DVECTOR 꼭짓점 위치에서 조명 위치까지의 방향 벡터

 

d가 광원 범위보다 큰 경우, 즉 D3DLIGHT9 구조체의 Range 멤버인 Direct3D는 더 이상 감쇠 계산을 수행하지 않으며 조명에서 꼭짓점에 영향을 주지 않습니다.

감쇠 상수는 수식에서 계수 역할을 합니다. 감쇠 상수를 간단히 조정하여 다양한 감쇠 곡선을 만들 수 있습니다. Attenuation1을 1.0으로 설정하여 감쇠되지 않지만 범위로 제한되는 조명을 만들거나 여러 값을 사용하여 다양한 감쇠 효과를 낼 수 있습니다.

최대 조명 범위의 감쇠는 0.0이 아닙니다. 조명 범위에 있을 때 조명이 갑자기 나타나지 않도록 애플리케이션에서 조명 범위를 늘릴 수 있습니다. 또는 감쇠 계수가 조명 범위에서 0.0에 가깝도록 애플리케이션에서 감쇠 상수를 설정할 수 있습니다. 감쇠 값에 조명 색의 빨강, 녹색, 파랑 구성 요소를 곱하여 조명이 꼭짓점으로 이동하는 거리의 계수로 조명의 강도를 스케일링합니다.

스포트라이트 계수

다음은 스포트라이트 계수를 지정하는 수식입니다.

스포트라이트 계수의 수식

매개 변수 기본값 Type Description 범위
rhoi 해당 없음 FLOAT 스포트라이트 i에 대한 코사인(각도) 해당 없음
phii 0.0 FLOAT 스포트라이트 i의 반영 각도(라디안 단위) [thetai, pi)
thetai 0.0 FLOAT 스포트라이트 i의 본영 각도(라디안 단위) [0, pi)
falloff 0.0 FLOAT 대칭 계수 (음의 무한대, 양의 무한대)

 

위치:

rho = norm(Ldcs).norm(Ldir)

and:

매개 변수 기본값 Type 설명
Ldcs 해당 없음 D3DVECTOR 카메라 공간에서 조명 방향의 음수
Ldir 해당 없음 D3DVECTOR 꼭짓점 위치에서 조명 위치까지의 방향 벡터

 

광원 감쇠를 계산한 후 Direct3D는 해당하는 경우 스포트라이트 효과, 빛이 표면에서 반사하는 각도 및 현재 재질의 반사를 고려하여 해당 꼭짓점에 대한 확산 및 반사 구성 요소를 계산합니다. 자세한 내용은 SpotLight를 참조하세요.

조명의 수학