xkslang/Test/spv.earlyReturnDiscard.frag

103 строки
1.9 KiB
GLSL

#version 110
uniform float d;
uniform vec4 bigColor, smallColor;
uniform vec4 otherColor;
varying float c;
uniform float threshhold;
uniform float threshhold2;
uniform float threshhold3;
uniform float minimum;
varying vec4 BaseColor;
uniform bool b;
void main()
{
vec4 color = BaseColor;
vec4 color2;
color2 = otherColor;
if (c > d)
color += bigColor;
else
color += smallColor;
if (color.z < minimum)
return;
color.z++;
if (color.z > threshhold)
discard;
color++;
// Two path, different rest
if (color.w > threshhold2) {
if (color.z > threshhold2)
return;
else if (b)
color.z++;
else {
if (color.x < minimum) {
discard;
} else {
color++;
}
}
} else {
if (b)
discard;
else
return;
}
// // Two path, shared rest
// if (color.w > threshhold2) {
// if (color.z > threshhold2)
// return;
// else if (b)
// color++;
// else {
// if (color.x < minimum) {
// discard;
// } else {
// color++;
// }
// }
// } else {
// if (b)
// discard;
// else
// return;
// }
// // One path
// if (color.w > threshhold2) {
// if (color.z > threshhold2)
// return;
// else {
// if (color.x < minimum) {
// discard;
// } else {
// color++;
// }
// }
// } else {
// if (b)
// discard;
// else
// return;
// }
gl_FragColor = color * color2;
}