【发布时间】:2020-06-07 20:39:40
【问题描述】:
我试图弄清楚如何处理可能有或没有法线贴图的材质,如果没有,则告诉着色器使用顶点法线。现在的代码如下所示:
// retrieve the normal from the normal map
gNormal = texture(normalMap, uv);
gNormal = normalize(gNormal * 2.0 - 1.0);
gNormal = vec4(normalize(TBN * gNormal.xyz), 1.0);
// TODO: figure out a way to toggle normal mapping
//gNormal = vec4(normalize(normal), 1.0);
最常见的解决方案是程序生成着色器并即时切换,但这本身就是一个复杂的话题。除了传入uniform bool 之外,还有其他选择吗?
【问题讨论】:
标签: opengl glsl shader normals