# {py:mod}`simvx.graphics.materials.custom_shader` ```{py:module} simvx.graphics.materials.custom_shader ``` ```{autodoc2-docstring} simvx.graphics.materials.custom_shader :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`ShaderMaterial ` - ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial :summary: ``` * - {py:obj}`UniformBuffer ` - ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.UniformBuffer :summary: ``` * - {py:obj}`ShaderMaterialManager ` - ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterialManager :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.__all__ :summary: ``` * - {py:obj}`log ` - ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.log :summary: ``` ```` ### API ````{py:data} __all__ :canonical: simvx.graphics.materials.custom_shader.__all__ :value: > ['ShaderMaterial', 'UniformBuffer', 'ShaderMaterialManager'] ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.__all__ ``` ```` ````{py:data} log :canonical: simvx.graphics.materials.custom_shader.log :value: > 'getLogger(...)' ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.log ``` ```` `````{py:class} ShaderMaterial(vertex_path: str | pathlib.Path | None = None, fragment_path: str | pathlib.Path | None = None, *, vertex_source: str | None = None, fragment_source: str | None = None) :canonical: simvx.graphics.materials.custom_shader.ShaderMaterial ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial.__init__ ``` ````{py:property} is_compiled :canonical: simvx.graphics.materials.custom_shader.ShaderMaterial.is_compiled :type: bool ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial.is_compiled ``` ```` ````{py:property} uniforms :canonical: simvx.graphics.materials.custom_shader.ShaderMaterial.uniforms :type: dict[str, typing.Any] ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial.uniforms ``` ```` ````{py:method} set_uniform(name: str, value: typing.Any) -> None :canonical: simvx.graphics.materials.custom_shader.ShaderMaterial.set_uniform ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial.set_uniform ``` ```` ````{py:method} set_uniform_typed(name: str, value: typing.Any, utype: str) -> None :canonical: simvx.graphics.materials.custom_shader.ShaderMaterial.set_uniform_typed ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial.set_uniform_typed ``` ```` ````{py:method} get_uniform(name: str) -> typing.Any :canonical: simvx.graphics.materials.custom_shader.ShaderMaterial.get_uniform ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial.get_uniform ``` ```` ````{py:method} compile(device: typing.Any, shader_dir: pathlib.Path | None = None) -> None :canonical: simvx.graphics.materials.custom_shader.ShaderMaterial.compile ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial.compile ``` ```` ````{py:method} get_pipeline_key() -> tuple :canonical: simvx.graphics.materials.custom_shader.ShaderMaterial.get_pipeline_key ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial.get_pipeline_key ``` ```` ````{py:method} has_source_changed() -> bool :canonical: simvx.graphics.materials.custom_shader.ShaderMaterial.has_source_changed ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial.has_source_changed ``` ```` ````{py:method} cleanup(device: typing.Any) -> None :canonical: simvx.graphics.materials.custom_shader.ShaderMaterial.cleanup ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterial.cleanup ``` ```` ````` `````{py:class} UniformBuffer(max_size: int = 1024) :canonical: simvx.graphics.materials.custom_shader.UniformBuffer ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.UniformBuffer ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.UniformBuffer.__init__ ``` ````{py:property} is_created :canonical: simvx.graphics.materials.custom_shader.UniformBuffer.is_created :type: bool ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.UniformBuffer.is_created ``` ```` ````{py:method} create(device: typing.Any, physical_device: typing.Any) -> None :canonical: simvx.graphics.materials.custom_shader.UniformBuffer.create ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.UniformBuffer.create ``` ```` ````{py:method} update(device: typing.Any, uniform_data: dict[str, typing.Any], uniform_types: dict[str, str]) -> None :canonical: simvx.graphics.materials.custom_shader.UniformBuffer.update ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.UniformBuffer.update ``` ```` ````{py:method} get_descriptor_set() -> typing.Any :canonical: simvx.graphics.materials.custom_shader.UniformBuffer.get_descriptor_set ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.UniformBuffer.get_descriptor_set ``` ```` ````{py:method} get_descriptor_layout() -> typing.Any :canonical: simvx.graphics.materials.custom_shader.UniformBuffer.get_descriptor_layout ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.UniformBuffer.get_descriptor_layout ``` ```` ````{py:method} cleanup(device: typing.Any) -> None :canonical: simvx.graphics.materials.custom_shader.UniformBuffer.cleanup ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.UniformBuffer.cleanup ``` ```` ````` `````{py:class} ShaderMaterialManager() :canonical: simvx.graphics.materials.custom_shader.ShaderMaterialManager ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterialManager ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterialManager.__init__ ``` ````{py:method} register_material(material: simvx.graphics.materials.custom_shader.ShaderMaterial) -> None :canonical: simvx.graphics.materials.custom_shader.ShaderMaterialManager.register_material ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterialManager.register_material ``` ```` ````{py:method} get_or_create_pipeline(material: simvx.graphics.materials.custom_shader.ShaderMaterial, device: typing.Any, physical_device: typing.Any, render_pass: typing.Any, extent: tuple[int, int], ssbo_layout: typing.Any, texture_layout: typing.Any | None = None, shader_dir: pathlib.Path | None = None) -> tuple[typing.Any, typing.Any] :canonical: simvx.graphics.materials.custom_shader.ShaderMaterialManager.get_or_create_pipeline ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterialManager.get_or_create_pipeline ``` ```` ````{py:method} get_uniform_buffer(material: simvx.graphics.materials.custom_shader.ShaderMaterial) -> simvx.graphics.materials.custom_shader.UniformBuffer | None :canonical: simvx.graphics.materials.custom_shader.ShaderMaterialManager.get_uniform_buffer ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterialManager.get_uniform_buffer ``` ```` ````{py:method} update_uniforms(material: simvx.graphics.materials.custom_shader.ShaderMaterial, device: typing.Any) -> None :canonical: simvx.graphics.materials.custom_shader.ShaderMaterialManager.update_uniforms ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterialManager.update_uniforms ``` ```` ````{py:method} check_hot_reload(device: typing.Any, physical_device: typing.Any, render_pass: typing.Any, extent: tuple[int, int], ssbo_layout: typing.Any, texture_layout: typing.Any | None = None, shader_dir: pathlib.Path | None = None) -> list[simvx.graphics.materials.custom_shader.ShaderMaterial] :canonical: simvx.graphics.materials.custom_shader.ShaderMaterialManager.check_hot_reload ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterialManager.check_hot_reload ``` ```` ````{py:method} cleanup(device: typing.Any) -> None :canonical: simvx.graphics.materials.custom_shader.ShaderMaterialManager.cleanup ```{autodoc2-docstring} simvx.graphics.materials.custom_shader.ShaderMaterialManager.cleanup ``` ```` `````