Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Werner <stefan.werner@tangent-animation.com>2020-05-05 14:55:24 +0300
committerStefan Werner <stefan.werner@tangent-animation.com>2020-06-02 08:27:14 +0300
commitc7280ce65b856d26d6807c1b7a081ffc6311bfdc (patch)
treef1dc9453d24b0352cc87cf45bf7b5848da86d6d4 /intern/cycles/render/object.cpp
parent18cda8be8768b1e4ad9c359295142272e7aac6bf (diff)
Cycles: Added shadow terminator offset parameter.
A new user parameter can be used to shift the shadow terminator towards the light source. With it, one can hide some of the artifacts that appear on coarse meshes with smooth shading. Note that this technique is not engery conserving. This is based on the work by the Appleseed renderer team. Differential Revision: https://developer.blender.org/D7634
Diffstat (limited to 'intern/cycles/render/object.cpp')
-rw-r--r--intern/cycles/render/object.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/intern/cycles/render/object.cpp b/intern/cycles/render/object.cpp
index 90a1d90019d..61deef4cd76 100644
--- a/intern/cycles/render/object.cpp
+++ b/intern/cycles/render/object.cpp
@@ -101,6 +101,7 @@ NODE_DEFINE(Object)
SOCKET_POINT(dupli_generated, "Dupli Generated", make_float3(0.0f, 0.0f, 0.0f));
SOCKET_POINT2(dupli_uv, "Dupli UV", make_float2(0.0f, 0.0f));
SOCKET_TRANSFORM_ARRAY(motion, "Motion", array<Transform>());
+ SOCKET_FLOAT(shadow_terminator_offset, "Terminator Offset", 0.0f);
SOCKET_BOOLEAN(is_shadow_catcher, "Shadow Catcher", false);
@@ -534,6 +535,7 @@ void ObjectManager::device_update_object_transform(UpdateObjectTransformState *s
uint32_t hash_asset = util_murmur_hash3(ob->asset_name.c_str(), ob->asset_name.length(), 0);
kobject.cryptomatte_object = util_hash_to_float(hash_name);
kobject.cryptomatte_asset = util_hash_to_float(hash_asset);
+ kobject.shadow_terminator_offset = 1.0f / (1.0f - 0.5f * ob->shadow_terminator_offset);
/* Object flag. */
if (ob->use_holdout) {