주변 조명(Direct3D 9)
주변 조명은 장면에 일정한 조명을 제공합니다. 꼭짓점 법선, 조명 방향, 조명 위치, 범위 또는 감쇠와 같은 다른 조명 요소에 종속되지 않으므로 모든 개체 꼭짓점이 동일하게 표시됩니다. 가장 빠른 유형의 조명이지만 가장 비현실적인 결과를 생성합니다. Direct3D에는 조명을 만들지 않고 사용할 수 있는 단일 전역 앰비언트 광원 속성이 포함되어 있습니다. 또는 조명 개체를 설정하여 주변 조명을 제공할 수 있습니다. 장면의 주변 조명은 다음 수식에 설명되어 있습니다.
주변 조명 = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]
어디:
매개 변수 | 기본값 | 유형 | 묘사 |
---|---|---|---|
Cₐ | (0,0,0,0) | D3DCOLORVALUE | 재질 주변 색 |
Gₐ | (0,0,0,0) | D3DCOLORVALUE (디지털 색상 값) | 전역 환경 색 |
(0,0,0,0) | D3DCOLORVALUE | 이테 빛의 빛 감쇠. 감쇠 및 스포트라이트 요소(Direct3D 9)를 참조하십시오. | |
스폿 | (0,0,0,0) | D3DVECTOR | i번째 조명의 스포트라이트 계수입니다. 감쇠 및 스포트라이트 요소(Direct3D 9)을 참조하세요. |
합계 | 해당 없음 | 해당 없음 | 주변 조명의 합계 |
Lai | (0,0,0,0) | D3DVECTOR | Ith Light의 밝은 주변 색 |
C 값은 다음 중 하나입니다.
- 꼭짓점 색상1, (AMBIENTMATERIALSOURCE = D3DMCS_COLOR1이며, 첫 번째 꼭짓점 색상이 꼭짓점 선언에 제공된 경우)
- 꼭짓점 color2( AMBIENTMATERIALSOURCE = D3DMCS_COLOR2이고 두 번째 꼭짓점 색이 꼭짓점 선언에 제공된 경우)
- 재질 주변광 색상.
메모
AMBIENTMATERIALSOURCE 옵션을 사용하고 꼭짓점 색이 제공되지 않으면 재질 주변 색이 사용됩니다.
재질 앰비언트 색을 사용하려면 아래 예제 코드와 같이 SetMaterial을 사용합니다.
G는 전역 앰비언트 색입니다. SetRenderState(D3DRS_AMBIENT)를 사용하여 설정됩니다. Direct3D 장면에는 하나의 전역 앰비언트 색이 있습니다. 이 매개 변수는 Direct3D 라이트 개체와 연결되지 않습니다.
Lai는 장면에서 i번째 조명의 주변 색상입니다. 각 Direct3D 조명에는 속성 집합이 있으며, 그 중 하나는 앰비언트 색입니다. sum(Lai)이라는 용어는 장면의 모든 주변 색의 합계입니다.
예
이 예제에서 개체는 장면 주변 광원 및 재질 주변 색을 사용하여 색이 지정됩니다.
#define GRAY_COLOR 0x00bfbfbf
// create material
D3DMATERIAL9 mtrl;
ZeroMemory(&mtrl, sizeof(mtrl));
mtrl.Ambient.r = 0.75f;
mtrl.Ambient.g = 0.0f;
mtrl.Ambient.b = 0.0f;
mtrl.Ambient.a = 0.0f;
m_pd3dDevice->SetMaterial(&mtrl);
m_pd3dDevice->SetRenderState(D3DRS_AMBIENT, GRAY_COLOR);
수식에 따르면 개체 꼭짓점의 결과 색은 재질 색과 밝은 색의 조합입니다.
다음 두 그림에서는 회색인 재질 색과 밝은 빨간색의 광원을 보여 줍니다.
회색 구의
결과 장면은 다음 그림에 나와 있습니다. 장면에서 유일한 개체는 구입니다. 앰비언트 광원은 모든 개체 꼭짓점에 동일한 색을 표시합니다. 꼭짓점 법선 또는 조명 방향에 종속되지 않습니다. 결과적으로 개체 표면 주위에 음영의 차이가 없어서 구가 마치 2D 원처럼 보입니다.
주변 조명그림
개체를 보다 사실적으로 보이게 하려면 주변 조명 외에도 확산 또는 반사 조명을 적용합니다.
관련 항목