blender/intern/cycles/render
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
..
attribute.cpp Fix Cycles crash in Windows debug mode with volumes 2020-03-19 20:02:33 +01:00
attribute.h Fix Cycles crash in Windows debug mode with volumes 2020-03-19 20:02:33 +01:00
background.cpp Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
background.h Cycles: change volume step size controls, auto adjust based on voxel size 2020-03-18 11:23:05 +01:00
bake.cpp Cycles: code refactor to bake using regular render session and tiles 2020-05-15 20:25:24 +02:00
bake.h Cycles: code refactor to bake using regular render session and tiles 2020-05-15 20:25:24 +02:00
buffers.cpp Cycles: code refactor to bake using regular render session and tiles 2020-05-15 20:25:24 +02:00
buffers.h Cycles: code refactor to bake using regular render session and tiles 2020-05-15 20:25:24 +02:00
camera.cpp Cleanup: tweak Cycles #includes in preparation for clang-format sorting 2020-03-06 14:44:42 +01:00
camera.h Fix T62408: Cycles viewport adaptive subdivision hangs after updates 2019-04-21 03:05:38 +02:00
CMakeLists.txt Cycles: Add new Sky Texture method including direct sunlight 2020-06-17 21:06:41 +02:00
colorspace.cpp Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
colorspace.h Cleanup: process colorspace conversion with a 1D pixel array 2020-03-17 17:33:08 +01:00
constant_fold.cpp Shading: Rewrite Mapping node with dynamic inputs. 2019-09-04 23:17:13 +02:00
constant_fold.h Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
coverage.cpp Cleanup: tweak Cycles #includes in preparation for clang-format sorting 2020-03-06 14:44:42 +01:00
coverage.h Cleanup: tweak Cycles #includes in preparation for clang-format sorting 2020-03-06 14:44:42 +01:00
curves.cpp Cycles: port curve-ray intersection from Embree for use in Cycles GPU 2020-06-22 13:28:01 +02:00
curves.h Cycles: always perform backface culling for curve, remove option 2020-06-22 13:28:01 +02:00
denoising.cpp Cleanup: minor refactoring around DeviceTask 2020-06-22 13:06:47 +02:00
denoising.h Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
film.cpp Cycles: code refactor to bake using regular render session and tiles 2020-05-15 20:25:24 +02:00
film.h Revert "Fix T74572: adaptive sampling not scaling render passes correctly" 2020-04-06 23:23:48 +02:00
geometry.cpp Cleanup: minor refactoring around DeviceTask 2020-06-22 13:06:47 +02:00
geometry.h Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
graph.cpp Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
graph.h Fix T73984: unnecessary Cycles viewport updates with object texture coordinates 2020-05-14 17:39:37 +02:00
hair.cpp Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
hair.h Cleanup: split Cycles Hair and Mesh classes, with Geometry base class 2020-02-07 12:18:15 +01:00
image_oiio.cpp Cleanup: refactor image loading to use abstract ImageLoader base class 2020-03-11 20:45:39 +01:00
image_oiio.h Cleanup: refactor image loading to use abstract ImageLoader base class 2020-03-11 20:45:39 +01:00
image_sky.cpp Cycles: make TBB a required library dependency, and use in a few places 2020-06-22 13:06:47 +02:00
image_sky.h Cycles: Add new Sky Texture method including direct sunlight 2020-06-17 21:06:41 +02:00
image_vdb.cpp Cycles: support rendering new Volume object type 2020-03-18 11:23:05 +01:00
image_vdb.h Cycles: support rendering new Volume object type 2020-03-18 11:23:05 +01:00
image.cpp Cleanup: minor refactoring around DeviceTask 2020-06-22 13:06:47 +02:00
image.h Cleanup: minor refactoring around DeviceTask 2020-06-22 13:06:47 +02:00
integrator.cpp Cleanup: minor refactoring around DeviceTask 2020-06-22 13:06:47 +02:00
integrator.h Cycles: change volume step size controls, auto adjust based on voxel size 2020-03-18 11:23:05 +01:00
jitter.cpp Cycles: add Progressive Multi-Jitter sampling pattern 2020-03-02 16:35:52 +01:00
jitter.h Cycles: add Progressive Multi-Jitter sampling pattern 2020-03-02 16:35:52 +01:00
light.cpp Cycles: make TBB a required library dependency, and use in a few places 2020-06-22 13:06:47 +02:00
light.h Fix T63588: Cycles unnecessarily updates background importance sampling map 2020-06-02 19:48:51 +02:00
merge.cpp Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
merge.h ClangFormat: apply to source, most of intern 2019-04-17 06:21:24 +02:00
mesh_displace.cpp Cleanup: split Cycles Hair and Mesh classes, with Geometry base class 2020-02-07 12:18:15 +01:00
mesh_subdivision.cpp Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
mesh_volume.cpp Fix T75995: Cycles render artifacts with overlapping volumes 2020-05-01 23:42:42 +02:00
mesh.cpp Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
mesh.h Volumes: add render settings for volume datablock 2020-03-18 11:23:05 +01:00
nodes.cpp Cycles: Add new Sky Texture method including direct sunlight 2020-06-17 21:06:41 +02:00
nodes.h Cycles: Add new Sky Texture method including direct sunlight 2020-06-17 21:06:41 +02:00
object.cpp Cycles: remove __UV__ and __INSTANCING__ as kernel options 2020-06-22 13:28:01 +02:00
object.h Cycles: Added shadow terminator offset parameter. 2020-06-02 07:27:14 +02:00
osl.cpp Fix T73984: unnecessary Cycles viewport updates with object texture coordinates 2020-05-14 17:39:37 +02:00
osl.h Fix Cycles link error with debug + asan after RTTI changes 2020-03-11 17:05:15 +01:00
particles.cpp Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
particles.h ClangFormat: apply to source, most of intern 2019-04-17 06:21:24 +02:00
scene.cpp Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
scene.h Cycles: change volume step size controls, auto adjust based on voxel size 2020-03-18 11:23:05 +01:00
session.cpp Cycles: port curve-ray intersection from Embree for use in Cycles GPU 2020-06-22 13:28:01 +02:00
session.h Cycles: code refactor to bake using regular render session and tiles 2020-05-15 20:25:24 +02:00
shader.cpp Cleanup: minor refactoring around DeviceTask 2020-06-22 13:06:47 +02:00
shader.h Fix T73984: unnecessary Cycles viewport updates with object texture coordinates 2020-05-14 17:39:37 +02:00
sobol.cpp Cleanup: Mark large arrays of of constant data as const. 2019-08-04 14:24:29 -06:00
sobol.h ClangFormat: apply to source, most of intern 2019-04-17 06:21:24 +02:00
stats.cpp ClangFormat: apply to source, most of intern 2019-04-17 06:21:24 +02:00
stats.h Cleanup: spelling 2019-08-17 00:57:05 +10:00
svm.cpp Cycles: make TBB a required library dependency, and use in a few places 2020-06-22 13:06:47 +02:00
svm.h Add support for tiled images and the UDIM naming scheme 2019-12-12 18:40:37 +01:00
tables.cpp Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
tables.h Cleanup: tweak Cycles #includes in preparation for clang-format sorting 2020-03-06 14:44:42 +01:00
tile.cpp Fix T75432: Cycles progressive refine render slow with denoising data 2020-04-28 22:40:44 +02:00
tile.h Fix T75432: Cycles progressive refine render slow with denoising data 2020-04-28 22:40:44 +02:00