Go to file
Hans Goudey 7484f274dc Curves: Port curve to mesh node to the new data-block
This commit changes the Curve to Mesh node to work with `Curves`
instead of `CurveEval`. The change ends up basically completely
rewriting the node, since the different attribute storage means that
the decisions made previously don't make much sense anymore.

The main loops are now "for each attribute: for each curve combination"
rather than the other way around, with the goal of taking advantage
of the locality of curve attributes. This improvement is quite
noticeable with many small curves; I measured a 4-5x improvement
(around 4-5s to <1s) when converting millions of curves to tens of
millions of faces. I didn't obverse any change in performance compared
to 3.1 with fewer curves though.

The changes also solve an algorithmic flaw where any interpolated
attributes would be evaluated for every curve combination instead
of just once per curve. This can be a large improvement when there
are many profile curves.

The code relies heavily on a function `foreach_curve_combination`
which calculates some basic information about each combination and
calls a templated function. I made assumptions about unnecessary reads
being removed by compiler optimizations. For further performance
improvements in the future that might be an area to investigate.
Another might be using a "for a group of curves: for each attribute:
for each curve" pattern to increase the locality of memory access.

Differential Revision: https://developer.blender.org/D14642
2022-04-15 10:15:48 -05:00
.github GitHub: add PR template 2021-10-23 10:49:51 +05:30
build_files install_deps: Tweak rBbc9c9631a46f, libwebp is not only a dependency from ffmpeg. 2022-04-11 14:52:26 +02:00
doc API doc: Tweak sphinx to get date of source commit instead of build date. 2022-04-06 11:43:14 +02:00
extern OBJ: use fmt library instead of sprintf for faster formatting 2022-03-27 14:25:48 +03:00
intern Cycles: Add support for "stageMetersPerUnit" Hydra render setting 2022-04-13 12:24:21 +02:00
release Curves: initial geometry nodes support for curves objects 2022-04-15 09:08:50 +02:00
source Curves: Port curve to mesh node to the new data-block 2022-04-15 10:15:48 -05:00
tests Tests: Change force disable render test messages to be warnings 2022-04-14 13:10:26 +02:00
.arcconfig Fix .arcconfig not working with latest arcanist version 2020-03-01 22:35:31 +01:00
.clang-format Cleanup: clang-format 2022-04-04 12:35:33 +10:00
.clang-tidy Clang Tidy: ignore some passes that changed or were added in version 13 2021-11-23 19:45:05 +01:00
.editorconfig GNUmakefile: move editor settings to .editorconfig 2022-02-10 09:20:34 +11:00
.git-blame-ignore-revs Cleanup: git-blame-ignore-revs: Update policy & commits 2021-01-29 13:20:32 +05:30
.gitignore Compositor automated testing 2021-03-26 16:15:02 +01:00
.gitmodules Update for moving blender2.8 to master. 2018-12-21 12:15:21 +01:00
CMakeLists.txt Revert "Cycles: enable HIP for Vega and Vega II (Radeon 7) GPUs on Windows" 2022-04-12 19:18:58 +02:00
COPYING == docs == 2010-10-13 14:44:22 +00:00
GNUmakefile Cleanup: fix source comment typos 2022-03-11 18:27:58 +01:00
make.bat make.bat: unify python detection 2022-01-25 09:19:03 -07:00
readme.rst Blender README: Fix the full license name. 2021-04-09 12:39:33 +02:00

.. Keep this document short & concise,
   linking to external resources instead of including content in-line.
   See 'release/text/readme.html' for the end user read-me.


Blender
=======

Blender is the free and open source 3D creation suite.
It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing,
motion tracking and video editing.

.. figure:: https://code.blender.org/wp-content/uploads/2018/12/springrg.jpg
   :scale: 50 %
   :align: center


Project Pages
-------------

- `Main Website <http://www.blender.org>`__
- `Reference Manual <https://docs.blender.org/manual/en/latest/index.html>`__
- `User Community <https://www.blender.org/community/>`__

Development
-----------

- `Build Instructions <https://wiki.blender.org/wiki/Building_Blender>`__
- `Code Review & Bug Tracker <https://developer.blender.org>`__
- `Developer Forum <https://devtalk.blender.org>`__
- `Developer Documentation <https://wiki.blender.org>`__


License
-------

Blender as a whole is licensed under the GNU General Public License, Version 3.
Individual files may have a different, but compatible license.

See `blender.org/about/license <https://www.blender.org/about/license>`__ for details.