Page MenuHome

Instance with scale of 0 are impacting performance
Closed, ArchivedPublic

Description

System Information
Operating system: Windows-10-10.0.19041-SP0 64 Bits
Graphics card: GeForce RTX 2080 Ti/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 452.06

Blender Version
Broken: version: 2.93.0 Alpha, branch: master, commit date: 2021-01-28 22:25, hash: rB92b0803f35a7

Short description of error
Particles with a scale of 0 are affecting performance

See slow downs example below

Event Timeline

Robert Guetzkow (rjg) changed the task status from Needs Triage to Needs Information from User.EditedJan 30 2021, 10:27 AM

I don't think this is a bug. Scaling it to zero doesn't stop it from affecting performance, this will still result in geometry being generated. Could you please explain a bit more what the goal is you're trying to achieve?

@Robert Guetzkow (rjg) Shouldn't blender simply ignore geometry with scale (0,0,0) ? it seems completely absurd that an object completely invisible is affecting performance right?

Having invisible objects slowing down performance may be frustrating for users not aware of this "issue" ?

@Robert Guetzkow (rjg) Shouldn't blender simply ignore geometry with scale (0,0,0) ? it seems completely absurd that an object completely invisible is affecting performance right?

Having invisible objects slowing down performance may be frustrating for users not aware of this "issue" ?

It's not absurd, that data still exists in the instance buffers and still goes through the pipeline. Not 100% sure on Cycles but for Eevee and Workbench: When batches of instances are submitted to be drawn by the GPU it doesn't need to know anything about their transforms in the world from the CPU point of view, it just points to a buffer of transforms, geometry and tells the GPU to draw x number of tris i number of times with a single draw call, everything unique about the instance is applied in the vertex shader by addressing into the buffer by the instance index. This is why drawing these instances are faster than drawing objects, which blender has to set up drawing for individually. The only performance saved from a scale of zero would likely be due to the fact they don't rasterize any pixels and don't have to execute the fragment shader, the vertex shader still has to happen regardless.

From a technical standpoint I completely understand, but from a user standpoint that might create a lot of confusion? Isn't it?
Couldn't geonode instancing node just skip elements with (0,0,0) scale attr?

Philipp Oeser (lichtwerk) closed this task as Archived.Feb 19 2021, 3:28 PM

This is not a bug.
I think there might even be scenarios where having those positions available is necessary (motionblur?)

Couldn't geonode instancing node just skip elements with (0,0,0) scale attr?

Not saying that this would not be possible at all, but this sounds more like a feature/optimization request than a bug.

Will close, thx reporting anyways.