Add Sensor PPISP controller support for camera post-processing#6167
Add Sensor PPISP controller support for camera post-processing#6167moennen wants to merge 2 commits into
Conversation
Greptile SummaryThis PR adds
Confidence Score: 4/5Safe to merge; the controller computation is well-tested with NumPy equivalence checks and the renderer guard refactors are correct. The implementation is thorough and the NumPy-vs-CUDA equivalence test validates the core numerical path. The only issues found are style-level: a redundant pipeline.py (_controller_buffers_by_shape cache key) and cfg.py (normalize_ppisp_cfg mutation semantics) Important Files Changed
Sequence DiagramsequenceDiagram
participant Renderer as Renderer (prepare_cameras)
participant RN as resolve_and_normalize
participant CFG as PpispCfg / USD Camera
participant PP as PpispPipeline (apply)
participant CTRL as compute_ppisp_controller_params
participant ISP as apply_ppisp_to_rgba_with_controller_params
Renderer->>RN: isp_cfg, stage, camera_prim_path
RN->>CFG: auto_camera_ppisp_cfg / auto_any_ppisp_cfg
CFG-->>RN: PpispCfg (weights + inputs)
RN-->>Renderer: normalized PpispCfg
Renderer->>PP: PpispPipeline(cfg)
Note over PP: caches weights on first device use
PP->>CTRL: hdr_color, weights, features, controller_params
Note over CTRL: CNN pool kernel (native CUDA) / MLP kernel (native CUDA)
CTRL-->>PP: controller_params (N x 9)
PP->>ISP: hdr_color, out_rgba, cfg, controller_params
ISP-->>PP: LDR RGBA (in-place)
Reviews (1): Last reviewed commit: "Add PPISP controller changelog fragments" | Re-trigger Greptile |
Description
Adds PPISP
PPISPAutocontroller support to IsaacLab camera post-processing.This change parses embedded PPISP controller weights from USD/SPG-authored controller CUDA sources, stores them in
PpispCfg, and evaluates the controller in Warp before applying PPISP.The controller predicts per-camera exposure and color-latent parameters, while existing static PPISP config continues to provide responsivity, vignetting, and CRF parameters.
The implementation keeps the original pure-Warp controller path as a correctness reference and adds a native
wp.func_nativeCUDA-snippet backend for high-env-count tiled camera workloads. The default controller backend uses an automatic heuristic: Warp for single/large images, native CUDA snippets for many small camera tiles.Also adds tests for:
PPISPAutocontroller parsingDependencies:
Fixes #
Type of change
Screenshots
Not applicable. This is camera post-processing and renderer/backend integration behavior.
Checklist
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there