I have several object to render. Some of them have textures and some of them are transparent.

To achieve transparency, I implemented the depth peeling tecnique.

I was wondering if I could use just a single shader (for each step, init/peel/blen/final) that handles objects with texture and objects without.

My idea was something like that (init):

Code :
#version 330
 
out vec4 outputColor;
 
in vec2 oUV;
 
uniform sampler2D texture0;
uniform int enableTexture;
 
uniform float alpha;
 
vec4 ShadeFragment() {
    vec4 color;
    color.rgb = vec3(.4,.85,.0);
    color.a = alpha;
    return color;
}
 
void main(void)
{
    vec4 color = ShadeFragment();
 
    color = (1 - enableTexture) * color + enableTexture * texture(texture0, oUV);
 
    outputColor = vec4(color.rgb * color.a, 1.0 - color.a);
}

If enableTexture is 1 I grab the result from the texture, if it is 0 I dont evaluate it at all. I wrote that in order to avoid branching.

Is it worth/has sense an approach like this?