Blender Git Loki
Git Commits -> Revision 26f39e6
Revision 26f39e6 by Brecht Van Lommel (master) November 7, 2017, 21:35 (GMT) |
Cycles: add bevel shader, for raytrace based rounded edges. The algorithm averages normals from nearby surfaces. It uses the same sampling strategy as BSSRDFs, casting rays along the normal and two orthogonal axes, and combining the samples with MIS. The main concern here is that we are introducing raytracing inside shader evaluation, which could be quite bad for GPU performance and stack memory usage. In practice it doesn't seem so bad though. Note that using this feature can easily slow down renders 20%, and that if you care about performance then it's better to use a bevel modifier. Mainly this is useful for baking, and for cases where the mesh topology makes it difficult for the bevel modifier to work well. Differential Revision: https://developer.blender.org/D2803 |
Commit Details:
Full Hash: 26f39e6359d1db85509a0ee1077b6d0af122a456
Parent Commit: f79f386
Lines Changed: +537, -59
3 Added Paths:
/intern/cycles/kernel/shaders/node_bevel.osl (+31, -0) (View)
/intern/cycles/kernel/svm/svm_bevel.h (+227, -0) (View)
/source/blender/nodes/shader/nodes/node_shader_bevel.c (+70, -0) (View)
/intern/cycles/kernel/svm/svm_bevel.h (+227, -0) (View)
/source/blender/nodes/shader/nodes/node_shader_bevel.c (+70, -0) (View)
23 Modified Paths:
/intern/cycles/blender/blender_shader.cpp (+6, -0) (Diff)
/intern/cycles/kernel/closure/bsdf.h (+1, -3) (Diff)
/intern/cycles/kernel/closure/bssrdf.h (+34, -44) (Diff)
/intern/cycles/kernel/CMakeLists.txt (+1, -0) (Diff)
/intern/cycles/kernel/geom/geom_motion_triangle.h (+35, -0) (Diff)
/intern/cycles/kernel/kernel_bake.h (+7, -0) (Diff)
/intern/cycles/kernel/kernel_types.h (+3, -0) (Diff)
/intern/cycles/kernel/osl/osl_services.cpp (+29, -12) (Diff)
/intern/cycles/kernel/osl/osl_services.h (+1, -0) (Diff)
/intern/cycles/kernel/shaders/CMakeLists.txt (+1, -0) (Diff)
/intern/cycles/kernel/svm/svm.h (+9, -0) (Diff)
/intern/cycles/kernel/svm/svm_types.h (+1, -0) (Diff)
/intern/cycles/render/nodes.cpp (+40, -0) (Diff)
/intern/cycles/render/nodes.h (+12, -0) (Diff)
/release/scripts/startup/nodeitems_builtins.py (+1, -0) (Diff)
/source/blender/blenkernel/BKE_node.h (+1, -0) (Diff)
/source/blender/blenkernel/intern/node.c (+1, -0) (Diff)
/source/blender/editors/space_node/drawnode.c (+8, -0) (Diff)
/source/blender/gpu/shaders/gpu_shader_material.glsl (+5, -0) (Diff)
/source/blender/makesrna/intern/rna_nodetree.c (+10, -0) (Diff)
/source/blender/nodes/CMakeLists.txt (+1, -0) (Diff)
/source/blender/nodes/NOD_shader.h (+1, -0) (Diff)
/source/blender/nodes/NOD_static_types.h (+1, -0) (Diff)
/intern/cycles/kernel/closure/bsdf.h (+1, -3) (Diff)
/intern/cycles/kernel/closure/bssrdf.h (+34, -44) (Diff)
/intern/cycles/kernel/CMakeLists.txt (+1, -0) (Diff)
/intern/cycles/kernel/geom/geom_motion_triangle.h (+35, -0) (Diff)
/intern/cycles/kernel/kernel_bake.h (+7, -0) (Diff)
/intern/cycles/kernel/kernel_types.h (+3, -0) (Diff)
/intern/cycles/kernel/osl/osl_services.cpp (+29, -12) (Diff)
/intern/cycles/kernel/osl/osl_services.h (+1, -0) (Diff)
/intern/cycles/kernel/shaders/CMakeLists.txt (+1, -0) (Diff)
/intern/cycles/kernel/svm/svm.h (+9, -0) (Diff)
/intern/cycles/kernel/svm/svm_types.h (+1, -0) (Diff)
/intern/cycles/render/nodes.cpp (+40, -0) (Diff)
/intern/cycles/render/nodes.h (+12, -0) (Diff)
/release/scripts/startup/nodeitems_builtins.py (+1, -0) (Diff)
/source/blender/blenkernel/BKE_node.h (+1, -0) (Diff)
/source/blender/blenkernel/intern/node.c (+1, -0) (Diff)
/source/blender/editors/space_node/drawnode.c (+8, -0) (Diff)
/source/blender/gpu/shaders/gpu_shader_material.glsl (+5, -0) (Diff)
/source/blender/makesrna/intern/rna_nodetree.c (+10, -0) (Diff)
/source/blender/nodes/CMakeLists.txt (+1, -0) (Diff)
/source/blender/nodes/NOD_shader.h (+1, -0) (Diff)
/source/blender/nodes/NOD_static_types.h (+1, -0) (Diff)