C++ (Qt)gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);return;float test = tbl[i]; // это все равно считается
float SomeBlend( float r, float r1 ){ if (r1 <= 0.5) r = (r * r1) * 2.0; else r = r + (1.0 - r) * (r1 + r1 - 1.0); return r; }...dst.r = SomeBlend(src.r, dst.r);dst.g = SomeBlend(src.g, dst.g);dst.b = SomeBlend(src.b, dst.b);
vec3 SomeBlend( vec3 r, vec3 r1 ){ vec3 a = 2.0 * r * r1; vec3 b = r + (vec3(1.0) - r) * (2.0 * r1 - vec3(1.0) ); // а можно и вообще b = mix( 2.0 * r1 - vec3(1.0), vec3(1.0), r ); return mix( a, b, step( vec3(0.5), r1 ) );}...dst = SomeBlend(src, dst);
vec3 SomeBlend( vec3 r, vec3 r1 ){ vec3 a = 2.0 * r * r1; vec3 b = r + (vec3(1.0) - r) * (2.0 * r1 - vec3(1.0) ); // а можно и вообще b = mix( 2.0 * r1 - vec3(1.0), vec3(1.0), r ); return mix( a, b, step( vec3(0.5), r1 ) );}