我有一个相当基本的片段着色器,它可以从纹理中采样,并根据采样改变指定的固定颜色。如果我从纹理中采样,我会做一个alpha检查,并丢弃低alpha值。有没有办法让这个过程无分支?
#version 460 core
layout (location = 0) out vec4 FragColor;
uniform vec4 color;
uniform sampler2D tex;
uniform bool useTex;
in vec2 texCoords;
void main() {
vec4 tex = texture(tex, texCoords);
if(useTex && tex.a < 0.1) { discard; }
vec4 outColor = mix(color, color * tex, int(useTex));
FragColor = outColor;
}
字符串
1条答案
按热度按时间628mspwn1#
我建议总是绑定一个纹理,至少是一个颜色为(1,1,1,1)的1x1纹理。使用这种方法,你可以完全省略
useTex
,着色器也简单得多:字符串
如果可以使用Blending而不是
discard
,着色器可以进一步简化:型