环境/漫反射光照,获得顶点的最终静态漫反射颜色

时间:2013-01-13 06:20:33

标签: game-engine directx-9 lighting

我不确定这是否可行(或者如果我问的是正确的问题)。我有一个顶点/索引,我在DirectX 9.0的场景中渲染。现在,我想添加环境光和漫反射光,然后获得每个顶点的最终计算的漫反射阴影。所以基本上,有一个太阳,然后不同的点光周围。我想这会和Blender的做法类似。然后我想得到每个顶点的最终结果,并将其静态写入文件(没有动态光照)。然后它会进入一个每个顶点使用静态漫反射颜色的游戏。因此,它不依赖于相机,照明,仅取决于静止点/太阳。

我认为我不能使用DirectX照明,因为这似乎不能让你获得最终顶点的最终RGB用于导出?

有没有人有算法?或者以某种方式在DirectX中添加灯光然后获得最终结果?

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解这个问题,但是我理解它的方式,你说你想要将点光源的灯光“烘焙”成顶点颜色?

如果是这种情况,那么您可以使用默认directX着色器用于计算最终顶点颜色的相同数学运算。我认为输出颜色通常计算为:

// saturate just clamps the resulting color values between 0 and 1.

out_ambient = saturate(vtx_ambient * ambient_light)
out_diffuse = saturate(vtx_diffuse * light_diffuse * -dot(vtx_normal, light_direction))

out_color = saturate(out_ambient + out_diffuse)

因为你正在使用点光源,你必须从顶点和光线位置计算light_direction,但我认为使用它会得到各个顶点的结果颜色。

我自己并没有广泛使用着色器,所以我可能错误地计算了结果 - 是否有人能够验证这是否正确?