0

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

我认为我不能使用 DirectX 照明,因为这似乎无法让您获得最终顶点的最终 RGB 以进行导出?

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

4

1 回答 1

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,但我认为使用它可以获得各个顶点的结果颜色。

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

于 2013-01-13T07:03:47.603 回答