# 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 they’re 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:** 5. **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 6. **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)**_ --- Here’s 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 can’t 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 SheepIt’s 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 doesn’t disable denoising with splits. Test a single split frame first. ## Option 2: Lower samples + better denoising (recommended) Modern denoisers work well with fewer samples: - Reduce samples (e.g., 128–256 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 don’t need passes If render-time denoising doesn’t 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 doesn’t work or quality isn’t 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. ---