다음을 통해 공유


주변 조명

주변 광원은 장면에 일정한 조명을 제공합니다. 또한 꼭짓점 법선, 조명 방향, 조명 위치 또는 감쇠를 비롯한 다른 조명 요소의 영향을 받지 않기 때문에 모든 개체 꼭짓점을 동일하게 비춥니다. 주변 광원은 모든 방향에서 일정하며 개체의 모든 픽셀에 동일한 색을 지정합니다. 따라서 계산이 빠르지만 개체가 편평해 보이고 사실성이 떨어집니다.

주변 광원은 가장 빠른 조명 유형이지만 결과의 사실성이 가장 떨어집니다. Direct3D에는 조명을 만들지 않고 사용할 수 있는 단일 전역 주변 광원 속성이 있습니다. 또는 주변 광원을 제공하도록 조명 개체를 설정할 수 있습니다.

다음 수식으로 장면의 주변 광원을 설정합니다.

주변 광원 = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]

여기서

매개 변수 Default value 유형 설명
Cₐ (0,0,0,0) D3DCOLORVALUE 재질 주변 색
Gₐ (0,0,0,0) D3DCOLORVALUE 전역 주변 색
Atteni (0,0,0,0) D3DCOLORVALUE i번째 조명의 조명 감쇠. 감쇠 및 스포트라이트 계수를 참조하세요.
Spoti (0,0,0,0) D3DVECTOR i번째 조명의 스포트라이트 계수. 감쇠 및 스포트라이트 계수를 참조하세요.
sum 해당 없음 해당 없음 주변 광원의 합
Lai (0,0,0,0) D3DVECTOR i번째 조명의 조명 주변 색

 

Cₐ의 값은 다음 중 하나입니다.

  • vertex color1(AMBIENTMATERIALSOURCE = D3DMCS_COLOR1이고 꼭짓점 선언에 첫 번째 꼭짓점 색을 제공할 경우)
  • vertex color2(AMBIENTMATERIALSOURCE = D3DMCS_COLOR2이고 꼭짓점 선언에 두 번째 꼭짓점 색을 제공할 경우)
  • 재질 주변 색

참고 AMBIENTMATERIALSOURCE 옵션을 사용하고 꼭짓점 색을 제공하지 않을 경우 재질 주변 색이 사용됩니다.

 

재질 주변 색을 사용하려면 아래 예제 코드처럼 SetMaterial을 사용합니다.

Gₐ는 전역 주변 색입니다. SetRenderState(D3DRS_AMBIENT)를 사용하여 설정됩니다. Direct3D 장면에 1개의 전역 주변 색이 있습니다. 이 매개 변수는 Direct3D 조명 개체와 연결되어 있지 않습니다.

Lai는 장면에 있는 i번째 조명의 주변 색입니다. 각 Direct3D 조명에는 속성 집합이 있으며 집합의 속성 중 하나가 주변 색입니다. sum(Lai)이라는 용어는 장면에 있는 모든 주변 색의 합입니다.

예제

이 예제에서는 장면 주변 광원과 재질 주변 색이 개체에 지정됩니다.

#define GRAY_COLOR  0x00bfbfbf

Ambient.r = 0.75f;
Ambient.g = 0.0f;
Ambient.b = 0.0f;
Ambient.a = 0.0f;

수식에 따라 재질 색과 광원 색을 합친 색이 개체 꼭짓점의 색이 됩니다.

다음 두 그림은 재질 색(회색)과 조명 색(밝은 빨강)을 보여 줍니다.

회색 구 그림빨간색 구 그림

결과 장면은 다음 그림에 나와 있습니다. 장면의 개체만 구입니다. 주변 광원은 모든 개체 꼭짓점을 같은 색으로 비춥니다. 꼭짓점 법선이나 조명 방향의 영향을 받지 않습니다. 따라서 개체 표면 주변에 음영 차이가 없기 때문에 구가 2D 원처럼 보입니다.

주변 조명이 있는 구 그림

개체가 더 사실적으로 보이게 하려면 주변 광원과 함께 확산이나 반사 조명을 적용합니다.

조명의 수학