Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Cinematic capture artifact — bisect report (2026-04-25 night)
- ## Symptom
- The orange specular highlight on the metal silo top reads as a "dorito"
- shape floating above where the highlight should be, with the underlying
- pipe rendering as neutral grey. Visible in WGC captures and uploaded
- videos, **not present** in the Godot viewport readback PNG.
- ## Initial wrong theories (all bisected away)
- - **TAA / SDFGI specular ghosting** (Web Claude's diagnosis, plausible
- but didn't match — TAA has been off the entire time).
- - **Range-tag mismatch** (TV vs PC YUV). Tags didn't move the needle.
- - **NVENC inter-frame motion estimation**. `-bf 0 -g 30 -cq 16` made
- zero difference on the rect's deltas.
- - **NVENC quality settings**. `-preset p7 -cq 1` made zero difference.
- ## The actual bisect (locked-camera, cinematic dwell, user-picked rect)
- | Test | Env stack | Encoder | mag mean (lower = closer to engine) |
- |------------------------|------------------------------------|--------------------------------|-----:|
- | Original PC mode | all on | H.264 NVENC default yuv420p | 14.58 |
- | NVENC -bf 0 -g 30 cq16 | all on | H.264 NVENC bf=0 g=30 cq=16 | 11.32 |
- | NVENC p7 cq=1 bf=0 | all on | H.264 NVENC p7 cq=1 bf=0 g=30 | 11.31 |
- | Bisect H.264 default | all on | H.264 NVENC default yuv420p | 11.40 |
- | Baseline (all off) | SDFGI/SSAO/aerial/scatter all OFF | ffv1 lossless | **5.57** |
- | Bisect SDFGI alone | SDFGI on | ffv1 lossless | 5.54 |
- | Bisect SDFGI+SSAO | SDFGI + SSAO on | ffv1 lossless | 5.54 |
- | Bisect full env | all on (matches original) | ffv1 lossless | 6.36 |
- | **H.264 yuv444p** | **all on** | **H.264 NVENC p7 yuv444p** | **7.26** |
- ## Conclusion
- The artifact is **yuv420p chroma subsampling**, not temporal accumulation.
- - Same env, swap encoder ffv1 → H.264 yuv420p: mag jumps 6.36 → 11.40.
- - Same encoder, swap pix_fmt yuv420p → yuv444p: mag drops 11.40 → 7.26.
- - Env stack contributes only ~0.8 mag (5.57 baseline → 6.36 full env);
- SDFGI and SSAO are both innocent.
- The orange highlight on the silo has high-frequency chroma content.
- yuv420p averages chroma across 2×2 pixel blocks, which spreads the
- orange across surrounding pixels and pulls it OFF the highlight's true
- location. The result LOOKS like temporal ghosting (Web Claude's
- diagnosis was understandable) but is purely spatial — chroma resolution
- loss.
- ## Available delivery formats
- | Format | mag mean | Pros | Cons |
- |---|---|---|---|
- | H.264 yuv420p (default) | 11.40 | universal compat (Reddit/YouTube/Twitter/everything) | dorito ghost on specular highlights |
- | H.264 yuv444p (high444p profile) | 7.26 | most artifact gone, MP4 container | limited browser support, social media re-encoders WILL re-transcode to yuv420p (artifact returns on Reddit etc) |
- | ffv1 (lossless) in MKV | 5.57–6.36 | clean | 1.5 GB per 90s, no streaming, no social compat |
- ## Recommendation
- Two-version delivery:
- - **Local/preview build**: `KILOYEAR_H264_444=1 python tools/record_session.py …`
- — yuv444p H.264, watchable in VLC/mpv, no smear.
- - **Social upload build**: default record_session.py — yuv420p H.264.
- Will smear at the silo highlight but is universally streamable.
- The smear is small at full-frame viewing distance; most viewers will
- not notice.
- ## Code state
- - `tools/record_session.py` has three modes via env vars:
- - default → H.264 NVENC yuv420p PC range (production deliverable)
- - `KILOYEAR_LOSSLESS=1` → ffv1 in MKV (debug / lossless reference)
- - `KILOYEAR_H264_444=1` → H.264 NVENC yuv444p (clean local viewing)
- - `client/scenes/planet_view.gd` env restored to original (SDFGI/SSAO
- on, aerial perspective + sun scatter on, sky reflection on).
- ## Files of interest in tools/captures/
- - `crop_engine_dwell.png` — engine viewport reference at the dwell
- - `crop_capture.png` — original PC mode H.264 yuv420p (artifact visible)
- - `crop_baseline_compare.png` — engine vs ffv1 lossless side-by-side (clean)
- - `crop_bisect_full_env.png` — engine vs ffv1+full-env (mag 6.36, clean)
- - `crop_bisect_h264.png` — engine vs H.264 yuv420p+full-env (mag 11.40, ghost)
- - `crop_bisect_h264_hq.png` — engine vs H.264 max-quality yuv420p (still ghost)
- - `crop_bisect_h264_444.png` — engine vs H.264 yuv444p (mostly clean)
Advertisement
Add Comment
Please, Sign In to add comment