diff --git a/manimlib/shaders/quadratic_bezier_fill/frag.glsl b/manimlib/shaders/quadratic_bezier_fill/frag.glsl index 313873a6..2235a3cb 100644 --- a/manimlib/shaders/quadratic_bezier_fill/frag.glsl +++ b/manimlib/shaders/quadratic_bezier_fill/frag.glsl @@ -38,6 +38,5 @@ void main() { float x = uv_coords.x; float y = uv_coords.y; float Fxy = (y - x * x); - // if(!winding && orientation < 0) Fxy *= -1; if(Fxy < 0) discard; } diff --git a/manimlib/shaders/quadratic_bezier_fill/geom.glsl b/manimlib/shaders/quadratic_bezier_fill/geom.glsl index 701d3062..0dcdb4fe 100644 --- a/manimlib/shaders/quadratic_bezier_fill/geom.glsl +++ b/manimlib/shaders/quadratic_bezier_fill/geom.glsl @@ -26,9 +26,7 @@ const vec2 SIMPLE_QUADRATIC[3] = vec2[3]( #INSERT finalize_color.glsl -void emit_triangle(vec3 points[3], vec4 v_color[3]){ - vec3 unit_normal = v_base_normal[1]; - +void emit_triangle(vec3 points[3], vec4 v_color[3], vec3 unit_normal){ orientation = sign(determinant(mat3( unit_normal, points[1] - points[0], @@ -57,17 +55,21 @@ void main(){ // Check zero fill if (vec3(v_color[0].a, v_color[1].a, v_color[2].a) == vec3(0.0, 0.0, 0.0)) return; + vec3 base_point = v_base_normal[0]; + vec3 unit_normal = v_base_normal[1]; // Emit main triangle fill_all = 1.0; emit_triangle( - vec3[3](v_base_normal[0], verts[0], verts[2]), - vec4[3](v_color[1], v_color[0], v_color[2]) + vec3[3](base_point, verts[0], verts[2]), + vec4[3](v_color[1], v_color[0], v_color[2]), + unit_normal ); // Edge triangle fill_all = 0.0; emit_triangle( vec3[3](verts[0], verts[1], verts[2]), - vec4[3](v_color[0], v_color[1], v_color[2]) + vec4[3](v_color[0], v_color[1], v_color[2]), + unit_normal ); }