CLAUDE: CuasRender MB compensation + conditionSceneToGpuCuas motion wrapper (ERS omegas/velocities)
Per Andrey: of the 3 expected render-vs-oracle mismatch causes, the legitimate
one is the better photometric calibration; the other two - ERS and motion
blur - must be implemented in the RT chain:
- ERS: NEW CuasConditioning.conditionSceneToGpuCuas(scene, cfg, omegas,
velocities, ...) - the ONE place per-scene motion enters the ingest. Sets
the scene ERS rates (fully-preserved ErsCorrection path); velocities =
provision ({0,0,0}/null for the rotation-only camera). In production the
omegas come analytically from wobble radius + RPM; the GPU corr_vector
imu_rot/imu_move feed is the future upgrade (after the double-application
check vs CPU pXpYD ERS). Legacy conditionSceneToGpu delegates (unchanged
behavior for the pose loop).
- MB: renderSceneVirtual takes mb_vectors/mb_tau/mb_max_gain; when enabled
uses the ORACLE machinery (setInterTasksMotionBlur two-task-set +
interCorrTDMotionBlur double convert: positive original + negative shifted
scale pair summing to 1, ratio from 1-pix-time/tau, offset stretched when
scales would exceed mb_max_gain). No erased re-convert in MB mode (would
destroy the accumulation) - comparisons must mask to task tiles.
- testRenderSequence: MB gated by imp.mb_en (matching the oracle DBG
products: ON -> compare vs MB DBG, OFF -> vs -NOMB DBG); vectors from the
same OpticalFlow.getMotionBlur at borrowed pose + stored rates; ingest via
the new wrapper.
Verified: mvn -DskipTests clean package OK.
Co-Authored-By:
Claude Fable 5 <noreply@anthropic.com>
Showing
This diff is collapsed.
Please register or sign in to comment