Files
2025-02-BondingArtifact/.specstory/history/2025-11-01_15-48Z-png-rendering-error-troubleshooting.md

13 KiB
Raw Permalink Blame History

PNG rendering error troubleshooting (2025-11-01 15:48Z)

User (2025-11-01 15:48Z)

why is this happening to render

libpng error: IDAT: CRC error

ImageInput::read_image() failed: PNG read error: IDAT: CRC error

PNG library error

IMB_load_image_from_memory: unknown file-format (R:\Creative\artsy\maya\2025-02 BondingArtifact\Renders\3_background\2025-10-26\3_background_dark\3_background_dark_5489.png)


Agent (model default, mode Agent)


Reviewing the open file to understand the render configuration and identify why PNGs are being corrupted.


Tool use: **read_file** • Read file: c:\Program Files\Blender Foundation\Flamenco 3.7\scripts\TalkingHeads cycles_optix_gpu_NOBAT.js

Tool use: **codebase_search** • Searched codebase "How are PNG images saved or written during rendering?" • **3** results
File Lines
.gitignore L134
.gitattributes L47
misc/checklist.txt L52


Checking the render configuration and the corrupt file path for clues.


Tool use: **codebase_search** • Searched codebase "Where are render output files written or saved?" • **10** results
File Lines
.gitignore L134
assets/Objects/gems/tx/BlackOnyx/Designer/BlackOnyx.sbs L3573-3642
misc/checklist.txt L52
misc/metadata.bat L23
misc/filenames.bat L1
.cursorindexingignore L3
.gitattributes L47
assets/Objects/gems/tx/BlackOnyx/Designer/BlackOnyx.sbs L1475-1533
misc/BRANDING.txt L2
assets/Objects/gems/tx/BlackOnyx/Designer/BlackOnyx.sbs L1976-2034

Tool use: **grep** • Grep for "3_background" • 0 matches

Output mode: content

No matches found



This PNG CRC error indicates the file was corrupted during render. The path R:\... suggests a network drive, which is a common source.

Common causes:

  • Network storage issues: timeouts, interruptions, or bad connections corrupt writes
  • Concurrent access: another process (comp, preview, antivirus) reading while a worker writes
  • Incomplete writes: file read before the write finishes
  • Antivirus/backup: scanning or copying files while theyre being written

Checking the render script for timing or synchronization issues:


Tool use: **read_file** • Read file: c:\Program Files\Blender Foundation\Flamenco 3.7\scripts\TalkingHeads cycles_optix_gpu_NOBAT.js


Solutions to fix this:

Immediate fixes:

  1. Check if the file is actually corrupted

    • Verify frame 5489 on the R: drive
    • If corrupted, re-render just that frame
  2. Render to local storage first, then copy

    • Change the render output to a local drive (C: or D:)
    • After rendering completes, copy to the network drive
    • Reduces corruption risk from network interruptions
  3. Increase chunk_size

    • In your Flamenco job settings, increase chunk_size (currently defaults to 1)
    • Fewer concurrent writes = less contention
  4. Temporarily disable antivirus/backup scanning

    • Exclude the render output folder from real-time scanning
    • Network drives are often scanned aggressively

Network storage specific:

  1. Check network drive health

    • Test the R: drive connection stability
    • Run chkdsk R: /f if it's accessible
    • Check for network timeouts or packet loss
  2. Add file write delay/sync

    • If possible, configure Blender to flush writes completely before finishing
    • Use --python-expr to add a small delay after rendering completes

For the current corrupted frame:

The file 3_background_dark_5489.png is corrupted. Either:

  • Re-render frame 5489 specifically, or
  • Skip it and continue (if it's not critical)

Should I help modify the Flamenco script to render to a local directory first, or focus on diagnosing the network storage issue?


User (2025-11-02 23:49Z)

How do I ensure my image can be denoised without rendering in future? Can saving as EXR fix it?


Agent (model default, mode Agent)


Checking how denoising and output formats are configured. Reviewing the render script for format/pass options and searching the codebase for denoising-related settings.


Tool use: **codebase_search** • Searched codebase "How are denoising passes or denoising data configured for rendering?" • **7** results
File Lines
misc/checklist.txt L52
assets/Objects/gems/tx/BlackOnyx/Designer/BlackOnyx.sbs L3573-3642
.gitignore L134
assets/Objects/gems/tx/BlackOnyx/Designer/BlackOnyx.sbs L1431-1479
assets/Objects/gems/tx/BlackOnyx/Designer/BlackOnyx.sbs L73
.gitattributes L47
assets/Objects/gems/tx/BlackOnyx/Designer/BlackOnyx.sbs L1858-1925

Tool use: **grep** • Grep for "denois" • 0 matches

Output mode: content

No matches found


Tool use: **grep** • Grep for "EXR|exr|OpenEXR" • 0 matches

Output mode: content

No matches found



EXR can enable post-render denoising, but you need to enable the denoising passes when rendering.

  • EXR stores multiple passes/layers in one file (denoising data, beauty, etc.)
  • EXR stores 32-bit float data (vs 8-bit PNG), preserving detail
  • PNG cannot store denoising passes, so denoising later isn't possible

Updating the render script to automatically enable denoising passes when EXR is selected:


Tool use: **read_file** • Read file: c:\Program Files\Blender Foundation\Flamenco 3.7\scripts\TalkingHeads cycles_optix_gpu_NOBAT.js


Adding code to automatically enable denoising passes when rendering to EXR:


Tool use: **read_file** • Read file: c:\Program Files\Blender Foundation\Flamenco 3.7\scripts\TalkingHeads cycles_optix_gpu_NOBAT.js

Tool use: **code_edit** • Edit file: c:\Program Files\Blender Foundation\Flamenco 3.7\scripts\TalkingHeads cycles_optix_gpu_NOBAT.js

User (2025-11-02 23:49Z)

Don't edit anything. just tell me what I should set my render settings to.


Agent (model default, mode Agent)


Heres what to set in Blender so you can denoise later:

Render settings

1. Output format

  • Output Properties tab → Output section
  • Set File Format to OpenEXR or OpenEXR Multilayer
  • OpenEXR Multilayer is better if you need multiple passes later

2. Enable denoising passes

  • Output Properties tab → View Layer Properties → Passes section
  • Enable:
    • Denoising Normal
    • Denoising Albedo
    • Denoising Shadow (optional, helps quality)

3. Cycles denoising (during render)

  • Render Properties tab → Denoising section
  • Denoiser: OpenImageDenoise (or OptiX if on NVIDIA)
  • Enable Denoising
  • If using Passes → Data:
    • Enable Normal
    • Enable Albedo (optional if not using denoising passes)

4. Render passes to save

  • View Layer Properties → Passes → Data:
    • Enable Normal
    • Enable Albedo (if you want them as separate passes)
  • With OpenEXR Multilayer, passes are stored as layers in the file

Why this works

  • EXR stores all passes in one file
  • 32-bit float preserves detail
  • Denoising Normal/Albedo passes let you re-denoise later
  • You can denoise post-render in Compositor or with external tools

After rendering

You can re-denoise later:

  • In Blender Compositor: load the EXR, use Denoise node with the passes
  • Or keep render denoising off during render and denoise entirely in post

Note: PNG cannot store denoising passes, so you cant re-denoise PNG renders later. EXR is required for this workflow.


User (2025-11-02 23:49Z)

So, when I send to sheepit, denoising will be disabled if I use the tiling option (which splits the frame into 2x2, 3x3, 4x4, or 6x6 so multiple workers can render one frame simultaneously, then they are combined) but I need to denoise it because the results are so noisy.


Agent (model default, mode Agent)


For SheepIt with tiling, you can't denoise during rendering (denoising needs the full frame), but you can denoise the combined EXR frames afterward if you save the required passes.

Render settings for SheepIt + tiling

1. Output format

  • File Format: OpenEXR Multilayer (or OpenEXR)
  • Required so denoising passes are saved per tile and combined

2. View Layer passes (critical)

  • View Layer Properties → Passes → Data:
    • Enable Denoising Normal
    • Enable Denoising Albedo
    • Enable Denoising Shadow (recommended)
  • View Layer Properties → Passes → Combined:
    • Enable Denoising Data (if available; some versions)

3. Cycles render settings

  • Render Properties → Denoising:
    • Denoiser: OpenImageDenoise (or OptiX if available)
    • Keep Denoising enabled in settings
  • Note: With tiling, denoising won't run during render, but passes will still be saved.

4. After SheepIt combines tiles

You'll have EXR files with:

  • Combined beauty pass (noisy)
  • Denoising Normal pass
  • Denoising Albedo pass
  • Denoising Shadow pass (if enabled)

Denoise the combined frames

Option A: Blender Compositor

  1. Open a combined EXR in Image Editor or Compositor
  2. Use Denoise node:
    • Connect Combined (beauty)
    • Connect Denoising Normal
    • Connect Denoising Albedo
    • Optionally connect Denoising Shadow
  3. Export the denoised result

Option B: External tools

  • OIDN (OpenImageDenoise CLI)
  • GIMP (with EXR support)
  • Natron or other compositing software

Summary

  • Render EXR with Denoising Normal, Denoising Albedo (and Shadow if available)
  • Tiles will combine these passes into full-frame EXRs
  • Denoise the combined EXRs in post using those passes

This way you get fast tiled rendering on SheepIt and clean denoised results afterward.


User (2025-11-03 07:09Z)

Ach, looks like I can't render splits. this makes splits kind of useless for me... so I can't send this blend with such high samples because it's so long that each machine doesn't get it, but if I split it, I'll just have to denoise it after anyway... is there a better solution for denoising than the compositing solution I devised?


Agent (model default, mode Agent)


Given SheepIts EXR restriction (no splits), here are practical alternatives:

Option 1: Render with splits in PNG + enable render-time denoising

  • Render to PNG (splits allowed)
  • In Cycles: enable Denoising (OpenImageDenoise or OptiX)
  • Denoising should run per tile during render
  • Result: already denoised when tiles combine

Note: Verify that SheepIt/Blender doesnt disable denoising with splits. Test a single split frame first.

Modern denoisers work well with fewer samples:

  • Reduce samples (e.g., 128256 instead of 1000+)
  • Keep denoising enabled during render
  • Render to PNG with splits enabled
  • Benefits: faster renders, workers complete tasks, denoised output

Option 3: AI denoisers that dont need passes

If render-time denoising doesnt work with splits, use standalone denoisers:

  • Neat Video (plugin for Premiere/AE/Resolve)
  • Topaz DeNoise AI
  • Adobe Lightroom/Photoshop AI Denoise

Trade-off: No denoising passes needed, but single-pass input only.

Option 4: Hybrid two-pass workflow

If you need high samples:

  1. Pass 1: Render beauty only with splits (PNG), high samples
  2. Pass 2: Render denoising passes (Normal/Albedo) full-frame, low samples, EXR
  3. Composite: Combine passes in Blender Compositor and denoise

Downside: Two renders, more work.

Recommendation

Try Option 1 first: PNG + splits + render-time denoising enabled. If that doesnt work or quality isnt enough, use Option 2 (lower samples + denoising). The quality difference with modern denoisers is often minimal, and render time drops significantly.

If you can share sample count and resolution, I can suggest specific settings.