Random Per Island working incorrectly with sharp edges and volumes #72284
Operating system: Linux-5.0.0-36-generic-x86_64-with-debian-buster-sid 64 Bits
Graphics card: TITAN X (Pascal)/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 430.50
Broken: version: 2.82 (sub 4), branch: master, commit date: 2019-12-07 19:38, hash:
Short description of error
Random Per Island not working correctly with sharp edges or volumes.
Exact steps for others to reproduce the error
- Create Cube
- Add Bevel Modifier with Harden Normals
- Set Smooth Shading
- Set Auto Smooth
- Random Per Island is affected incorrectly by sharp edges, even after applying Bevel modifier
- Create cube (or array of objects)
- Create volume shader
- Assign Random Per Island to volume shader
- No random colors
I have the same problem with blender v2.82.6
Add Bevel Modifier with Harden Normals
Set Smooth Shading
Set Auto Smooth On Angle to 30
Random Per Island is affected incorrectly by sharp edges, even after applying Bevel modifier or weld modifier
Hm, not sure if there is a good fix for that. It seems that Blender splits edges apart when the Auto Smooth option is used.
I am not sure, I haven't seen anything in the code that indicates that.
This is more of a limitation of attributes and auto-smooth in Cycles. This affects pointiness and random-per-island, but also motion blur to some extent.
Ideally, attributes for those featured would be calculated prior to auto-smooth is applied and then copied over to a newly created vertices.
There isn't really simple solution, so will consider this a known limitaiton of the system which will be eventually resolved. See the developer note below.
More in-dept developer note.
This is actually how Cycles was initially dealing with attributes: it was creating them for vertices/faces and only after this it was splitting sharp edges. Tricky thing is, the way how Cycles splits edges need to match the way how Blender does it and with an addition of custom normals this became more and more problematic. Eventually, the sharp edge split was left to a Blender side, so then all areas are doing it exactly the same (modifier stack, viewport, Cycles render).
From possible ways to solve the issue I see:
- Move pointiness and random-per-island attributes to Blender side, calculated prior to sharp edge split. This will additionally make it possible to use those attributes in Eevee, yay!
- Add a version of sharp edge split utility which will only tag edges which are to be split. This will allow Cycles to use same splitting rules as the rest of Blender, but will allow Cycles to keep track of its attributes.
Changed status from 'Needs Triage' to: 'Confirmed'
Yes, I'm having the same problem. This needs to be fixed, specially because even after we apply the bevel, it continues broken.
Really, it is the Auto Smooth splitting the edges.
also check this file:
I only add suzanne, activated auto smooth and applied random per island.
Also, why Bevel modifier doesn't use the same method as Weighted Normals? Weighted Normal doesn't splits the edges (at least when Keep Sharp is off).
Bevel could use Weighted Normal under the hood, but feeding it with the new created faces. Well, I'm only a user, not a developer, so maybe i'm wrong.
At a minimum, perhaps a note could be added to the Geometry Node documentation so that users will know of this limitation.
the volume never worked and as it says in the documentation that most the inputs of the geometry node doesn't work for volumes
Would it be possible to consider using geometry groups to auto-generate this? That is, so that temporary nodes would be created, executed and their result used in the render. Then, it would also allow working versions of implementations of this from geometry nodes to be reused.
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?