我正在尝试实现一个支持非基于物理的材质和纹理的简单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;
看起来有点黑暗,这是组合材质系数和纹理的正确方法吗?
答案 0 :(得分:1)
这取决于。最后,由您来决定。如果它太暗,请尝试别的。
您可以将材质系数应用于纹理。我想这就是它大部分时间都是如何完成的。但正如BDL所说:这不是基于物理的,所以它真的取决于你,没有对错。
说:如果你想把它分开,你可以尝试使用高(呃)材料系数。如果它们的范围从0.9到1,则它们不会使对象变暗太多。如果它们的范围从0到1,您可以使用smoothstep(0.9, 1, material.coefficient)
或类似的东西。