diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-12-01 19:30:46 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-12-16 22:54:04 +0300 |
commit | 35b1e9fc3acd6db565e7e54252a4a4152d8343d9 (patch) | |
tree | 8599df3b2be192d1fe19d30a8afb7e8d8729499e /intern/cycles/bvh/params.h | |
parent | 2229179faa44e2c685b4eabd0c51d4c7d5c1f193 (diff) |
Cycles: pointcloud rendering
This add support for rendering of the point cloud object in Blender, as a native
geometry type in Cycles that is more memory and time efficient than instancing
sphere meshes. This can be useful for rendering sand, water splashes, particles,
motion graphics, etc.
Points are currently always rendered as spheres, with backface culling. More
shapes are likely to be added later, but this is the most important one and can
be customized with shaders.
For CPU rendering the Embree primitive is used, for GPU there is our own
intersection code. Motion blur is suppored. Volumes inside points are not
currently supported.
Implemented with help from:
* Kévin Dietrich: Alembic procedural integration
* Patrick Mourse: OptiX integration
* Josh Whelchel: update for cycles-x changes
Ref T92573
Differential Revision: https://developer.blender.org/D9887
Diffstat (limited to 'intern/cycles/bvh/params.h')
-rw-r--r-- | intern/cycles/bvh/params.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/intern/cycles/bvh/params.h b/intern/cycles/bvh/params.h index 8f185a2640f..16edf2e88e4 100644 --- a/intern/cycles/bvh/params.h +++ b/intern/cycles/bvh/params.h @@ -83,6 +83,8 @@ class BVHParams { int max_motion_triangle_leaf_size; int max_curve_leaf_size; int max_motion_curve_leaf_size; + int max_point_leaf_size; + int max_motion_point_leaf_size; /* object or mesh level bvh */ bool top_level; @@ -98,13 +100,13 @@ class BVHParams { /* Split time range to this number of steps and create leaf node for each * of this time steps. * - * Speeds up rendering of motion curve primitives in the cost of higher - * memory usage. + * Speeds up rendering of motion primitives in the cost of higher memory usage. */ - int num_motion_curve_steps; /* Same as above, but for triangle primitives. */ int num_motion_triangle_steps; + int num_motion_curve_steps; + int num_motion_point_steps; /* Same as in SceneParams. */ int bvh_type; @@ -132,6 +134,8 @@ class BVHParams { max_motion_triangle_leaf_size = 8; max_curve_leaf_size = 1; max_motion_curve_leaf_size = 4; + max_point_leaf_size = 8; + max_motion_point_leaf_size = 8; top_level = false; bvh_layout = BVH_LAYOUT_BVH2; @@ -139,6 +143,7 @@ class BVHParams { num_motion_curve_steps = 0; num_motion_triangle_steps = 0; + num_motion_point_steps = 0; bvh_type = 0; @@ -166,6 +171,12 @@ class BVHParams { return (size <= min_leaf_size || level >= MAX_DEPTH); } + bool use_motion_steps() + { + return num_motion_curve_steps > 0 || num_motion_triangle_steps > 0 || + num_motion_point_steps > 0; + } + /* Gets best matching BVH. * * If the requested layout is supported by the device, it will be used. |