mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
Instead of tracking _shaders_initialized, just check if self.shader_wrapper is None
This commit is contained in:
parent
0ac9ee1fbf
commit
e0191d81d9
2 changed files with 12 additions and 20 deletions
|
@ -103,9 +103,9 @@ class Mobject(object):
|
||||||
self.saved_state = None
|
self.saved_state = None
|
||||||
self.target = None
|
self.target = None
|
||||||
self.bounding_box: Vect3Array = np.zeros((3, 3))
|
self.bounding_box: Vect3Array = np.zeros((3, 3))
|
||||||
|
self.shader_wrapper: Optional[ShaderWrapper] = None
|
||||||
self._is_animating: bool = False
|
self._is_animating: bool = False
|
||||||
self._needs_new_bounding_box: bool = True
|
self._needs_new_bounding_box: bool = True
|
||||||
self._shaders_initialized: bool = False
|
|
||||||
self._data_has_changed: bool = True
|
self._data_has_changed: bool = True
|
||||||
self.shader_code_replacements: dict[str, str] = dict()
|
self.shader_code_replacements: dict[str, str] = dict()
|
||||||
|
|
||||||
|
@ -652,13 +652,10 @@ class Mobject(object):
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def deepcopy(self) -> Self:
|
def deepcopy(self) -> Self:
|
||||||
|
parents = self.parents
|
||||||
self.parents = []
|
self.parents = []
|
||||||
result.target = None
|
|
||||||
result.saved_state = None
|
|
||||||
for submob in self.get_family():
|
|
||||||
submob._shaders_initialized = False
|
|
||||||
submob._data_has_changed = True
|
|
||||||
result = copy.deepcopy(self)
|
result = copy.deepcopy(self)
|
||||||
|
self.parents = parents
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def copy(self, deep: bool = False) -> Self:
|
def copy(self, deep: bool = False) -> Self:
|
||||||
|
@ -691,7 +688,7 @@ class Mobject(object):
|
||||||
# won't have changed, just directly match.
|
# won't have changed, just directly match.
|
||||||
result.updaters = list(self.updaters)
|
result.updaters = list(self.updaters)
|
||||||
result._data_has_changed = True
|
result._data_has_changed = True
|
||||||
result._shaders_initialized = False
|
result.shader_wrapper = None
|
||||||
|
|
||||||
family = self.get_family()
|
family = self.get_family()
|
||||||
for attr, value in self.__dict__.items():
|
for attr, value in self.__dict__.items():
|
||||||
|
@ -1947,9 +1944,7 @@ class Mobject(object):
|
||||||
def replace_shader_code(self, old: str, new: str) -> Self:
|
def replace_shader_code(self, old: str, new: str) -> Self:
|
||||||
for mob in self.get_family():
|
for mob in self.get_family():
|
||||||
mob.shader_code_replacements[old] = new
|
mob.shader_code_replacements[old] = new
|
||||||
mob._shaders_initialized = False
|
mob.shader_wrapper = None
|
||||||
for mob in self.get_ancestors():
|
|
||||||
mob._shaders_initialized = False
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def set_color_by_code(self, glsl_code: str) -> Self:
|
def set_color_by_code(self, glsl_code: str) -> Self:
|
||||||
|
@ -1993,8 +1988,7 @@ class Mobject(object):
|
||||||
|
|
||||||
# For shader data
|
# For shader data
|
||||||
|
|
||||||
def init_shader_data(self, ctx: Context):
|
def init_shader_wrapper(self, ctx: Context):
|
||||||
self.shader_indices = None
|
|
||||||
self.shader_wrapper = ShaderWrapper(
|
self.shader_wrapper = ShaderWrapper(
|
||||||
ctx=ctx,
|
ctx=ctx,
|
||||||
vert_data=self.data,
|
vert_data=self.data,
|
||||||
|
@ -2007,15 +2001,14 @@ class Mobject(object):
|
||||||
|
|
||||||
def refresh_shader_wrapper_id(self):
|
def refresh_shader_wrapper_id(self):
|
||||||
for submob in self.get_family():
|
for submob in self.get_family():
|
||||||
if submob._shaders_initialized:
|
if submob.shader_wrapper is not None:
|
||||||
submob.shader_wrapper.depth_test = submob.depth_test
|
submob.shader_wrapper.depth_test = submob.depth_test
|
||||||
submob.shader_wrapper.refresh_id()
|
submob.shader_wrapper.refresh_id()
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def get_shader_wrapper(self, ctx: Context) -> ShaderWrapper:
|
def get_shader_wrapper(self, ctx: Context) -> ShaderWrapper:
|
||||||
if not self._shaders_initialized:
|
if self.shader_wrapper is None:
|
||||||
self.init_shader_data(ctx)
|
self.init_shader_wrapper(ctx)
|
||||||
self._shaders_initialized = True
|
|
||||||
return self.shader_wrapper
|
return self.shader_wrapper
|
||||||
|
|
||||||
def get_shader_wrapper_list(self, ctx: Context) -> list[ShaderWrapper]:
|
def get_shader_wrapper_list(self, ctx: Context) -> list[ShaderWrapper]:
|
||||||
|
@ -2041,7 +2034,7 @@ class Mobject(object):
|
||||||
return self.uniforms
|
return self.uniforms
|
||||||
|
|
||||||
def get_shader_vert_indices(self) -> Optional[np.ndarray]:
|
def get_shader_vert_indices(self) -> Optional[np.ndarray]:
|
||||||
return self.shader_indices
|
return None
|
||||||
|
|
||||||
def render(self, ctx: Context, camera_uniforms: dict):
|
def render(self, ctx: Context, camera_uniforms: dict):
|
||||||
if self._data_has_changed:
|
if self._data_has_changed:
|
||||||
|
|
|
@ -1286,8 +1286,7 @@ class VMobject(Mobject):
|
||||||
|
|
||||||
# For shaders
|
# For shaders
|
||||||
|
|
||||||
def init_shader_data(self, ctx: Context):
|
def init_shader_wrapper(self, ctx: Context):
|
||||||
self.shader_indices = None
|
|
||||||
self.shader_wrapper = VShaderWrapper(
|
self.shader_wrapper = VShaderWrapper(
|
||||||
ctx=ctx,
|
ctx=ctx,
|
||||||
vert_data=self.data,
|
vert_data=self.data,
|
||||||
|
@ -1299,7 +1298,7 @@ class VMobject(Mobject):
|
||||||
|
|
||||||
def refresh_shader_wrapper_id(self):
|
def refresh_shader_wrapper_id(self):
|
||||||
for submob in self.get_family():
|
for submob in self.get_family():
|
||||||
if submob._shaders_initialized:
|
if submob.shader_wrapper is not None:
|
||||||
submob.shader_wrapper.stroke_behind = submob.stroke_behind
|
submob.shader_wrapper.stroke_behind = submob.stroke_behind
|
||||||
super().refresh_shader_wrapper_id()
|
super().refresh_shader_wrapper_id()
|
||||||
return self
|
return self
|
||||||
|
|
Loading…
Add table
Reference in a new issue