June 22, 2020, 11:28 (GMT) |
Cycles: enable Embree by default for CPU rendering For GPU debugging purposes, it is still possible to render with the same BVH2 on the CPU using the Debug panel in the render properties. Note that building Blender without Embree will now lead to significantly reduced performance in CPU rendering, and a few of the Cycles regression tests will fail due to small pixel differences. Ref T73778 Depends on D8014 Maniphest Tasks: T73778 Differential Revision: https://developer.blender.org/D8015 |
June 22, 2020, 11:28 (GMT) |
Cycles: internal refactoring to make thick/ribbon curve separate primitives Also removing the curve system manager which only stored a few curve intersection settings. These are all changes towards making shape and subdivision settings per-object instead of per-scene, but there is more work to do here. Ref T73778 Depends on D8013 Maniphest Tasks: T73778 Differential Revision: https://developer.blender.org/D8014 |
June 22, 2020, 11:28 (GMT) |
Cycles: port curve-ray intersection from Embree for use in Cycles GPU This keeps render results compatible for combined CPU + GPU rendering. Peformance and quality primitives is quite different than before. There are now two options: * Rounded Ribbon: render hair as flat ribbon with (fake) rounded normals, for fast rendering. Hair curves are subdivided with a fixed number of user specified subdivisions. This gives relatively good results, especially when used with the Principled Hair BSDF and hair viewed from a typical distance. There are artifacts when viewed closed up, though this was also the case with all previous primitives (but different ones). * 3D Curve: render hair as 3D curve, for accurate results when viewing hair close up. This automatically subdivides the curve until it is smooth. This gives higher quality than any of the previous primitives, but does come at a performance cost and is somewhat slower than our previous Thick curves. The main problem here is performance. For CPU and OpenCL rendering performance seems usually quite close or better for similar quality results. However for CUDA and Optix, performance of 3D curve intersection is problematic, with e.g. 1.45x longer render time in Koro (though there is no equivalent quality and rounded ribbons seem fine for that scene). Any help or ideas to optimize this are welcome. Ref T73778 Depends on D8012 Maniphest Tasks: T73778 Differential Revision: https://developer.blender.org/D8013 |
June 22, 2020, 11:28 (GMT) |
Cycles: remove SIMD BVH optimizations, to be replaced by Embree Ref T73778 Depends on D8011 Maniphest Tasks: T73778 Differential Revision: https://developer.blender.org/D8012 |
June 22, 2020, 11:28 (GMT) |
Cycles: remove __UV__ and __INSTANCING__ as kernel options The kernel did not work correctly when these were disabled anyway. The optimized BVH traversal for the no instances case was also only used on the CPU, so no longer makes sense to keep. Ref T73778 Depends on D8010 Maniphest Tasks: T73778 Differential Revision: https://developer.blender.org/D8011 |
June 22, 2020, 11:28 (GMT) |
Cycles: always perform backface culling for curve, remove option The hair BSDFs are already designed to assume this, and disabling backface culling would break them in some cases. Ref T73778 Depends on D8009 Maniphest Tasks: T73778 Differential Revision: https://developer.blender.org/D8010 |
June 22, 2020, 11:28 (GMT) |
Cycles: remove support for rendering hair as triangle and lines Triangles were very memory intensive. The only reason they were not removed yet is that they gave more accurate results, but there will be an accurate 3D curve primitive added for this. Line rendering was always poor quality since the ends do not match up. To keep CPU and GPU compatibility we just remove them entirely. They could be brought back if an Embree compatible implementation is added, but it's not clear to me that there is a use case for these that we'd consider important. Ref T73778 Reviewers: #cycles Subscribers: |
June 22, 2020, 11:27 (GMT) |
Cycles: use TBB for task pools and task scheduler No significant performance improvement is expected, but it means we have a single thread pool throughout Blender. And it should make adding more parallellization in the future easier. After previous refactoring commits this is basically a drop-in replacement. One difference is that the task pool had a mechanism for scheduling tasks to the front of the queue to minimize memory usage. TBB has a smarter algorithm to balance depth-first and breadth-first scheduling of tasks and we assume that removes the need to manually provide hints to the scheduler. Fixes T77533 |
June 22, 2020, 11:06 (GMT) |
Cleanup: remove task pool stop() and finished() |
June 22, 2020, 11:06 (GMT) |
Cleanup: use lambdas instead of functors for task pools, remove threadid |
June 22, 2020, 11:06 (GMT) |
Cycles: make TBB a required library dependency, and use in a few places Now that the rest of Blender also relies on TBB, no point in maintaining custom code for paraller_for and thread local storage. |
June 22, 2020, 11:06 (GMT) |
Cleanup: minor refactoring around DeviceTask |
June 22, 2020, 11:06 (GMT) |
Cleanup: use move semantics for task pool functions |
June 22, 2020, 11:06 (GMT) |
Cleanup: compiler warning |
June 22, 2020, 11:06 (GMT) |
June 22, 2020, 10:54 (GMT) |
Fix initialization of Edge Slide with Single Side It was not being initialized. Error introduced in cf42721fe28f |
June 22, 2020, 10:54 (GMT) |
Transform: Simplify and rearrange mirror code No real functional changes. |
June 22, 2020, 10:54 (GMT) |
Transform: Do not compute island center when not used No functional changes from the user's point of view. |
June 22, 2020, 10:54 (GMT) |
Cleanup: Remove goto in transform_convert_mesh code |
June 22, 2020, 10:54 (GMT) |
Cleanup: Rearrange transform_convert_mesh into doxy sections |
|
|
|


Master Commits
MiikaHweb | 2003-2021