Light 속성(Direct3D 9)
광원 속성은 광원의 유형 및 색을 설명합니다. 사용 중인 빛의 유형에 따라 조명은 감쇠 및 범위 또는 스포트라이트 효과에 대한 속성을 가질 수 있습니다. 그러나 모든 유형의 조명이 모든 속성을 사용하는 것은 아닙니다. Direct3D는 D3DLIGHT9 구조를 사용하여 모든 유형의 광원에 대한 조명 속성에 대한 정보를 전달합니다. 이 섹션에는 모든 광원 속성에 대한 정보가 포함되어 있습니다. 정보는 다음 그룹으로 나뉩니다.
위치, 범위 및 감쇠 속성은 세계 공간에서 조명의 위치와 내보내는 빛이 멀리서 동작하는 방식을 정의합니다. C++에서 사용하는 모든 광원 속성과 마찬가지로 조명의 D3DLIGHT9 구조에 포함됩니다.
조명 감쇠
감쇠는 범위 속성에 지정된 최대 거리를 향해 조명의 강도가 감소하는 방법을 제어합니다. 세 개의 D3DLIGHT9 구조체 멤버는 감쇠 0, 감쇠1 및 감쇠2라는 가벼운 감쇠를 나타냅니다. 이러한 멤버는 빛의 감쇠를 제어하는 0.0에서 무한대까지의 부동 소수점 값을 포함합니다. 일부 애플리케이션은 Attenuation1 멤버를 1.0으로 설정하고 다른 애플리케이션은 0.0으로 설정하여 광원에서 꼭짓점까지의 거리인 1/D로 변경되는 광강도를 생성합니다. 최대 광 강도는 광원에 있으며, 광원 범위에서 1/(광원 범위)로 감소합니다. 일반적으로 애플리케이션은 Attenuation0을 0.0으로, Attenuation1을 상수 값으로, Attenuation2를 0.0으로 설정합니다.
감쇠 값을 결합하여 더 복잡한 감쇠 효과를 얻을 수 있습니다. 또는 일반 범위를 벗어난 값으로 설정하여 낯선 감쇠 효과도 만들 수 있습니다. 그러나 음수 감쇠 값은 허용되지 않습니다. 감쇠 및 스포트라이트 요소(Direct3D 9)참조하세요.
밝은 색
Direct3D의 조명은 확산 색, 주변 색, 반사 색 등 시스템의 조명 계산에서 독립적으로 사용되는 세 가지 색을 내보낸다. 각각은 Direct3D 조명 모듈에 의해 통합되어 현재 재질의 대응과 상호 작용하여 렌더링에 사용되는 최종 색을 생성합니다. 확산 색은 현재 재질의 확산 반사 속성, 재질의 반사 반사 속성과 반사 색 등과 상호 작용합니다. Direct3D에서 이러한 색을 적용하는 방법에 대한 자세한 내용은 조명 수학(Direct3D 9)참조하세요.
C++ 애플리케이션에서 D3DLIGHT9 구조체에는 확산, 앰비언트 및 반사 색의 세 멤버가 포함되며, 각 멤버는 내보내는 색을 정의하는 D3DCOLORVALUE 구조체입니다.
시스템의 계산에 가장 많이 적용되는 색 유형은 확산 색입니다. 가장 일반적인 확산 색은 흰색(R:1.0 G:1.0 B:1.0)이지만 원하는 효과를 얻기 위해 필요에 따라 색을 만들 수 있습니다. 예를 들어 벽난로에 빨간색 표시등을 사용하거나 "Go"로 설정된 교통 신호에 녹색 표시등을 사용할 수 있습니다.
일반적으로 밝은 색 구성 요소를 0.0에서 1.0 사이의 값(포함)으로 설정하지만 이는 요구 사항이 아닙니다. 예를 들어 모든 구성 요소를 2.0으로 설정하여 "흰색보다 밝은" 조명을 만들 수 있습니다. 이 유형의 설정은 상수 이외의 감쇠 설정을 사용할 때 특히 유용할 수 있습니다.
Direct3D는 조명에 RGBA 값을 사용하지만 알파 색 구성 요소는 사용되지 않습니다.
일반적으로 재질 색은 조명에 사용됩니다. 그러나 확산 또는 반사 꼭짓점 색으로 재질 색-발광, 앰비언트, 확산 및 반사를 재정의하도록 지정할 수 있습니다. 이 작업은 SetRenderState 호출하고 다음 표에 나열된 디바이스 상태 변수를 설정하여 수행됩니다.
디바이스 상태 변수 | 의미 | 형 | 기본값 |
---|---|---|---|
D3DRS_AMBIENTMATERIALSOURCE | 앰비언트 재질 색을 가져올 위치를 정의합니다. | D3DMATERIALCOLORSOURCE | D3DMCS_MATERIAL |
D3DRS_DIFFUSEMATERIALSOURCE | 확산 재질 색을 가져올 위치를 정의합니다. | D3DMATERIALCOLORSOURCE | D3DMCS_COLOR1 |
D3DRS_SPECULARMATERIALSOURCE | 반사 재질 색을 가져올 위치를 정의합니다. | D3DMATERIALCOLORSOURCE | D3DMCS_COLOR2 |
D3DRS_EMISSIVEMATERIALSOURCE | 방출 재질 색을 가져올 위치를 정의합니다. | D3DMATERIALCOLORSOURCE | D3DMCS_MATERIAL |
D3DRS_COLORVERTEX | 꼭짓점 색을 사용하거나 사용하지 않도록 설정합니다. | BOOL | 참 |
알파/투명도 값은 항상 확산 색의 알파 채널에서만 제공됩니다.
안개 값은 항상 반사 색의 알파 채널에서만 제공됩니다.
D3DMATERIALCOLORSOURCE 다음 값을 가질 수 있습니다.
- D3DMCS_MATERIAL - 재료 색이 원본으로 사용됩니다.
- D3DMCS_COLOR1 - 확산 꼭짓점 색이 원본으로 사용됩니다.
- D3DMCS_COLOR2 - 반사 꼭짓점 색이 원본으로 사용됩니다.
밝은 방향
조명의 방향 속성은 개체에서 내보낸 빛이 세계 공간에서 이동하는 방향을 결정합니다. 방향은 방향 조명 및 스포트라이트에서만 사용되며 벡터로 설명됩니다.
조명의 D3DLIGHT9 구조체의 방향 멤버에서 조명 방향을 설정합니다. 방향 멤버는 D3DVECTOR형식입니다. 방향 벡터는 장면의 조명 위치에 관계없이 논리 원점으로부터의 거리로 설명됩니다. 따라서 양수 z축을 따라 장면으로 바로 가리키는 스포트라이트에는 위치가 정의된 위치에 관계없이 <0,0,1> 방향 벡터가 있습니다. 마찬가지로 방향이 0,-1,0><방향 광원을 사용하여 장면에서 직접 빛나는 햇빛을 시뮬레이션할 수 있습니다. 물론 좌표 축을 따라 빛나는 조명을 만들 필요가 없습니다. 값을 혼합하고 일치하여 더 흥미로운 각도에서 빛나는 조명을 만들 수 있습니다.
메모
조명의 방향 벡터를 정규화할 필요는 없지만 항상 크기가 있는지 확인합니다. 즉, <0,0,00> 방향 벡터를 사용하지 마세요.
밝은 위치
밝은 위치는 D3DLIGHT9 구조체의 Position 멤버에서 D3DVECTOR 구조를 사용하여 설명합니다. x, y 및 z 좌표는 세계 공간에 있는 것으로 간주됩니다. 방향 표시등은 위치 속성을 사용하지 않는 유일한 유형의 조명입니다.
광원 범위
조명의 범위 속성은 장면의 메시가 더 이상 해당 개체에서 내보낸 빛을 받지 않는 세계 공간의 거리를 결정합니다. Range 멤버는 세계 공간에서 조명의 최대 범위를 나타내는 부동 소수점 값을 포함합니다. 방향 표시등은 범위 속성을 사용하지 않습니다.
관련 항목