Page MenuHome

Geometry Nodes: Assert adding another modifier (with object/collection info node and attribute sample texture node present)
Confirmed, NormalPublicBUG

Description

System Information
Operating system: Linux-5.10.12-200.fc33.x86_64-x86_64-with-glibc2.32 64 Bits
Graphics card: GeForce GTX 970M/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 455.45.01

Blender Version
Broken: version: 2.93.0 Alpha, branch: master, commit date: 2021-02-22 12:28, hash: rB4577ccc60337
Worked: never

Short description of error
Geometry Nodes: Assert adding another modifier (with object/colection info node and attribute sample texture node present)

Exact steps for others to reproduce the error

  • In a Debug build:
  • Open File
  • Add another modifier to the stack (e.g.Displace)

--> Assert

BLI_assert failed: source/blender/blenkernel/intern/attribute_access.cc:1969, attribute_domain_size(), at 'domain == ATTR_DOMAIN_POINT'

Event Timeline

Philipp Oeser (lichtwerk) renamed this task from Geometry Nodes: Assert adding another modifier (with object/colection info node and attribute sample texture node present) to Geometry Nodes: Assert adding another modifier (with object/collection info node and attribute sample texture node present).Mon, Feb 22, 3:29 PM
Philipp Oeser (lichtwerk) changed the task status from Needs Triage to Confirmed.
Philipp Oeser (lichtwerk) created this task.
Hans Goudey (HooglyBoogly) changed the subtype of this task from "Report" to "Bug".EditedMon, Feb 22, 4:37 PM

I can confirm this, it's trying to add an attribute on the corner domain to the output pointcloud, which obviously isn't correct. Two related problems that need fixing:

  1. The join node and the realize instances code need to use a separate offset for every domain, so that it can output to multiple domains properly. Actually no, we handle each attribute separately, so only one output domain at a time.
  2. The realize instances code needs to keep track of attributes separately for every geometry component to avoid adding attributes from input meshes to pointclouds, etc. Actually we handle every component individually here too.

EDIT: My comment is completely wrong, we just need to remove the assert probably, otherwise you have to check if the component has the domain every time.