如何在OpenGL中设置金属材料(如银)?有谁知道?
如果您希望您的材料有时看起来像金属一样"有点",则需要设置相应的漫反射,环境光谱,镜面反射和"光泽"参数.您可以研究像blender这样的3d编辑器的现有材料库,并了解它们是如何做到的.这很便宜,但看起来也很便宜.通常具有低GL_SHININESS值(3..12,我认为?)的材料看起来像金属表面"有点".
如果您希望您的材质看起来更像金属,但在某些光照条件下,您需要编写像素着色器,它将使用逼真的银色纹理,以及控制镜面反射颜色和强度的附加纹理贴图.只要仔细选择照明条件,良好的纹理就可以让您摆脱可怕且简单的着色器.这需要具有GLSL知识的程序员和一个优秀的艺术家来制作纹理,而艺术家将更加重要 - 即使像每像素phong这样的非金属着色器也可以手工微调,看起来像你想要的(进动可能很无聊)和乏味的.着色器本身仅需要具有镜面(任何镜面反射),正常映射支持和环境反射映射(具有菲涅耳术语支持)的每像素照明.使用HDR进行弱反射抛光表面也会有所帮助.
如果你想要真实和完美的白银,那么你就麻烦了,应该重新考虑.金属表面具有"模糊"反射,根据您的硬件,可能很难快速实施.另一个问题是,您必须对金属本身进行相当多的研究,检查那里存在的每个金属表面演示,阅读GDC论文等.即做研究,这可能需要花费大量时间/精力而不会最后得到回报,因为最终结果很可能会有糟糕的表现.重要的是你不需要模拟真实的材料来使它看起来正确 - 你需要欺骗观众认为这是银色的.