# {py:mod}`simvx.core.clustered_lighting` ```{py:module} simvx.core.clustered_lighting ``` ```{autodoc2-docstring} simvx.core.clustered_lighting :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`ClusterConfig ` - ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterConfig :summary: ``` * - {py:obj}`LightCluster ` - ```{autodoc2-docstring} simvx.core.clustered_lighting.LightCluster :summary: ``` * - {py:obj}`ClusterGrid ` - ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`assign_lights ` - ```{autodoc2-docstring} simvx.core.clustered_lighting.assign_lights :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`log ` - ```{autodoc2-docstring} simvx.core.clustered_lighting.log :summary: ``` * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.core.clustered_lighting.__all__ :summary: ``` ```` ### API ````{py:data} log :canonical: simvx.core.clustered_lighting.log :value: > 'getLogger(...)' ```{autodoc2-docstring} simvx.core.clustered_lighting.log ``` ```` ````{py:data} __all__ :canonical: simvx.core.clustered_lighting.__all__ :value: > ['ClusterGrid', 'LightCluster', 'assign_lights', 'ClusterConfig'] ```{autodoc2-docstring} simvx.core.clustered_lighting.__all__ ``` ```` `````{py:class} ClusterConfig :canonical: simvx.core.clustered_lighting.ClusterConfig ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterConfig ``` ````{py:attribute} tiles_x :canonical: simvx.core.clustered_lighting.ClusterConfig.tiles_x :type: int :value: > 16 ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterConfig.tiles_x ``` ```` ````{py:attribute} tiles_y :canonical: simvx.core.clustered_lighting.ClusterConfig.tiles_y :type: int :value: > 9 ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterConfig.tiles_y ``` ```` ````{py:attribute} depth_slices :canonical: simvx.core.clustered_lighting.ClusterConfig.depth_slices :type: int :value: > 24 ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterConfig.depth_slices ``` ```` ````{py:attribute} max_lights_per_cluster :canonical: simvx.core.clustered_lighting.ClusterConfig.max_lights_per_cluster :type: int :value: > 256 ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterConfig.max_lights_per_cluster ``` ```` ````` `````{py:class} LightCluster :canonical: simvx.core.clustered_lighting.LightCluster ```{autodoc2-docstring} simvx.core.clustered_lighting.LightCluster ``` ````{py:attribute} light_indices :canonical: simvx.core.clustered_lighting.LightCluster.light_indices :type: list[int] :value: > 'field(...)' ```{autodoc2-docstring} simvx.core.clustered_lighting.LightCluster.light_indices ``` ```` ````{py:property} light_count :canonical: simvx.core.clustered_lighting.LightCluster.light_count :type: int ```{autodoc2-docstring} simvx.core.clustered_lighting.LightCluster.light_count ``` ```` ````{py:method} clear() -> None :canonical: simvx.core.clustered_lighting.LightCluster.clear ```{autodoc2-docstring} simvx.core.clustered_lighting.LightCluster.clear ``` ```` ````` `````{py:class} ClusterGrid(config: simvx.core.clustered_lighting.ClusterConfig | None = None) :canonical: simvx.core.clustered_lighting.ClusterGrid ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid.__init__ ``` ````{py:attribute} __slots__ :canonical: simvx.core.clustered_lighting.ClusterGrid.__slots__ :value: > ('config', 'clusters', 'slice_boundaries', '_total') ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid.__slots__ ``` ```` ````{py:method} index(tx: int, ty: int, sz: int) -> int :canonical: simvx.core.clustered_lighting.ClusterGrid.index ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid.index ``` ```` ````{py:method} cluster_at(tx: int, ty: int, sz: int) -> simvx.core.clustered_lighting.LightCluster :canonical: simvx.core.clustered_lighting.ClusterGrid.cluster_at ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid.cluster_at ``` ```` ````{py:method} clear() -> None :canonical: simvx.core.clustered_lighting.ClusterGrid.clear ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid.clear ``` ```` ````{py:method} rebuild(near: float, far: float) -> None :canonical: simvx.core.clustered_lighting.ClusterGrid.rebuild ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid.rebuild ``` ```` ````{py:method} depth_slice(view_z: float) -> int :canonical: simvx.core.clustered_lighting.ClusterGrid.depth_slice ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid.depth_slice ``` ```` ````{py:method} to_light_index_buffer() -> numpy.ndarray :canonical: simvx.core.clustered_lighting.ClusterGrid.to_light_index_buffer ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid.to_light_index_buffer ``` ```` ````{py:method} to_tile_buffer() -> numpy.ndarray :canonical: simvx.core.clustered_lighting.ClusterGrid.to_tile_buffer ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid.to_tile_buffer ``` ```` ````{py:property} total_clusters :canonical: simvx.core.clustered_lighting.ClusterGrid.total_clusters :type: int ```{autodoc2-docstring} simvx.core.clustered_lighting.ClusterGrid.total_clusters ``` ```` ````` ````{py:function} assign_lights(lights: list, view_matrix: numpy.ndarray, projection_matrix: numpy.ndarray, viewport_size: tuple[int, int], grid: simvx.core.clustered_lighting.ClusterGrid) -> simvx.core.clustered_lighting.ClusterGrid :canonical: simvx.core.clustered_lighting.assign_lights ```{autodoc2-docstring} simvx.core.clustered_lighting.assign_lights ``` ````