picogl.backend.render

Declarative render passes and frame-graph execution.

Submodules

Classes

RenderGraphExecutor

Resolve pass order and execute through a gl backend.

DependencyGraph

Build pass ordering edges from resource read/write dependencies.

RenderGraph

Collection of render passes.

RenderPass

Declarative render pass with attached state and optional resource deps.

RenderPipeline

Execute render passes in registration order.

FrameResources

Allocator for per-frame transient GPU resources.

RenderTarget

Color/depth render target.

Texture

GPU texture node in a render graph.

Functions

topo_sort(→ list[str])

Topologically sort pass names; raise ValueError on cycles.

Package Contents

class picogl.backend.render.RenderGraphExecutor(backend: picogl.backend.gl.backend.GLBackend)[source]

Resolve pass order and execute through a gl backend.

backend
execute(graph: picogl.backend.render.graph.RenderGraph) None[source]
class picogl.backend.render.DependencyGraph[source]

Build pass ordering edges from resource read/write dependencies.

edges: dict[str, set[str]]
build(passes: list[picogl.backend.render.pass_.RenderPass]) None[source]
class picogl.backend.render.RenderGraph[source]

Collection of render passes.

passes: list[picogl.backend.render.pass_.RenderPass] = []
add(render_pass: picogl.backend.render.pass_.RenderPass) None[source]
picogl.backend.render.topo_sort(nodes: list[str], edges: dict[str, set[str]]) list[str][source]

Topologically sort pass names; raise ValueError on cycles.

class picogl.backend.render.RenderPass[source]

Declarative render pass with attached state and optional resource deps.

name: str
state: picogl.backend.state.RenderState
execute_fn: Callable[[], None]
reads: list[picogl.backend.render.resources.Texture] = []
writes: list[picogl.backend.render.resources.Texture] = []
execute(backend: picogl.backend.gl.backend.GLBackend) None[source]
class picogl.backend.render.RenderPipeline[source]

Execute render passes in registration order.

passes: list[picogl.backend.render.pass_.RenderPass] = []
add(render_pass: picogl.backend.render.pass_.RenderPass) None[source]
execute(backend: picogl.backend.gl.backend.GLBackend) None[source]
class picogl.backend.render.FrameResources[source]

Allocator for per-frame transient GPU resources.

textures: dict[str, Texture]
render_targets: dict[str, RenderTarget]
create_texture(name: str, width: int, height: int, fmt: int) Texture[source]
create_render_target(name: str, color: Texture, depth: Texture | None = None) RenderTarget[source]
class picogl.backend.render.RenderTarget[source]

Color/depth render target.

name: str
color: Texture
depth: Texture | None = None
class picogl.backend.render.Texture[source]

GPU texture node in a render graph.

name: str
width: int
height: int
format: int
handle: int | None = None