From 11964d5573cdd8c5f25c6520ddff68b92df9912a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Manr=C3=ADquez?= Date: Fri, 13 Dec 2024 17:36:42 -0300 Subject: [PATCH 1/3] Optimize STD140BufferFormat._write_padded() --- manim/renderer/buffers/buffer.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/manim/renderer/buffers/buffer.py b/manim/renderer/buffers/buffer.py index 07eea68e1c..150aa910d0 100644 --- a/manim/renderer/buffers/buffer.py +++ b/manim/renderer/buffers/buffer.py @@ -50,7 +50,7 @@ def __init__( self.name = name self.binding = binding self.dtype = [] - self._paddings = {} # LUT for future writes + self._paddings: dict[str, int] = {} # LUT for future writes byte_offset = 0 # Track the offset so we can calculate padding for alignment -- NOTE: use RenderDoc to debug for data_type, var_name in struct: _base_char, base_bytesize, shape = self._GL_DTYPES[data_type] @@ -97,11 +97,16 @@ def _write_padded(self, data: tuple | np.ndarray, var: str) -> np.ndarray: np.ndarray the same data with 0 or 1 columns of 0s appended """ - try: - # This fails for 1D data (python or np.array) - return np.pad(data, ((0, 0), (0, self._paddings[var])), mode="constant") - except Exception: - return np.pad(data, ((0, self._paddings[var])), mode="constant") + data = np.asarray(data) + if self._paddings[var] or data.ndim == 0: + return data + + # Make a new array with extra columns of 0s + new_shape = list(data.shape) + new_shape[-1] += self._paddings[var] + padded_data = np.zeros(new_shape) + padded_data[..., :data.shape[-1]] = data + return padded_data def write(self, data: dict) -> None: """Write a dictionary of key value pairs to the STD140BufferFormat's data attribute From f6f5bcb4af32afee9f683f73c0fbafd0a030a02f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 20:40:52 +0000 Subject: [PATCH 2/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- manim/renderer/buffers/buffer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manim/renderer/buffers/buffer.py b/manim/renderer/buffers/buffer.py index 150aa910d0..0ba7b04e4d 100644 --- a/manim/renderer/buffers/buffer.py +++ b/manim/renderer/buffers/buffer.py @@ -103,9 +103,9 @@ def _write_padded(self, data: tuple | np.ndarray, var: str) -> np.ndarray: # Make a new array with extra columns of 0s new_shape = list(data.shape) - new_shape[-1] += self._paddings[var] + new_shape[-1] += self._paddings[var] padded_data = np.zeros(new_shape) - padded_data[..., :data.shape[-1]] = data + padded_data[..., : data.shape[-1]] = data return padded_data def write(self, data: dict) -> None: From c9425ee7c2a372f5504e20ce5e205e37ee453f22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Manr=C3=ADquez?= Date: Fri, 13 Dec 2024 17:41:45 -0300 Subject: [PATCH 3/3] Missing == 0 --- manim/renderer/buffers/buffer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/manim/renderer/buffers/buffer.py b/manim/renderer/buffers/buffer.py index 150aa910d0..4ee84ae100 100644 --- a/manim/renderer/buffers/buffer.py +++ b/manim/renderer/buffers/buffer.py @@ -98,14 +98,14 @@ def _write_padded(self, data: tuple | np.ndarray, var: str) -> np.ndarray: the same data with 0 or 1 columns of 0s appended """ data = np.asarray(data) - if self._paddings[var] or data.ndim == 0: + if self._paddings[var] == 0 or data.ndim == 0: return data # Make a new array with extra columns of 0s new_shape = list(data.shape) - new_shape[-1] += self._paddings[var] + new_shape[-1] += self._paddings[var] padded_data = np.zeros(new_shape) - padded_data[..., :data.shape[-1]] = data + padded_data[..., : data.shape[-1]] = data return padded_data def write(self, data: dict) -> None: