From d10e1fe672b7e69d6b838fa2a7a6e6559411d61c Mon Sep 17 00:00:00 2001 From: Paul V Craven Date: Thu, 1 Oct 2026 13:07:12 -0500 Subject: [PATCH] Remove unfinished array and bindless texture atlas stubs arcade/texture_atlas/atlas_array.py and atlas_bindless.py were added as empty placeholders in #1951 (January 2024), marked "WORK IN PROGRESS. DO NOT USE." Neither was imported or exported anywhere, and neither class could be instantiated, since they implement none of TextureAtlasBase's abstract methods. Both have failed to import on Python 3.10-3.13 since "Drop 3.9" (#2622) removed their `from __future__ import annotations`: their __init__ signatures use ArcadeContext, which is only imported under TYPE_CHECKING. They can be recovered from git history if the work resumes. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 1 + arcade/texture_atlas/atlas_array.py | 38 -------------------------- arcade/texture_atlas/atlas_bindless.py | 29 -------------------- 3 files changed, 1 insertion(+), 67 deletions(-) delete mode 100644 arcade/texture_atlas/atlas_array.py delete mode 100644 arcade/texture_atlas/atlas_bindless.py diff --git a/CHANGELOG.md b/CHANGELOG.md index ab3d7924c7..ff66eb6d7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Arcade [PyPi Release History](https://pypi.org/project/arcade/#history) page. - Sped up collision checks further by caching each hit box's distinct edge directions. Parallel edges (such as opposite sides of the default octagon hit boxes, or matching edges on two sprites with the same angle) are only tested once, and the cache is kept when a sprite moves. Two unrotated octagon hit boxes go from 12.0 to 4.6 µs, and two rotated 30° from 20.8 to 6.9 µs. - `SpatialHash` now uses the hit box's cached bounds to find a sprite's grid cells, so they're shared with collision checks. Adding, removing, and querying for sprites that haven't moved is about 33-40% faster. - Added collision benchmark scripts in `benchmarks/collisions/` (`micro.py`, `hit_box.py`, and `compare_reference.py`, which checks collision results against a simple reference on random sprite pairs) and `benchmarks/spatial_hash/queries.py`. +- Removed the unfinished `arcade.texture_atlas.atlas_array` and `atlas_bindless` modules. They were empty placeholders marked "do not use", weren't exported, and had failed to import on Python 3.10-3.13 since 4.0's move off Python 3.9. - Updated the optional `pymunk` extra to 7.3.0 (from 7.2.0). Packaging-only release (free-threaded CPython and pyodide wheels, improved type hints) with no breaking changes or deprecations. ## 4.0.0.dev7 diff --git a/arcade/texture_atlas/atlas_array.py b/arcade/texture_atlas/atlas_array.py deleted file mode 100644 index 1505843f63..0000000000 --- a/arcade/texture_atlas/atlas_array.py +++ /dev/null @@ -1,38 +0,0 @@ -""" -THIS IS WORK IN PROGRESS. DO NOT USE. -""" - -from typing import ( - TYPE_CHECKING, -) - -from .base import TextureAtlasBase - -if TYPE_CHECKING: - from arcade import ArcadeContext - - -class TextureArrayAtlas(TextureAtlasBase): - """ - A texture atlas that stores textures in a texture array. - - Args: - ctx (ArcadeContext): The Arcade context. - size (Tuple[int, int]): The texture size in pixels per layer - layers (int): The number of layers (number of textures to store) - """ - - def __init__(self, ctx: ArcadeContext | None, size: tuple[int, int], layers: int): - super().__init__(ctx) - self._size = size - self._layers = layers - - @property - def size(self) -> tuple[int, int]: - """The texture size in pixels per layer.""" - return self._size - - @property - def layers(self) -> int: - """The number of layers (number of textures to store).""" - return self._layers diff --git a/arcade/texture_atlas/atlas_bindless.py b/arcade/texture_atlas/atlas_bindless.py deleted file mode 100644 index 0db4933057..0000000000 --- a/arcade/texture_atlas/atlas_bindless.py +++ /dev/null @@ -1,29 +0,0 @@ -""" -THIS IS WORK IN PROGRESS. DO NOT USE. -""" - -from typing import TYPE_CHECKING - -from .base import TextureAtlasBase - -if TYPE_CHECKING: - from arcade import ArcadeContext - - -class BindlessTextureAtlas(TextureAtlasBase): - """ - A texture atlas using bindless textures. This is an extension to OpenGL 4.3+ - and requires the ARB_bindless_texture extension or possibly vendor specific ones. - - Bindless textures are simply 64 bit integer names/handles for a texture that - can be casted to a sampler in a shader meaning that you can have an unlimited - amount of samplers in the same draw call. Likely a shader storage buffer is - needed to store the handles. - - The max capacity is only limited by memory. Discrete GPUs support this - feature and some iGPUs from 2019 and later. AMD + Intel Xe if - latest drivers are installed. - """ - - def __init__(self, ctx: ArcadeContext): - super().__init__(ctx)