GLSL中的可选法线映射

问题描述 投票:0回答:1

我试图弄清楚如何处理可能具有或不具有法线贴图的材质,以及是否不告诉着色器使用顶点法线。现在的代码如下所示:

// 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
1个回答
0
投票

另一个选择是始终使用法线贴图。最简单的法线贴图是具有1个法向矢量的1x1纹理-例如(0,0,1)。

© www.soinside.com 2019 - 2024. All rights reserved.