Source code for simvx.graphics.renderer.resource_registry

"""ResourceRegistry — string-keyed bag of offscreen resources shared between passes.

Accessed only at setup/resize time. Passes resolve inputs once during setup() and
cache handles as direct instance attributes — no per-frame registry lookups.
"""

from __future__ import annotations

from typing import Any

__all__ = ["ResourceRegistry"]


[docs] class ResourceRegistry: """String-keyed resource namespace shared between render passes.""" __slots__ = ("_entries",) def __init__(self) -> None: self._entries: dict[str, Any] = {}
[docs] def register(self, name: str, handle: Any) -> None: """Register a named resource (image view, buffer, sampler, etc.).""" self._entries[name] = handle
[docs] def get(self, name: str) -> Any: """Retrieve a resource by name. Raises KeyError if not registered.""" return self._entries[name]
[docs] def try_get(self, name: str) -> Any | None: """Retrieve a resource by name, or None if not registered.""" return self._entries.get(name)
[docs] def has(self, name: str) -> bool: """Check whether a resource is registered.""" return name in self._entries
[docs] def remove(self, name: str) -> None: """Remove a resource entry (e.g. before re-registering on resize).""" self._entries.pop(name, None)
[docs] def clear(self) -> None: """Remove all entries.""" self._entries.clear()
[docs] def names(self) -> frozenset[str]: """Return all registered resource names.""" return frozenset(self._entries)