X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fplayback3d.C;h=3b9cd6901edb6cf3461a808713693c2a95c66faf;hb=318256a48938064b695268d03396977739ef4724;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..3b9cd690 100644 --- a/cinelerra-5.1/cinelerra/playback3d.C +++ b/cinelerra-5.1/cinelerra/playback3d.C @@ -53,6 +53,7 @@ // Can't hard code sampler2D +#ifdef HAVE_GL static const char *yuv_to_rgb_frag = "uniform sampler2D tex;\n" "void main()\n" @@ -149,9 +150,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 +161,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 +173,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 +185,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 +196,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 +210,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 +218,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 +229,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 +240,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 +251,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 +266,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 +281,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 +293,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 +305,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 +316,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 +327,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 +339,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 +350,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 +362,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 +373,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 +384,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 +396,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 +407,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, " @@ -504,11 +478,7 @@ static const char *fade_yuv_frag = " gl_FragColor.gb += vec2(0.5, 0.5);\n" "}\n"; - - - - - +#endif Playback3DCommand::Playback3DCommand() @@ -762,7 +732,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,