# {py:mod}`simvx.graphics.renderer.shadow_cache` ```{py:module} simvx.graphics.renderer.shadow_cache ``` ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`SceneGeometry ` - ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SceneGeometry :summary: ``` * - {py:obj}`ShadowRowCache ` - ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.ShadowRowCache :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`caster_row_keys ` - ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.caster_row_keys :summary: ``` * - {py:obj}`albedo_pixel_state ` - ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.albedo_pixel_state :summary: ``` * - {py:obj}`shadow_material_state ` - ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.shadow_material_state :summary: ``` * - {py:obj}`instance_geometry ` - ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.instance_geometry :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.__all__ :summary: ``` * - {py:obj}`POINT_KEY_WIDTH ` - ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.POINT_KEY_WIDTH :summary: ``` * - {py:obj}`SPOT_KEY_WIDTH ` - ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SPOT_KEY_WIDTH :summary: ``` * - {py:obj}`SHADOW_MATERIAL_COLUMNS ` - ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SHADOW_MATERIAL_COLUMNS :summary: ``` ```` ### API ````{py:data} __all__ :canonical: simvx.graphics.renderer.shadow_cache.__all__ :value: > ['POINT_KEY_WIDTH', 'SHADOW_MATERIAL_COLUMNS', 'SPOT_KEY_WIDTH', 'SceneGeometry', 'ShadowRowCache', ... ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.__all__ ``` ```` ````{py:data} POINT_KEY_WIDTH :canonical: simvx.graphics.renderer.shadow_cache.POINT_KEY_WIDTH :value: > 5 ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.POINT_KEY_WIDTH ``` ```` ````{py:data} SPOT_KEY_WIDTH :canonical: simvx.graphics.renderer.shadow_cache.SPOT_KEY_WIDTH :value: > 9 ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SPOT_KEY_WIDTH ``` ```` ````{py:data} SHADOW_MATERIAL_COLUMNS :canonical: simvx.graphics.renderer.shadow_cache.SHADOW_MATERIAL_COLUMNS :value: > ('albedo', 'features', 'albedo_tex', 'alpha_mode', 'alpha_cutoff', 'uv_rotation', 'uv_offset', 'uv_s... ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SHADOW_MATERIAL_COLUMNS ``` ```` ````{py:function} caster_row_keys(lights: numpy.ndarray | None, rows: int) -> tuple[numpy.ndarray, numpy.ndarray] :canonical: simvx.graphics.renderer.shadow_cache.caster_row_keys ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.caster_row_keys ``` ```` ````{py:function} albedo_pixel_state(materials: numpy.ndarray, generations: dict[int, int] | None) -> numpy.ndarray :canonical: simvx.graphics.renderer.shadow_cache.albedo_pixel_state ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.albedo_pixel_state ``` ```` ````{py:function} shadow_material_state(materials: numpy.ndarray | None, generations: dict[int, int] | None = None) -> numpy.ndarray | None :canonical: simvx.graphics.renderer.shadow_cache.shadow_material_state ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.shadow_material_state ``` ```` `````{py:class} SceneGeometry :canonical: simvx.graphics.renderer.shadow_cache.SceneGeometry ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SceneGeometry ``` ````{py:attribute} atlas_generation :canonical: simvx.graphics.renderer.shadow_cache.SceneGeometry.atlas_generation :type: int :value: > None ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SceneGeometry.atlas_generation ``` ```` ````{py:attribute} models :canonical: simvx.graphics.renderer.shadow_cache.SceneGeometry.models :type: numpy.ndarray | None :value: > None ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SceneGeometry.models ``` ```` ````{py:attribute} meshes :canonical: simvx.graphics.renderer.shadow_cache.SceneGeometry.meshes :type: numpy.ndarray | None :value: > None ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SceneGeometry.meshes ``` ```` ````{py:attribute} materials :canonical: simvx.graphics.renderer.shadow_cache.SceneGeometry.materials :type: numpy.ndarray | None :value: > None ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SceneGeometry.materials ``` ```` ````{py:attribute} material_state :canonical: simvx.graphics.renderer.shadow_cache.SceneGeometry.material_state :type: numpy.ndarray | None :value: > None ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SceneGeometry.material_state ``` ```` ````{py:attribute} blocks :canonical: simvx.graphics.renderer.shadow_cache.SceneGeometry.blocks :type: tuple[tuple[int, ...], ...] | None :value: > () ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SceneGeometry.blocks ``` ```` ````{py:attribute} instances_known :canonical: simvx.graphics.renderer.shadow_cache.SceneGeometry.instances_known :type: bool :value: > True ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SceneGeometry.instances_known ``` ```` ````{py:method} matches(other: simvx.graphics.renderer.shadow_cache.SceneGeometry | None) -> bool :canonical: simvx.graphics.renderer.shadow_cache.SceneGeometry.matches ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.SceneGeometry.matches ``` ```` ````` `````{py:class} ShadowRowCache() :canonical: simvx.graphics.renderer.shadow_cache.ShadowRowCache ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.ShadowRowCache ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.ShadowRowCache.__init__ ``` ````{py:attribute} __slots__ :canonical: simvx.graphics.renderer.shadow_cache.ShadowRowCache.__slots__ :value: > ('_geometry', '_point_keys', '_spot_keys') ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.ShadowRowCache.__slots__ ``` ```` ````{py:method} stale_rows(geometry: simvx.graphics.renderer.shadow_cache.SceneGeometry, point_keys: numpy.ndarray, spot_keys: numpy.ndarray) -> tuple[numpy.ndarray, numpy.ndarray] :canonical: simvx.graphics.renderer.shadow_cache.ShadowRowCache.stale_rows ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.ShadowRowCache.stale_rows ``` ```` ````` ````{py:function} instance_geometry(renderer: typing.Any, atlas_generation: int) -> simvx.graphics.renderer.shadow_cache.SceneGeometry :canonical: simvx.graphics.renderer.shadow_cache.instance_geometry ```{autodoc2-docstring} simvx.graphics.renderer.shadow_cache.instance_geometry ``` ````