From f0bf50eb7f5f71136564f1c489d013a805a9992c Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Sat, 28 Sep 2024 09:54:28 -0500 Subject: [PATCH] Remove use of gl_VertexID --- manimlib/mobject/types/vectorized_mobject.py | 2 +- manimlib/shader_wrapper.py | 2 +- manimlib/shaders/quadratic_bezier/depth/geom.glsl | 5 ----- manimlib/shaders/quadratic_bezier/depth/vert.glsl | 2 -- manimlib/shaders/quadratic_bezier/fill/geom.glsl | 5 ----- manimlib/shaders/quadratic_bezier/fill/vert.glsl | 2 -- manimlib/shaders/quadratic_bezier/stroke/geom.glsl | 5 ----- manimlib/shaders/quadratic_bezier/stroke/vert.glsl | 2 -- 8 files changed, 2 insertions(+), 23 deletions(-) diff --git a/manimlib/mobject/types/vectorized_mobject.py b/manimlib/mobject/types/vectorized_mobject.py index 0e18735554..ab90dfbc75 100644 --- a/manimlib/mobject/types/vectorized_mobject.py +++ b/manimlib/mobject/types/vectorized_mobject.py @@ -1274,7 +1274,7 @@ def get_shader_data(self) -> Iterable[np.ndarray]: # Do we want this elsewhere? Say whenever points are refreshed or something? self.get_joint_angles() self.data["base_normal"][0::2] = self.data["point"][0] - return [self.data, self.data[-1:]] + return [self.data[self.get_outer_vert_indices()]] class VGroup(Group, VMobject, Generic[SubVmobjectType]): diff --git a/manimlib/shader_wrapper.py b/manimlib/shader_wrapper.py index d7063ad767..3de2612bfc 100644 --- a/manimlib/shader_wrapper.py +++ b/manimlib/shader_wrapper.py @@ -225,7 +225,7 @@ def __init__( mobject_uniforms: Optional[UniformDict] = None, # A dictionary mapping names of uniform variables texture_paths: Optional[dict[str, str]] = None, # A dictionary mapping names to filepaths for textures. depth_test: bool = False, - render_primitive: int = moderngl.TRIANGLE_STRIP, + render_primitive: int = moderngl.TRIANGLES, code_replacements: dict[str, str] = dict(), stroke_behind: bool = False, ): diff --git a/manimlib/shaders/quadratic_bezier/depth/geom.glsl b/manimlib/shaders/quadratic_bezier/depth/geom.glsl index 10ad809e1c..ca29d2450e 100644 --- a/manimlib/shaders/quadratic_bezier/depth/geom.glsl +++ b/manimlib/shaders/quadratic_bezier/depth/geom.glsl @@ -5,7 +5,6 @@ layout (triangle_strip, max_vertices = 6) out; in vec3 verts[3]; in vec3 v_base_point[3]; -in int v_vert_index[3]; out float depth; @@ -22,10 +21,6 @@ void emit_triangle(vec3 points[3]){ void main(){ - // Vector graphic shaders use TRIANGLE_STRIP, but only - // every other one needs to be rendered - if (v_vert_index[0] % 2 != 0) return; - // Curves are marked as ended when the handle after // the first anchor is set equal to that anchor if (verts[0] == verts[1]) return; diff --git a/manimlib/shaders/quadratic_bezier/depth/vert.glsl b/manimlib/shaders/quadratic_bezier/depth/vert.glsl index 64aec4438d..231d6746f6 100644 --- a/manimlib/shaders/quadratic_bezier/depth/vert.glsl +++ b/manimlib/shaders/quadratic_bezier/depth/vert.glsl @@ -5,10 +5,8 @@ in vec3 base_normal; out vec3 verts; out vec3 v_base_point; -out int v_vert_index; void main(){ verts = point; v_base_point = base_normal; - v_vert_index = gl_VertexID; } \ No newline at end of file diff --git a/manimlib/shaders/quadratic_bezier/fill/geom.glsl b/manimlib/shaders/quadratic_bezier/fill/geom.glsl index 0dcdb4fe34..44a9953c9e 100644 --- a/manimlib/shaders/quadratic_bezier/fill/geom.glsl +++ b/manimlib/shaders/quadratic_bezier/fill/geom.glsl @@ -6,7 +6,6 @@ layout (triangle_strip, max_vertices = 6) out; in vec3 verts[3]; in vec4 v_color[3]; in vec3 v_base_normal[3]; -in int v_vert_index[3]; out vec4 color; out float fill_all; @@ -44,10 +43,6 @@ void emit_triangle(vec3 points[3], vec4 v_color[3], vec3 unit_normal){ void main(){ - // Vector graphic shaders use TRIANGLE_STRIP, but only - // every other one needs to be rendered - if (v_vert_index[0] % 2 != 0) return; - // Curves are marked as ended when the handle after // the first anchor is set equal to that anchor if (verts[0] == verts[1]) return; diff --git a/manimlib/shaders/quadratic_bezier/fill/vert.glsl b/manimlib/shaders/quadratic_bezier/fill/vert.glsl index 8f19c73df9..86dc3a2691 100644 --- a/manimlib/shaders/quadratic_bezier/fill/vert.glsl +++ b/manimlib/shaders/quadratic_bezier/fill/vert.glsl @@ -7,11 +7,9 @@ in vec3 base_normal; out vec3 verts; // Bezier control point out vec4 v_color; out vec3 v_base_normal; -out int v_vert_index; void main(){ verts = point; v_color = fill_rgba; v_base_normal = base_normal; - v_vert_index = gl_VertexID; } \ No newline at end of file diff --git a/manimlib/shaders/quadratic_bezier/stroke/geom.glsl b/manimlib/shaders/quadratic_bezier/stroke/geom.glsl index 053e42ab50..0748396843 100644 --- a/manimlib/shaders/quadratic_bezier/stroke/geom.glsl +++ b/manimlib/shaders/quadratic_bezier/stroke/geom.glsl @@ -15,7 +15,6 @@ in float v_joint_angle[3]; in float v_stroke_width[3]; in vec4 v_color[3]; in vec3 v_unit_normal[3]; -in int v_vert_index[3]; out vec4 color; out float dist_to_aaw; @@ -156,10 +155,6 @@ void emit_point_with_width( void main() { - // Vector graphic shaders use TRIANGLE_STRIP, but only - // every other one needs to be rendered - if (v_vert_index[0] % 2 != 0) return; - // Curves are marked as ended when the handle after // the first anchor is set equal to that anchor if (verts[0] == verts[1]) return; diff --git a/manimlib/shaders/quadratic_bezier/stroke/vert.glsl b/manimlib/shaders/quadratic_bezier/stroke/vert.glsl index fa2db97519..0e43ad384c 100644 --- a/manimlib/shaders/quadratic_bezier/stroke/vert.glsl +++ b/manimlib/shaders/quadratic_bezier/stroke/vert.glsl @@ -16,7 +16,6 @@ out vec4 v_color; out float v_stroke_width; out float v_joint_angle; out vec3 v_unit_normal; -out int v_vert_index; const float STROKE_WIDTH_CONVERSION = 0.01; @@ -26,5 +25,4 @@ void main(){ v_stroke_width = STROKE_WIDTH_CONVERSION * stroke_width * mix(frame_scale, 1, is_fixed_in_frame); v_joint_angle = joint_angle; v_unit_normal = unit_normal; - v_vert_index = gl_VertexID; } \ No newline at end of file