Regression: Eevee shader compilation error #98825
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Code Documentation
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Asset System
Module
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
8 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#98825
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
System Information
Operating system: Windows-10-10.0.19043-SP0 64 Bits
Graphics card: NVIDIA GeForce RTX 2060/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 511.79
Blender Version
Broken: version: 3.2.0, branch: master, commit date: 2022-06-08 10:22, hash:
e05e1e3691
Worked: version: 3.1.2, branch: master, commit date: 2022-03-31 17:40, hash:
cc66d1020c
Caused by
281bcc1c1d
Short description of error
Shader compilation of material in provided file was working correctly in 3.1.2, but fails to create material in 3.2 resulting in pink material while viewing in eevee
eevee 3.2 shader error.zip
Some notes:
Exact steps for others to reproduce the error
Open provided file. Texture on mesh is pink when showing in eevee, but renders correctly in cycles.
Removing various nodes from affected material like color, mix rgb, or color ramp doesn't seem to solve it. But once texture is removed, issue is gone. I have 9 UDIM textures there with 6 tiles each. Which results in 54 texture files. It seems that removing one UDIM texture from node tree lowering used files count to 48 is fixing the issue. Was there some limit introduced?
Worked on it a bit more in 3.1.2 and currently at 11 UDIM textures with 6 tiles each it still works. In 3.2 at this point I have to remove 3 textures to get below 9 as described above. SO if this is some limitation I'm hitting, it seems to be significant difference when going from 3.1.2 to 3.2
Added subscriber: @VGT
#100817 was marked as duplicate of this issue
Updated GPU drivers to NVIDIA 512.95 - same result.
Changed status from 'Needs Triage' to: 'Confirmed'
Added subscribers: @kevindietrich, @deadpin
@kevindietrich Seems like
281bcc1c1d
caused the issue here.Notes from a quick investigation:
It seems like there is some memory corruption, where
GPUCodegenCreateInfo.sampler_names
does not reallocate properly the name arrays when there is more than 16 samplers, which creates the very first error in the log (unexpected reserved word "layout"...
because the previous line is not finishedlayout(binding = 16) uniform sampler2DArray\n
). Increasing the default allocation size ofGPUCodegenCreateInfo.sampler_names
to 32 fixes this issue. However, there is still a shader compilation failure as we have more than 32 samplers (Error: C7612: profile doesn't support more than 32 samplers
).Added subscriber: @PratikPB2123
Eevee shader compilation errorto Regression: Eevee shader compilation errorAdded subscriber: @fclem
@kevindietrich My bad! For some reason I though
std::array
would be a container with a fixed storage. So for it to work we need to store the char array as one object. Using aunique_ptr
should do the trick.Added subscriber: @ThomasDinges
Blender 3.2.1 is scheduled for release soon. Any chance to fix this still? @fclem
This issue was referenced by
5b1a8a0e2f
This issue was referenced by
45fb7a1db5
Changed status from 'Confirmed' to: 'Resolved'
@fclem When opening provided file example in 3.2.1 shader is still pink, but error in window console is different - 32 samplers limit mentioned by @kevindietrich
Does this mean that because of internal changes to Eevee implemented for 3.2.0 it will not be possible to make it work as in 3.1?
Should I report 32 samplers limit as a separate bug in that case?
@VGT this limit is is just a limitation of the hardware/driver. It is not a bug.
@fclem in that case what has changed that it was working in 3.1.2?
@VGT that is a good question I'll investigate.
It may be caused by the manual indexing of samplers. In the past, the driver might have reused unused internal sampler slots so that more user textures can be used. Now that we rely on manual sampler location (for future vulkan compatibility), doing the same thing means doing it ourselves instead of letting the driver handle this.
Changed status from 'Resolved' to: 'Needs Developer To Reproduce'
@fclem Thank you for explaining this and committing to further investigation.
Added subscriber: @Thura
Fixed by #105772.