blender/intern/cycles
Brecht Van Lommel 207338bb58 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
2020-06-22 13:28:01 +02:00
..
app Fix build error for Cycles standalone 2020-06-03 19:10:51 +02:00
blender Cycles: port curve-ray intersection from Embree for use in Cycles GPU 2020-06-22 13:28:01 +02:00
bvh Cycles: remove SIMD BVH optimizations, to be replaced by Embree 2020-06-22 13:28:01 +02:00
cmake Cycles: Enabled quaternion motion blur with Embree. 2020-02-17 23:44:12 +01:00
device Cycles: port curve-ray intersection from Embree for use in Cycles GPU 2020-06-22 13:28:01 +02:00
doc ClangFormat: apply to source, most of intern 2019-04-17 06:21:24 +02:00
graph Fix incorrect assert in Cycles node socket get/set functions 2020-05-12 21:50:49 +02:00
kernel Cycles: port curve-ray intersection from Embree for use in Cycles GPU 2020-06-22 13:28:01 +02:00
render Cycles: port curve-ray intersection from Embree for use in Cycles GPU 2020-06-22 13:28:01 +02:00
subd Cleanup: compiler warnings 2019-09-13 16:51:51 +02:00
test Cleanup: minor refactoring around DeviceTask 2020-06-22 13:06:47 +02:00
util Cycles: remove SIMD BVH optimizations, to be replaced by Embree 2020-06-22 13:28:01 +02:00
CMakeLists.txt Cycles: make TBB a required library dependency, and use in a few places 2020-06-22 13:06:47 +02:00