辐射照明 (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 圆形,因为对象表面周围的着色没有差别。

绿色球体的图示

下图显示了放射光如何与前面的示例中其他三种类型的光混合。 在球体右侧,混合了绿色放射光和红色环境光。 在球体左侧,绿色放射光与产生红色渐变效果的红色环境光和漫射光混合。 随着反射光值显著降低、脱离混合起来制造黄色的环境光、漫射光和放射光值,中心为白色的反射高光并形成黄色环形。

带放射光的绿色球体的图示

照明的数学运算