Huge viewport performance difference between the instances from the particle system and the geometry nodes instances #92862
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
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, Assets & 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
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
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
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
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
6 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#92862
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
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
Graphics card: RTX 2070
Blender Version
Broken:
e7e3431b29
There is a huge viewport interaction speed difference with these two types of instancing methods. The same setup from the geometry nodes setup drops the viewport interactivity speed and the playback FPS more than half.
The scene below is using the vertices as instancing locations so the number of instances should be the same between the methods.
See the video please
XZXe68juul.mp4
Exact steps for others to reproduce the error
Load the attach .blend
Select the plane
Enable those individual modifiers and compare the viewport interactivity and the playback speed
gn_05112021_1205_44.blend
Added subscriber: @kursadk
Huge viewport performance difference between instances from the particle system and from the geometry nodes instancesto Huge viewport performance difference between the instances from the particle system and from the geometry nodes instancesHuge viewport performance difference between the instances from the particle system and from the geometry nodes instancesto Huge viewport performance difference between the instances from the particle system and the geometry nodes instancesAdded subscriber: @Bradley_G
I've run a test on my side as well. Due to my laptop limitation I have to change some settings.
But I've made sure that counts of fps really matches in both GN and hair system. This is confirmed with viewport statistics and spreadsheet.
Here's my conclusion:
"As Instance" option in "object info" node is making a difference. This sounds to be weird, because instances aren't realized at the end.
[BUG TEST].mp4
I've realized that in the file the cone has 17k vertices.
that's why I can only instance about 2000 objects for blender run smoothly.
If I am using a default cone, I can instance as many as 60k instances and even more (it's hard to tell the vertices count since statistic won't show it)
In such a case, whether "As Instance" is checked or not, GN's performance is better than hair (12 fps Vs. 10 fps)
I made the cone as an high poly object to demonstrate the issue, in regular cases this issue is not as visible.
But in essence this issue is not relevant to difference between particle system and Geometry Nodes.
This issue stems in "As Instance", in which you just turn it on or off you can see the difference.
Considering what "Object Info" node is doing. I am not really sure if this should be called a bug or not. will need to wait dev to define it.
I've simplify the file and update a new demonstration now.
AS INSTANCE.blend
AS INSTANCE.mp4
Added subscriber: @3di
maybe these test files will be helpful. They indicate the issue isn't just with loading the large object each frame, as the performance is severely hit even when navigating the viewport when the timeline isn't playing:
instance performance legacy vs geo.zip
@Bradley_G
This issue becomes a horrible mess when using the Collection Info node. It seems like that node is not outputting instances, so the speed difference between the particle system and the geometry nodes is very evident when one using collections as the instance sources.
EDIT:
The issue below seems to be a separate issue related to instancing objects with existing particle systems
Also even with enabling instancing in the object node is not a real match for particle systems when one is using very dense objects as the instancing source. Try using something like a tree object as instance type in geometry node. The particle system is at least 15-25 times faster in the viewport in real life production setups like setting up a forest or a jungle.
I have a production scene setup here (see the image). I can easily navigate around with the particle system setup. On the other hand it takes more than half a minute to rotate the viewport with the geometry nodes one.
The "as instance" option in the object node definitely makes a big difference but with low to mid-range complexity scenes.
Added subscriber: @lichtwerk
Changed status from 'Needs Triage' to: 'Needs User Info'
Looking at older reports (sorry this has been lying around for quite some time).
instance performance legacy vs geo.zip
in 3.2alphalegacy dupli vert instancing
andgeo nodes instancing (as instancing checked)
geo nodes instancing (as instancing un-checked)
: yep that one is really slow, not sure this is expectedhttps://docs.blender.org/manual/en/dev/modeling/geometry_nodes/input/object_info.html
Is not really entirely clear to me either, since we are instancing a geometry object type in the example, this sounds like it should not make a difference?
This I cannot reproduce, at least in 3.2 putting the single Suzanne in its own collection will yield similar performance.
Do you mean this is an issue with multiple objects in a collection?
Can you share such an example file?
@lichtwerk
The performance issue comes to surface when one instances dense objects like complicated trees (dense branches with leaves etc) over a large terrain. You won't be able to hit this issue with primitives and such.
I am not sure what the collection node outputs. It seemed like it was outputting regular objects not instances when I provided a collection with mixed bunch. What is a good way to test if a node is outputting instances or not? This is easy with the regular object node since it provides an option to output an instance instead of a regular object.
Changed status from 'Needs User Info' to: 'Needs Triage'
Changed status from 'Needs Triage' to: 'Needs User Info'
Not sure at which point this kicks in, it would be really handy to have an example .blend file to see a clear difference of legacy/duplivert instancing vs. goenodes instancing.
Think it outputs instances (single or multiple -- depending on the
Separate Children
option)You can check in the spreadsheet:
{F12957014 size=full}
Added subscriber: @PetterLundh
Added subscriber: @HooglyBoogly
Thanks for the investigation everyone. These are basically known issues with the code, which we already have a task for, so I'll merge this there.
Closed as duplicate of #92963