Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-05-10Cleanup: spellingCampbell Barton
2021-05-09Geometry Nodes: Improve point instance node performanceHans Goudey
This commit uses two changes to improve the performance of the point instance node. **Prevent Reallocations** At 64 bytes, the transform matrix for every instance is rather large, so reallocating the vector as it grows can become a performance bottle- neck. This commit reserves memory for the instances that will be added to prevent unecessary reallocations as the instance vector grows. In a test with 4 million instances of 3 objects in a collection, the node was about 40% faster, from 370ms to 270ms for the node. **Parallelization** Currently the instances are added by appending to a vector. By changing this slightly to fill indices instead, we can parallelize the operation so that multiple threads can fill data at the same time. Tested on a Ryzen 3700x, this reduced the runtime from the above 270ms to 44ms average, bringing the total speedup to ~8x. Note that displaying the instances in the viewport is still much slower than the calculations in node, this change doesn't affect that.
2021-05-04Geometry Nodes: refactor instances componentJacques Lucke
The main goal of this refactor is to not store Object/Collection pointers for every individual instance. Instead instances now store a handle for the referenced data. The actual Object/Collection pointers are stored in a new `InstanceReference` class. This refactor also allows for some better optimizations further down the line, because one does not have to search through all instances anymore to find what data is instanced. Furthermore, this refactor makes it easier to support instancing `GeometrySet` or any other data that has to be owned by the `InstancesComponent`. Differential Revision: https://developer.blender.org/D11125
2021-04-26Fix (unreported): Geometry nodes instance ids not copied or clearedHans Goudey
Though to my knowledge we haven't had a report about this yet, this looks like a clear oversight-- the ids are just more data stored by the instances component, and should be cleared and copied like other data. This might have resulted in incorrect random IDs for instances in renderers in some cases where the component had to be copied.
2021-04-08Spreadsheet: support showing data of specific nodeJacques Lucke
Previously, the spreadsheet editor could only show data of the original and of the final evaluated object. Now it is possible to show the data at some intermediate stages too. For that the mode has to be set to "Node" in the spreadsheet editor. Furthermore, the preview of a specific node has to be activated by clicking the new icon in the header of geometry nodes. The exact ui of this feature might be refined in upcoming commits. It is already very useful for debugging node groups in it's current state though. Differential Revision: https://developer.blender.org/D10875
2021-03-10Geometry Nodes: move geometry component type enum to CJacques Lucke
This allows us to use it in rna for the spreadsheet editor.
2021-03-08Cleanup: Move geometry component implementations to separate filesHans Goudey
Currently the implementations specific to each geometry type are in the same file. This makes it difficult to tell which code is generic for all component types and which is specific to a certain type. The two files, `attribute_access.cc`, and `geometry_set.cc` are also getting quite long. This commit splits up the implementation for every geometry component, and adds an internal header file for the common parts of the attribute access code. This was discussed with Jacques Lucke.