X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fplayback3d.C;h=35f4fd0ee1a6bfe269590aee30ad9660f8ae746c;hb=87141f1b454130848c34efdea9cf832d17463830;hp=f733105ff231bb18b1b648c69b860f3fb7895701;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/playback3d.C b/cinelerra-5.1/cinelerra/playback3d.C index f733105f..35f4fd0e 100644 --- a/cinelerra-5.1/cinelerra/playback3d.C +++ b/cinelerra-5.1/cinelerra/playback3d.C @@ -149,9 +149,8 @@ static const char *blend_normal_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" - " vec4 result = canvas * (1.0 - gl_FragColor.a) + gl_FragColor * gl_FragColor.a;\n" + " vec4 result = mix(canvas, gl_FragColor, gl_FragColor.a);\n" " gl_FragColor = mix(canvas, result, alpha);\n" "}\n"; @@ -161,7 +160,6 @@ static const char *blend_add_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = canvas + gl_FragColor;\n" " result = clamp(result, 0.0, 1.0);\n" @@ -174,7 +172,6 @@ static const char *blend_subtract_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = gl_FragColor - canvas;\n" " result = clamp(result, 0.0, 1.0);\n" @@ -187,7 +184,6 @@ static const char *blend_multiply_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = canvas * gl_FragColor;\n" " gl_FragColor = mix(canvas, result, alpha);\n" @@ -199,13 +195,12 @@ static const char *blend_divide_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = gl_FragColor / canvas;\n" - " if(!canvas.r) result.r = 1.0;\n" - " if(!canvas.g) result.g = 1.0;\n" - " if(!canvas.b) result.b = 1.0;\n" - " if(!canvas.a) result.a = 1.0;\n" + " if(canvas.r == 0.) result.r = 1.0;\n" + " if(canvas.g == 0.) result.g = 1.0;\n" + " if(canvas.b == 0.) result.b = 1.0;\n" + " if(canvas.a == 0.) result.a = 1.0;\n" " result = clamp(result, 0.0, 1.0);\n" " gl_FragColor = mix(canvas, result, alpha);\n" "}\n"; @@ -214,7 +209,6 @@ static const char *blend_divide_frag = static const char *blend_replace_frag = "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" "}\n"; // MAX @@ -223,10 +217,8 @@ static const char *blend_max_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = max(canvas, gl_FragColor);\n" - " result = clamp(result, 0.0, 1.0);\n" " gl_FragColor = mix(canvas, result, alpha);\n" "}\n"; @@ -236,10 +228,8 @@ static const char *blend_min_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = min(canvas, gl_FragColor);\n" - " result = clamp(result, 0.0, 1.0);\n" " gl_FragColor = mix(canvas, result, alpha);\n" "}\n"; @@ -249,10 +239,8 @@ static const char *blend_average_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = (canvas + gl_FragColor) * 0.5;\n" - " result = clamp(result, 0.0, 1.0);\n" " gl_FragColor = mix(canvas, result, alpha);\n" "}\n"; @@ -262,7 +250,6 @@ static const char *blend_darken_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = vec4(canvas.rgb * (1.0 - gl_FragColor.a) +" " gl_FragColor.rgb * (1.0 - canvas.a) +" @@ -278,7 +265,6 @@ static const char *blend_lighten_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = vec4(canvas.rgb * (1.0 - gl_FragColor.a) +" " gl_FragColor.rgb * (1.0 - canvas.a) +" @@ -294,7 +280,6 @@ static const char *blend_dst_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" -// " gl_FragColor.a *= alpha;\n" // " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" // " vec4 result = canvas;\n" // " gl_FragColor = mix(result, canvas, alpha);\n" @@ -307,7 +292,6 @@ static const char *blend_dst_atop_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = vec4(canvas.rgb * gl_FragColor.a + " "(1.0 - canvas.a) * gl_FragColor.rgb, gl_FragColor.a);\n" @@ -320,7 +304,6 @@ static const char *blend_dst_in_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = canvas * gl_FragColor.a;\n" " gl_FragColor = mix(canvas, result, alpha);\n" @@ -332,7 +315,6 @@ static const char *blend_dst_out_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = canvas * (1.0 - gl_FragColor.a);\n" " gl_FragColor = mix(canvas, result, alpha);\n" @@ -344,7 +326,6 @@ static const char *blend_dst_over_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = vec4(canvas.rgb + (1.0 - canvas.a) * gl_FragColor.rgb, " " gl_FragColor.a + canvas.a - gl_FragColor.a * canvas.a);\n" @@ -357,7 +338,6 @@ static const char *blend_src_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = gl_FragColor;\n" " gl_FragColor = mix(canvas, result, alpha);\n" @@ -369,7 +349,6 @@ static const char *blend_src_atop_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = vec4(gl_FragColor.rgb * canvas.a + " "canvas.rgb * (1.0 - gl_FragColor.a), canvas.a);\n" @@ -382,7 +361,6 @@ static const char *blend_src_in_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = gl_FragColor * canvas.a;\n" " gl_FragColor = mix(canvas, result, alpha);\n" @@ -394,7 +372,6 @@ static const char *blend_src_out_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = gl_FragColor * (1.0 - canvas.a);\n" " gl_FragColor = mix(canvas, result, alpha);\n" @@ -406,7 +383,6 @@ static const char *blend_src_over_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = vec4(gl_FragColor.rgb + (1.0 - gl_FragColor.a) * canvas.rgb, " "gl_FragColor.a + canvas.a - gl_FragColor.a * canvas.a);\n" @@ -419,10 +395,8 @@ static const char *blend_or_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = canvas + gl_FragColor - canvas * gl_FragColor;\n" - " result = clamp(result, 0.0, 1.0);\n" " gl_FragColor = mix(canvas, result, alpha);\n" "}\n"; @@ -432,7 +406,6 @@ static const char *blend_xor_frag = "uniform vec2 tex2_dimensions;\n" "uniform float alpha;\n" "void main() {\n" - " gl_FragColor.a *= alpha;\n" " vec4 canvas = texture2D(tex2, gl_FragCoord.xy / tex2_dimensions);\n" " vec4 result = vec4(gl_FragColor.rgb * (1.0 - canvas.a) + " "(1.0 - gl_FragColor.a) * canvas.rgb, " @@ -762,7 +735,7 @@ void Playback3D::copy_from_sync(Playback3DCommand *command) // command->frame->get_h(), // BC_RGB888, // -1); -// command->frame->to_ram(); +// command->frame->screen_to_ram(); // // window->clear_box(0, // 0,