我不确定这是否可行(或者如果我问的是正确的问题)。我有一个顶点/索引,我在DirectX 9.0的场景中渲染。现在,我想添加环境光和漫反射光,然后获得每个顶点的最终计算的漫反射阴影。所以基本上,有一个太阳,然后不同的点光周围。我想这会和Blender的做法类似。然后我想得到每个顶点的最终结果,并将其静态写入文件(没有动态光照)。然后它会进入一个每个顶点使用静态漫反射颜色的游戏。因此,它不依赖于相机,照明,仅取决于静止点/太阳。
我认为我不能使用DirectX照明,因为这似乎不能让你获得最终顶点的最终RGB用于导出?
有没有人有算法?或者以某种方式在DirectX中添加灯光然后获得最终结果?
答案 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,但我认为使用它会得到各个顶点的结果颜色。
我自己并没有广泛使用着色器,所以我可能错误地计算了结果 - 是否有人能够验证这是否正确?