"""Render pass primitive."""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import TYPE_CHECKING, Callable
from picogl.backend.state import RenderState
if TYPE_CHECKING:
from picogl.backend.gl.backend import GLBackend
from picogl.backend.render.resources import Texture
@dataclass
[docs]
class RenderPass:
"""Declarative render pass with attached state and optional resource deps."""
[docs]
execute_fn: Callable[[], None]
[docs]
reads: list["Texture"] = field(default_factory=list)
[docs]
writes: list["Texture"] = field(default_factory=list)
[docs]
def execute(self, backend: "GLBackend") -> None:
backend.apply_state(self.state)
self.execute_fn()