【D3D补遗】七 光照和材质 (1)

Posted on 2008-12-11 22:05  活着就是幸福  阅读(376)  评论(0)    收藏  举报
1.光和材质
D3D计算物体顶点光照基于
    1. 现有材质和关联的纹理纹素
    2. 顶点指定的漫反射光和高光颜色
    3. 光源颜色和强度,以及环境光
材质决定光如何从表面反射。没有光会产生一个剪影。

2.直射光和环境光
折射光有方向和颜色。
环境光没有位置和方向,只有颜色和强度。每盏灯都会增加环境光。
环境光使用IDirect3DDevice9::SetRenderState(D3DRS_AMBIENT,color)设置。光的alpha被忽略。

3. D3D光和自然光
环境光对高光没有贡献。
直射光和表面交互产生高光,其方向是着色算法的重要特性。反射光对环境光没有贡献。
材质的不同分量决定如何独立反射环境光、漫反射光和高光。

4。光和材质的颜色值
光没有Alpha值。
材质的颜色值表示表面如何反射光的分量。R(1.0), G(1.0), B(1.0), A(1.0)反射所有光。R(0.0), G(1.0), B(0.0), A(1.0)反射所有绿光。
(材质的“颜色”不是真正的颜色,表示反射率。)

5. 光源类型:
    1. 点光源:
        没有方向,有位置,衰减程度和范围。D3D使用位置到顶点
        的向量(方向和长度)和顶点法线计算光照。
    2. 方向光:
        只有方向和颜色,没有位置和衰减,范围。
    2. 聚光灯:
        方向,位置,衰减,内核,外核,

6. 光属性
Attenuation:衰减幅度。
颜色        :漫反射光、高光、环境光。Alpha值不使用。材质的颜色可以被别的状态覆盖。Alpha值总是来自材质。雾颜色值总是来自高光颜色的Alpha通道。D3DMATERIALCOLORSOURCE。
颜色方向  :光的方向在世界空间的向量。光的方向可以表示为从原点发射的向量。不要使用<0,0,0>方向的光。
位置        :世界空间中的点位置。
范围        :世界空间中的距离。方向光没有范围属性。