1b7e67a851df631f528fc7ca4b6a5c68caa26208
Implements another phase of #116901, this time for the `lines` and `lines_loose` index buffers that store indices for wireframe drawing. The key improvement is removing loose edge's dependency on the main edge index buffer. That means for the majority of meshes with no loose edges, edge index extraction can be completely skipped. Even when there are loose edges, only the loose edges need to be extracted with wireframe turned off. Besides that improvement, there are more changes to use data-oriented code with visible hot loops instead of the virtual function call design used for the existing mesh extractor system. For this step I completely replaced the `extract_lines` object, which is in line with the general plan for this area. Additionally, hidden edge filtering is done ahead of time using several `IndexMask` operations. This means only indices for visible edges need to be uploaded to the GPU, and no restart index stripping needs to be performed on macOS. On my usual test file with 1.9 million vertices, I observed an improvement from 26 to 33 FPS with wireframe off, and from 9.15 to 9.5 FPS with wireframe on. Pull Request: https://projects.blender.org/blender/blender/pulls/120720
…
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.
Project Pages
Development
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 for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%
