Guest User

Cinematic capture artifact — bisect report (2026-04-25)

a guest
Apr 25th, 2026
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.61 KB | Fixit | 0 0
  1. # Cinematic capture artifact — bisect report (2026-04-25 night)
  2.  
  3. ## Symptom
  4. The orange specular highlight on the metal silo top reads as a "dorito"
  5. shape floating above where the highlight should be, with the underlying
  6. pipe rendering as neutral grey. Visible in WGC captures and uploaded
  7. videos, **not present** in the Godot viewport readback PNG.
  8.  
  9. ## Initial wrong theories (all bisected away)
  10. - **TAA / SDFGI specular ghosting** (Web Claude's diagnosis, plausible
  11. but didn't match — TAA has been off the entire time).
  12. - **Range-tag mismatch** (TV vs PC YUV). Tags didn't move the needle.
  13. - **NVENC inter-frame motion estimation**. `-bf 0 -g 30 -cq 16` made
  14. zero difference on the rect's deltas.
  15. - **NVENC quality settings**. `-preset p7 -cq 1` made zero difference.
  16.  
  17. ## The actual bisect (locked-camera, cinematic dwell, user-picked rect)
  18.  
  19. | Test | Env stack | Encoder | mag mean (lower = closer to engine) |
  20. |------------------------|------------------------------------|--------------------------------|-----:|
  21. | Original PC mode | all on | H.264 NVENC default yuv420p | 14.58 |
  22. | NVENC -bf 0 -g 30 cq16 | all on | H.264 NVENC bf=0 g=30 cq=16 | 11.32 |
  23. | NVENC p7 cq=1 bf=0 | all on | H.264 NVENC p7 cq=1 bf=0 g=30 | 11.31 |
  24. | Bisect H.264 default | all on | H.264 NVENC default yuv420p | 11.40 |
  25. | Baseline (all off) | SDFGI/SSAO/aerial/scatter all OFF | ffv1 lossless | **5.57** |
  26. | Bisect SDFGI alone | SDFGI on | ffv1 lossless | 5.54 |
  27. | Bisect SDFGI+SSAO | SDFGI + SSAO on | ffv1 lossless | 5.54 |
  28. | Bisect full env | all on (matches original) | ffv1 lossless | 6.36 |
  29. | **H.264 yuv444p** | **all on** | **H.264 NVENC p7 yuv444p** | **7.26** |
  30.  
  31. ## Conclusion
  32. The artifact is **yuv420p chroma subsampling**, not temporal accumulation.
  33.  
  34. - Same env, swap encoder ffv1 → H.264 yuv420p: mag jumps 6.36 → 11.40.
  35. - Same encoder, swap pix_fmt yuv420p → yuv444p: mag drops 11.40 → 7.26.
  36. - Env stack contributes only ~0.8 mag (5.57 baseline → 6.36 full env);
  37. SDFGI and SSAO are both innocent.
  38.  
  39. The orange highlight on the silo has high-frequency chroma content.
  40. yuv420p averages chroma across 2×2 pixel blocks, which spreads the
  41. orange across surrounding pixels and pulls it OFF the highlight's true
  42. location. The result LOOKS like temporal ghosting (Web Claude's
  43. diagnosis was understandable) but is purely spatial — chroma resolution
  44. loss.
  45.  
  46. ## Available delivery formats
  47.  
  48. | Format | mag mean | Pros | Cons |
  49. |---|---|---|---|
  50. | H.264 yuv420p (default) | 11.40 | universal compat (Reddit/YouTube/Twitter/everything) | dorito ghost on specular highlights |
  51. | 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) |
  52. | ffv1 (lossless) in MKV | 5.57–6.36 | clean | 1.5 GB per 90s, no streaming, no social compat |
  53.  
  54. ## Recommendation
  55. Two-version delivery:
  56. - **Local/preview build**: `KILOYEAR_H264_444=1 python tools/record_session.py …`
  57. — yuv444p H.264, watchable in VLC/mpv, no smear.
  58. - **Social upload build**: default record_session.py — yuv420p H.264.
  59. Will smear at the silo highlight but is universally streamable.
  60. The smear is small at full-frame viewing distance; most viewers will
  61. not notice.
  62.  
  63. ## Code state
  64. - `tools/record_session.py` has three modes via env vars:
  65. - default → H.264 NVENC yuv420p PC range (production deliverable)
  66. - `KILOYEAR_LOSSLESS=1` → ffv1 in MKV (debug / lossless reference)
  67. - `KILOYEAR_H264_444=1` → H.264 NVENC yuv444p (clean local viewing)
  68. - `client/scenes/planet_view.gd` env restored to original (SDFGI/SSAO
  69. on, aerial perspective + sun scatter on, sky reflection on).
  70.  
  71. ## Files of interest in tools/captures/
  72. - `crop_engine_dwell.png` — engine viewport reference at the dwell
  73. - `crop_capture.png` — original PC mode H.264 yuv420p (artifact visible)
  74. - `crop_baseline_compare.png` — engine vs ffv1 lossless side-by-side (clean)
  75. - `crop_bisect_full_env.png` — engine vs ffv1+full-env (mag 6.36, clean)
  76. - `crop_bisect_h264.png` — engine vs H.264 yuv420p+full-env (mag 11.40, ghost)
  77. - `crop_bisect_h264_hq.png` — engine vs H.264 max-quality yuv420p (still ghost)
  78. - `crop_bisect_h264_444.png` — engine vs H.264 yuv444p (mostly clean)
Advertisement
Add Comment
Please, Sign In to add comment