415 lines
11 KiB
Markdown
415 lines
11 KiB
Markdown
<!-- Generated by SpecStory, Markdown v2.0.0 -->
|
||
|
||
<!-- cursor Session 4aeb7f9e-851f-4b2a-ae52-01c07b68e74f (2025-11-01 15:48Z) -->
|
||
|
||
# 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 data-tool-type="read" data-tool-name="read_file">
|
||
<details><summary>Tool use: **read_file** • Read file: c:\Program Files\Blender Foundation\Flamenco 3.7\scripts\TalkingHeads cycles_optix_gpu_NOBAT.js</summary>
|
||
|
||
</details>
|
||
</tool-use>
|
||
|
||
---
|
||
|
||
<tool-use data-tool-type="search" data-tool-name="codebase_search">
|
||
<details>
|
||
<summary>Tool use: **codebase_search** • Searched codebase "How are PNG images saved or written during rendering?" • **3** results</summary>
|
||
|
||
| File | Lines |
|
||
|------|-------|
|
||
| `.gitignore` | L134 |
|
||
| `.gitattributes` | L47 |
|
||
| `misc/checklist.txt` | L52 |
|
||
|
||
</details>
|
||
</tool-use>
|
||
|
||
---
|
||
|
||
|
||
|
||
---
|
||
|
||
Checking the render configuration and the corrupt file path for clues.
|
||
|
||
|
||
---
|
||
|
||
<tool-use data-tool-type="search" data-tool-name="codebase_search">
|
||
<details>
|
||
<summary>Tool use: **codebase_search** • Searched codebase "Where are render output files written or saved?" • **10** results</summary>
|
||
|
||
| 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 |
|
||
|
||
</details>
|
||
</tool-use>
|
||
|
||
---
|
||
|
||
<tool-use data-tool-type="grep" data-tool-name="grep">
|
||
<details>
|
||
<summary>Tool use: **grep** • Grep for "3_background" • 0 matches</summary>
|
||
|
||
Output mode: content
|
||
|
||
|
||
_No matches found_
|
||
|
||
</details>
|
||
</tool-use>
|
||
|
||
---
|
||
|
||
|
||
|
||
---
|
||
|
||
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 data-tool-type="read" data-tool-name="read_file">
|
||
<details><summary>Tool use: **read_file** • Read file: c:\Program Files\Blender Foundation\Flamenco 3.7\scripts\TalkingHeads cycles_optix_gpu_NOBAT.js</summary>
|
||
|
||
</details>
|
||
</tool-use>
|
||
|
||
---
|
||
|
||
|
||
|
||
---
|
||
|
||
## 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 data-tool-type="search" data-tool-name="codebase_search">
|
||
<details>
|
||
<summary>Tool use: **codebase_search** • Searched codebase "How are denoising passes or denoising data configured for rendering?" • **7** results</summary>
|
||
|
||
| 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 |
|
||
|
||
</details>
|
||
</tool-use>
|
||
|
||
---
|
||
|
||
<tool-use data-tool-type="grep" data-tool-name="grep">
|
||
<details>
|
||
<summary>Tool use: **grep** • Grep for "denois" • 0 matches</summary>
|
||
|
||
Output mode: content
|
||
|
||
|
||
_No matches found_
|
||
|
||
</details>
|
||
</tool-use>
|
||
|
||
---
|
||
|
||
<tool-use data-tool-type="grep" data-tool-name="grep">
|
||
<details>
|
||
<summary>Tool use: **grep** • Grep for "EXR|exr|OpenEXR" • 0 matches</summary>
|
||
|
||
Output mode: content
|
||
|
||
|
||
_No matches found_
|
||
|
||
</details>
|
||
</tool-use>
|
||
|
||
---
|
||
|
||
|
||
|
||
---
|
||
|
||
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 data-tool-type="read" data-tool-name="read_file">
|
||
<details><summary>Tool use: **read_file** • Read file: c:\Program Files\Blender Foundation\Flamenco 3.7\scripts\TalkingHeads cycles_optix_gpu_NOBAT.js</summary>
|
||
|
||
</details>
|
||
</tool-use>
|
||
|
||
---
|
||
|
||
|
||
|
||
---
|
||
|
||
Adding code to automatically enable denoising passes when rendering to EXR:
|
||
|
||
|
||
---
|
||
|
||
<tool-use data-tool-type="read" data-tool-name="read_file">
|
||
<details><summary>Tool use: **read_file** • Read file: c:\Program Files\Blender Foundation\Flamenco 3.7\scripts\TalkingHeads cycles_optix_gpu_NOBAT.js</summary>
|
||
|
||
</details>
|
||
</tool-use>
|
||
|
||
---
|
||
|
||
<tool-use data-tool-type="write" data-tool-name="search_replace">
|
||
|
||
<details><summary>Tool use: **code_edit** • Edit file: c:\Program Files\Blender Foundation\Flamenco 3.7\scripts\TalkingHeads cycles_optix_gpu_NOBAT.js</summary>
|
||
|
||
</details>
|
||
|
||
</tool-use>
|
||
|
||
---
|
||
|
||
_**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.
|
||
|
||
---
|
||
|