在 Phong 着色中组合材质系数和纹理



我正在尝试实现一个简单的Phong着色器,该着色器支持非基于物理的材质和纹理。即使材质对每个光源组件都有纹理,我仍然希望相应的材质系数具有一些效果。我想知道如何处理这两个问题。我应该混合、乘法还是相加它们?现在我已经将它们相乘:

ambient  = material.ambient_color  * light.ambient  * texture_ambient;
diffuse  = material.diffuse_color  * light.diffuse  * diffuse_strength  * texture_diffuse;
specular = material.specular_color * light.specular * specular_strength * texture_specular;

看起来有点暗,这是组合材质系数和纹理的正确方法吗?

这取决于。最后由您决定。如果太暗,请尝试其他方法。

您可以直接将效重的材料应用于您的纹理。我想大多数时候都是这样做的。但正如BDL所提到的:这不是基于物理的,所以它真的取决于你,没有对错。

也就是说:如果你想保持它的独立,你可以尝试使用高(er(材料系数。如果它们的范围只有 0.9 到 1,它们不会使物体变暗太多。如果它们的范围从 0 到 1,您可以使用 smoothstep(0.9, 1, material.coefficient) 或类似的东西。

相关内容

  • 没有找到相关文章

最新更新