# 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.
---