isaaclab_ppisp#

Post-render PPISP (Physically Plausible Image Signal Processing) for IsaacLab.

Provides the renderer-backend-agnostic ISP pipeline that converts the renderer’s HDR scene-linear AOV to LDR RGBA at the end of a render tick. Renderer backends (IsaacRtxRenderer, OVRTXRenderer, NewtonWarpRenderer) compose PpispPipeline internally when the camera’s isp_cfg is set.

Classes#

The following classes are part of the public isaaclab_ppisp API.

PpispCfg

Configuration for PPISP post-processing.

PpispPipeline

Post-render PPISP kernel applier.

class isaaclab_ppisp.PpispCfg[source]#

Bases: object

Configuration for PPISP post-processing.

PPISP inputs are static in IsaacLab. NRE exports store the authoritative values on a USD camera as ppisp:* attributes. If animated USD attributes are imported, the first authored time sample is used and later samples are ignored.

Methods:

__new__(*args, **kwargs)

__init__([camera_prim_path, inputs, ...])

classmethod __new__(*args, **kwargs)#
__init__(camera_prim_path: str | None = <factory>, inputs: dict[str, float | tuple[float, float]] = <factory>, controller_prior_exposure: float = <factory>, controller_responsivity: float | None = <factory>, controller_weights: tuple[float, ...] | None = <factory>) None#
class isaaclab_ppisp.PpispPipeline[source]#

Bases: object

Post-render PPISP kernel applier.

Constructed by renderer backends when spec.cfg.isp_cfg is set. Owns the normalised PpispCfg and dispatches the PPISP Warp kernel once per render tick via apply().

One pipeline instance applies to the whole Camera sensor batch. The PPISP Warp kernel takes scalar coefficients, so every cloned view in a tiled batch shares the same ISP configuration — there is no per-view ISP today. Per-view support would require packing the cfg into GPU arrays and indexing by camera_id inside the kernel.

Today only PpispCfg is accepted; future ISP implementations can either subclass or be selected by cfg type without changes to the backend renderers.

Methods:

__init__(cfg)

Initialize the PPISP pipeline.

__new__(*args, **kwargs)

__init__(cfg: PpispCfg)[source]#

Initialize the PPISP pipeline.

Normalises cfg on construction (validates input keys, fills defaults). Camera already normalises isp_cfg before passing the CameraRenderSpec to the backend, so renderer backends pass a concrete, resolved config here.

Parameters:

cfg – The PPISP configuration.

classmethod __new__(*args, **kwargs)#