simvx.graphics.renderer.pipeline_manager¶
PipelineManager: owns the forward renderer’s 3D graphics pipelines.
Extracted from Renderer so pipeline creation, rebuild-on-HDR-switch,
resize, and cleanup live in one place. Renderer re-exports the
pipeline handles as attributes so SceneContentRenderer keeps accessing
renderer._pipeline etc. without change.
Module Contents¶
Classes¶
Owns the 3D forward-render pipelines and their shader modules. |
Data¶
API¶
- simvx.graphics.renderer.pipeline_manager.TANGENT_MESH_BINDINGS¶
()
- simvx.graphics.renderer.pipeline_manager.__all__¶
[‘PipelineManager’]
- class simvx.graphics.renderer.pipeline_manager.PipelineManager(engine: Any)[source]¶
Owns the 3D forward-render pipelines and their shader modules.
Initialization
- setup(ssbo_layout: Any, joint_layout: Any) None[source]¶
Compile shaders and build the four 3D pipelines against the engine render pass.
- set_probe_blend_count(count: int) None[source]¶
Set the top-K reflection-probe blend width.
PROBE_BLEND_COUNTis a compile-time constant in cube_textured.frag, so a change recompiles the lit fragment permutations and rebuilds the mesh pipelines (device-wait-idle; rare transition, driven byWorldEnvironment.probe_blend_count). No-op when unchanged. Values are clamped to [1, 8] (0 = probes-off is handled by the capture gate, never by a shader permutation: a zero-length top-K array is invalid GLSL, and with zero live probes the blend loop is already a no-op).
- rebuild_for_render_pass(render_pass: Any) None[source]¶
Rebuild all four pipelines against
render_pass(e.g. HDR target).
- rebuild_for_resize(width: int, height: int, render_pass: Any) None[source]¶
Rebuild all four pipelines for a new framebuffer size.
- tangent_pipelines() tuple[Any, Any, Any][source]¶
The (opaque, double-sided, transparent) tangent pipeline triple.
Built lazily on first request (compiling the HAS_TANGENTS shader permutations), then kept in sync with the base pipelines by every rebuild. Callers only ask when a registered mesh carries real tangents, so a tangent-free renderer never compiles or creates any of this.