Mesh modeling performance regressions #57936

Open
opened 2018-11-19 14:10:25 +01:00 by Brecht Van Lommel · 63 comments

List of performance issues that we would like to fix or investigate for 2.80:

  • Transforming vertices in edit mode on high poly meshes is slow, due to overhead of depsgraph, mesh updates and and batch creation. Verify if there is anything unexpected happening here.
  • BMesh to mesh conversion was happening all the time at some point, is this still the case? See check_rendered_viewport_visible, it now always happens when a 3D viewport is visible, and could be quite problematic for edit mode performance.
  • Verify if custom data is only being preserved through modifier stack when needed (vertex colors, vertex groups, UVs)
  • Manipulate modal callback performance may be problematic: #55458
List of performance issues that we would like to fix or investigate for 2.80: * Transforming vertices in edit mode on high poly meshes is slow, due to overhead of depsgraph, mesh updates and and batch creation. Verify if there is anything unexpected happening here. * BMesh to mesh conversion was happening all the time at some point, is this still the case? See check_rendered_viewport_visible, it now always happens when a 3D viewport is visible, and could be quite problematic for edit mode performance. * Verify if custom data is only being preserved through modifier stack when needed (vertex colors, vertex groups, UVs) * Manipulate modal callback performance may be problematic: #55458
Author
Owner

Added subscriber: @brecht

Added subscriber: @brecht

#67972 was marked as duplicate of this issue

#67972 was marked as duplicate of this issue

#54702 was marked as duplicate of this issue

#54702 was marked as duplicate of this issue

Added subscriber: @KINjO

Added subscriber: @KINjO

Added subscriber: @rdnmnm

Added subscriber: @rdnmnm

This comment was removed by @rdnmnm

*This comment was removed by @rdnmnm*

Added subscriber: @ostry

Added subscriber: @ostry

Added subscriber: @ixd

Added subscriber: @ixd

Added subscriber: @zappedfish

Added subscriber: @zappedfish

Added subscriber: @kioku

Added subscriber: @kioku
Sergey Sharybin was assigned by Brecht Van Lommel 2019-04-12 08:15:02 +02:00
Member

Added subscriber: @Stefan_Werner

Added subscriber: @Stefan_Werner

Added subscriber: @lastrodamo

Added subscriber: @lastrodamo

Added subscriber: @Regnas

Added subscriber: @Regnas

Funny, turning off overlays increases performance in edit mode a little bit, why is that?

Funny, turning off overlays increases performance in edit mode a little bit, why is that?
Author
Owner

Because there's fewer things to draw then, that's expected.

Because there's fewer things to draw then, that's expected.

Added subscriber: @RainerTrummer

Added subscriber: @RainerTrummer

Added subscriber: @lemenicier_julien

Added subscriber: @lemenicier_julien
Member

Added subscriber: @oenvoyage

Added subscriber: @oenvoyage

Added subscriber: @0o00o0oo

Added subscriber: @0o00o0oo

Added subscriber: @MeshVoid

Added subscriber: @MeshVoid

Added subscriber: @VladimirTurcan

Added subscriber: @VladimirTurcan

Added subscriber: @LucasVeber

Added subscriber: @LucasVeber
Member

Added subscriber: @zhanghua

Added subscriber: @zhanghua

Looked into Custom Data layers.

Layers which are dependent on am modifier stack (like deform groups) are not preserved if they are not needed. So this part is good.

However, the UVs and vertex colors are always preserved. This is actually the same in Blender 2.7, so i see potential being more memory efficient than 2.7.

Looked into Custom Data layers. Layers which are dependent on am modifier stack (like deform groups) are not preserved if they are not needed. So this part is good. However, the UVs and vertex colors are always preserved. This is actually the same in Blender 2.7, so i see potential being more memory efficient than 2.7.

Added subscriber: @ArtemBataev

Added subscriber: @ArtemBataev

Added subscriber: @R_dva

Added subscriber: @R_dva

Added subscriber: @JonDoe286

Added subscriber: @JonDoe286

Added subscriber: @heini

Added subscriber: @heini

Added subscriber: @TodorNikolov

Added subscriber: @TodorNikolov

Added subscriber: @Ace_Dragon

Added subscriber: @Ace_Dragon

Hi.

Is there any reason for the decision to not fix these regressions for the 2.8 final release? Unless the solutions are more complex than we users think they are, it seems like an unforced error that really dampens what would otherwise be a truly major milestone.

Hi. Is there any reason for the decision to not fix these regressions for the 2.8 final release? Unless the solutions are more complex than we users think they are, it seems like an unforced error that really dampens what would otherwise be a truly major milestone.
Author
Owner

Further performance improvements are more complex than you think, that's exactly the reason they will be for later releases.

Further performance improvements are more complex than you think, that's exactly the reason they will be for later releases.

Added subscriber: @SergienkoEugene

Added subscriber: @SergienkoEugene

Added subscriber: @AndreyRusnak

Added subscriber: @AndreyRusnak

Added subscriber: @machieb

Added subscriber: @machieb

I´ve tested the different render possibilities in blender and compared blender 2.79b with blender 2.80 5f140e61c2.
It´s the same scene in blender 2.79b and blender 2.80.

Blender 2.79b

CPU(AMD Threadripper 1950X 16Cores)
bmw27_cpu.blend (tiles 32x32) 01:20.53
bmw27_cpu_denoise.blend (tiles 32x32)01:24.32
2xGPU (Geforce Gtx 1080 Ti 11GB / Geforce Titan X 12GB)
bmw27_gpu.blend (tiles 240x180) 01:09.15
bmw27_gpu_denoise.blend (tiles 240x180) with denoise 01:12.15
GPU (Geforce Gtx 1080 Ti 11GB)
bmw27_gpu.blend (tiles 240x180) 02:01.35
bmw27_gpu_denoise.blend (tiles 240x180) with denoise 02:05.07

Blender 2.805f140e61c2CPU (AMD Threadripper 1950X 16Cores)
bmw27_cpu.blend (tiles 32x32) 01:46.65
bmw27_cpu_denoise.blend (tiles 32x32) 01:51.20
2xGPU (Geforce Gtx 1080 Ti 11GB / Geforce Titan X 12GB)
bmw28_gpu.blend (tiles 32x32) 00:34.24
bmw28_gpu_denoise.blend (tiles 32x32) with denoise 00:40.69
GPU (Geforce Gtx 1080 Ti 11GB)
bmw27_gpu.blend (tiles 32x32) 00:49.69
bmw27_gpu.blend (tiles 32x32) with denoise 00:55.06
CPU+GPU (AMD Threadripper 1950X 16Cores + Geforce Gtx 1080 Ti 11GB / Geforce Titan X 12GB)
bmw28_gpu_cpu.blend (tiles 16x16) 00:30.40
bmw28_gpu_cpu_denoise.blend (tiles 16x16) with denoise 00:39.05

Summing up blender 2.79b renders the scene on cpu ca. 25% faster. Why?Compared one GPU to two GPUs inblender 2.79bthere is a75% boost with two GPUs.
In blender 2.80 the boost is low, only 44%. Why, what is slowing down the second GPU? Blender 2.8 is also using a newer CUDA version.
GPU rendering in blender 2.80 is more than twice as fast as in blender 2.79b!
I couldn´t find any significant slowdown with denoise.

I´ve tested the different render possibilities in blender and compared blender 2.79b with blender 2.80 5f140e61c28c. It´s the same scene in blender 2.79b and blender 2.80. **`Blender 2.79b`** **CPU**(AMD Threadripper 1950X 16Cores) bmw27_cpu.blend (tiles 32x32) **01:20.53** bmw27_cpu_denoise.blend (tiles 32x32)**01:24.32** **2xGPU** (Geforce Gtx 1080 Ti 11GB / Geforce Titan X 12GB) bmw27_gpu.blend (tiles 240x180) **01:09.15** bmw27_gpu_denoise.blend (tiles 240x180) with denoise **01:12.15** **GPU** (Geforce Gtx 1080 Ti 11GB) bmw27_gpu.blend (tiles 240x180) **02:01.35** bmw27_gpu_denoise.blend (tiles 240x180) with denoise **02:05.07** **`Blender 2.80`**5f140e61c28c**CPU** (AMD Threadripper 1950X 16Cores) bmw27_cpu.blend (tiles 32x32) **01:46.65** bmw27_cpu_denoise.blend (tiles 32x32) **01:51.20** **2xGPU** (Geforce Gtx 1080 Ti 11GB / Geforce Titan X 12GB) bmw28_gpu.blend (tiles 32x32) **00:34.24** bmw28_gpu_denoise.blend (tiles 32x32) with denoise **00:40.69** **GPU** (Geforce Gtx 1080 Ti 11GB) bmw27_gpu.blend (tiles 32x32) **00:49.69** bmw27_gpu.blend (tiles 32x32) with denoise **00:55.06** **CPU+GPU** (AMD Threadripper 1950X 16Cores + Geforce Gtx 1080 Ti 11GB / Geforce Titan X 12GB) bmw28_gpu_cpu.blend (tiles 16x16) **00:30.40** bmw28_gpu_cpu_denoise.blend (tiles 16x16) with denoise **00:39.05** Summing up **blender 2.79b renders the scene on cpu ca. 25% faster**. **`Why?`**Compared one GPU to two GPUs in**blender 2.79b**there is a**75% boost** with two GPUs. In **blender 2.80** the boost is **low, only 44%**. Why, what is slowing down the second GPU? Blender 2.8 is also using a newer CUDA version. GPU rendering in blender 2.80 is more **than twice as fast** as in blender 2.79b! I couldn´t find any significant slowdown with denoise.

Added subscriber: @Yikes

Added subscriber: @Yikes
Member

Added subscriber: @howardt

Added subscriber: @howardt

Added subscriber: @xdanic

Added subscriber: @xdanic

Added subscriber: @pabcou

Added subscriber: @pabcou

Added subscriber: @nokipaike

Added subscriber: @nokipaike

here is another bizarre and interesting phenomenon …
the first ship is composed of many objects but all edited simultaneously … the second ship is a single object …
notice the differences …
confronto.gif

here is another bizarre and interesting phenomenon … the first ship is composed of many objects but all edited simultaneously … the second ship is a single object … notice the differences … ![confronto.gif](https://archive.blender.org/developer/F7670985/confronto.gif)

Added subscriber: @filibis

Added subscriber: @filibis

Added subscriber: @zebus3dream

Added subscriber: @zebus3dream

Added subscriber: @AlbertoVelazquez

Added subscriber: @AlbertoVelazquez

Added subscriber: @finnb

Added subscriber: @finnb

In #57936#755441, @nokipaike wrote:
here is another bizarre and interesting phenomenon …
the first ship is composed of many objects but all edited simultaneously … the second ship is a single object …
notice the differences …
confronto.gif

Looks like you have proportional editing turned on, which doesn't apply between objects even if they are edited simultaneously. The additional calculation of proportional editing for the entire ship vs. one part could be slowing it down.

> In #57936#755441, @nokipaike wrote: > here is another bizarre and interesting phenomenon … > the first ship is composed of many objects but all edited simultaneously … the second ship is a single object … > notice the differences … > ![confronto.gif](https://archive.blender.org/developer/F7670985/confronto.gif) Looks like you have proportional editing turned on, which doesn't apply between objects even if they are edited simultaneously. The additional calculation of proportional editing for the entire ship vs. one part could be slowing it down.

In #57936#767606, @finnb wrote:
Looks like you have proportional editing turned on, which doesn't apply between objects even if they are edited simultaneously. The additional calculation of proportional editing for the entire ship vs. one part could be slowing it down.

It was a test to make bottlenecks more evident on how a single object with a high number of polygons is currently structured.
Proportional editing turned on has nothing to do with it, it is enabled to make this slow down clear compared to when multiple objects are being edited simultaneously.

it is a test done on purpose to perhaps inspire some enlightening mind that can find a solution.

> In #57936#767606, @finnb wrote: > Looks like you have proportional editing turned on, which doesn't apply between objects even if they are edited simultaneously. The additional calculation of proportional editing for the entire ship vs. one part could be slowing it down. It was a test to make bottlenecks more evident on how a single object with a high number of polygons is currently structured. Proportional editing turned on has nothing to do with it, it is enabled to make this slow down clear compared to when multiple objects are being edited simultaneously. it is a test done on purpose to perhaps inspire some enlightening mind that can find a solution.

Removed subscriber: @lastrodamo

Removed subscriber: @lastrodamo
Brecht Van Lommel changed title from Performance regressions to Mesh modeling performance regressions 2019-10-07 18:08:25 +02:00

Added subscriber: @Dspazio

Added subscriber: @Dspazio

Added subscriber: @Lambdadelta

Added subscriber: @Lambdadelta

Added subscriber: @MaciejJutrzenka

Added subscriber: @MaciejJutrzenka

Added subscriber: @BartekMoniewski

Added subscriber: @BartekMoniewski

Added subscriber: @SamGreen

Added subscriber: @SamGreen
Sergey Sharybin removed their assignment 2020-03-13 14:40:57 +01:00

Added subscriber: @Sergey

Added subscriber: @Sergey

Un-assigning.

There are other developers active looking into this and related projects. Happy to help with anything, but would need to know where the latest development brought us forward.

Un-assigning. There are other developers active looking into this and related projects. Happy to help with anything, but would need to know where the latest development brought us forward.

Added subscriber: @Lolme3

Added subscriber: @Lolme3

Added subscriber: @Nominous

Added subscriber: @Nominous

Removed subscriber: @machieb

Removed subscriber: @machieb

Added subscriber: @Orange3d

Added subscriber: @Orange3d
Contributor

Added subscriber: @RedMser

Added subscriber: @RedMser

Added subscriber: @Vyach

Added subscriber: @Vyach

Added subscriber: @ckohl_art

Added subscriber: @ckohl_art
Philipp Oeser removed the
Interest
Modeling
label 2023-02-09 15:29:59 +01:00
Sign in to join this conversation.
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
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
49 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#57936
No description provided.