From 9a1e103a7f32031e528a7f9f82b1e64c5c12f59c Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Fri, 8 Jan 2021 22:26:47 -0800 Subject: [PATCH] Introduce flat_stroke uniform --- manimlib/mobject/three_dimensions.py | 1 + manimlib/mobject/types/vectorized_mobject.py | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/manimlib/mobject/three_dimensions.py b/manimlib/mobject/three_dimensions.py index 2918a6ac..1949aca9 100644 --- a/manimlib/mobject/three_dimensions.py +++ b/manimlib/mobject/three_dimensions.py @@ -16,6 +16,7 @@ class SurfaceMesh(VGroup): "stroke_width": 1, "normal_nudge": 1e-2, "depth_test": True, + "flat_stroke": False, } def __init__(self, uv_surface, **kwargs): diff --git a/manimlib/mobject/types/vectorized_mobject.py b/manimlib/mobject/types/vectorized_mobject.py index 5d5c59c4..4a9ca676 100644 --- a/manimlib/mobject/types/vectorized_mobject.py +++ b/manimlib/mobject/types/vectorized_mobject.py @@ -62,6 +62,7 @@ class VMobject(Mobject): # "fill_frag_shader_file": "quadratic_bezier_fill_frag.glsl", # Could also be Bevel, Miter, Round "joint_type": "auto", + "flat_stroke": True, "render_primitive": moderngl.TRIANGLES, "triangulation_locked": False, "fill_dtype": [ @@ -106,6 +107,7 @@ class VMobject(Mobject): background=self.draw_stroke_behind_fill, ) self.set_gloss(self.gloss) + self.set_flat_stroke(self.flat_stroke) return self def generate_rgba_array(self, color, opacity): @@ -336,6 +338,16 @@ class VMobject(Mobject): return self.get_fill_opacity() return self.get_stroke_opacity() + def set_flat_stroke(self, flat_stroke=True, family=True): + self.flat_stroke = flat_stroke + if family: + for submob in self.submobjects: + submob.set_flat_stroke(flat_stroke, family) + return self + + def get_flat_stroke(self): + return self.flat_stroke + # TODO, this currently does nothing def color_using_background_image(self, background_image_file): self.background_image_file = background_image_file @@ -970,6 +982,7 @@ class VMobject(Mobject): } result = super().get_shader_uniforms() result["joint_type"] = j_map[self.joint_type] + result["flat_stroke"] = float(self.flat_stroke) return result def get_stroke_shader_data(self):