辐射照明 (Direct3D 9)
放射照明是用单个术语来描述的。
放射照明 = Cₑ
其中:
参数 | 默认值 | 类型 | 说明 |
---|---|---|---|
Cₑ | (0,0,0,0) | D3DCOLORVALUE | 放射颜色。 |
Cₑ 的值为:
- 如果 EMISSIVEMATERIALSOURCE = D3DMCS_COLOR1,并且顶点声明中提供第一个顶点颜色,则为 vertex color1。
- 顶点颜色 2,如果 EMISSIVEMATERIALSOURCE = D3DMCS_COLOR2,并在顶点声明中提供第二个顶点颜色。
- 材料放射颜色
注意
如果使用任一 EMISSIVEMATERIALSOURCE 选项,并且未提供顶点颜色,则使用材料放射颜色。
示例
在此示例中,使用场景环境光和材料环境光为对象着色。 代码如下所示。
// create material
D3DMATERIAL9 mtrl;
ZeroMemory( &mtrl, sizeof(mtrl) );
mtrl.Emissive.r = 0.0f;
mtrl.Emissive.g = 0.75f;
mtrl.Emissive.b = 0.0f;
mtrl.Emissive.a = 0.0f;
m_pd3dDevice->SetMaterial( &mtrl );
m_pd3dDevice->SetRenderState(D3DRS_EMISSIVEMATERIALSOURCE, D3DMCS_MATERIAL);
根据公式,生成的对象顶点颜色是材料颜色。
下图显示了材料颜色(绿色)。 放射光使用相同的颜色点亮所有对象顶点。 它不取决于顶点法线或光线方向。 因此,球体看起来像 2D 圆形,因为对象表面周围的着色没有差别。
下图显示了放射光如何与前面的示例中其他三种类型的光混合。 在球体右侧,混合了绿色放射光和红色环境光。 在球体左侧,绿色放射光与产生红色渐变效果的红色环境光和漫射光混合。 随着反射光值显著降低、脱离混合起来制造黄色的环境光、漫射光和放射光值,中心为白色的反射高光并形成黄色环形。
相关主题
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈