diff options
author | Brecht Van Lommel <brecht@blender.org> | 2020-12-24 15:45:04 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2020-12-24 15:53:33 +0300 |
commit | 29cd99e7fd3ccb6217a26afa5cc054c0ab97b1a8 (patch) | |
tree | 95beb2d3c901d81cf35ade41e02976ad08401436 /intern/cycles/kernel | |
parent | c4f8aedbc2eb3f54e885ca4c86af6b405fd89c3f (diff) |
Cycles: remove surface area computation for meshes with OSL
This is relatively expensive and as per the OSL spec, this value is not
expected to be meaningful for non-light shaders. This makes viewport updates
a little faster.
As a side effect also fixes T82723, viewport refresh issue with volume density.
Diffstat (limited to 'intern/cycles/kernel')
-rw-r--r-- | intern/cycles/kernel/geom/geom_object.h | 9 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_types.h | 2 | ||||
-rw-r--r-- | intern/cycles/kernel/osl/osl_shader.cpp | 2 |
3 files changed, 3 insertions, 10 deletions
diff --git a/intern/cycles/kernel/geom/geom_object.h b/intern/cycles/kernel/geom/geom_object.h index 614e2e3b92b..1907f5d3935 100644 --- a/intern/cycles/kernel/geom/geom_object.h +++ b/intern/cycles/kernel/geom/geom_object.h @@ -214,13 +214,6 @@ ccl_device_inline float3 object_location(KernelGlobals *kg, const ShaderData *sd #endif } -/* Total surface area of object */ - -ccl_device_inline float object_surface_area(KernelGlobals *kg, int object) -{ - return kernel_tex_fetch(__objects, object).surface_area; -} - /* Color of the object */ ccl_device_inline float3 object_color(KernelGlobals *kg, int object) @@ -328,7 +321,7 @@ ccl_device_inline float object_volume_density(KernelGlobals *kg, int object) return 1.0f; } - return kernel_tex_fetch(__objects, object).surface_area; + return kernel_tex_fetch(__objects, object).volume_density; } ccl_device_inline float object_volume_step_size(KernelGlobals *kg, int object) diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h index 9d00311f746..f0e65542693 100644 --- a/intern/cycles/kernel/kernel_types.h +++ b/intern/cycles/kernel/kernel_types.h @@ -1461,7 +1461,7 @@ typedef struct KernelObject { Transform tfm; Transform itfm; - float surface_area; + float volume_density; float pass_id; float random_number; float color[3]; diff --git a/intern/cycles/kernel/osl/osl_shader.cpp b/intern/cycles/kernel/osl/osl_shader.cpp index 2318813949e..3d0813c15e3 100644 --- a/intern/cycles/kernel/osl/osl_shader.cpp +++ b/intern/cycles/kernel/osl/osl_shader.cpp @@ -109,7 +109,7 @@ static void shaderdata_to_shaderglobals( globals->dvdy = sd->dv.dy; globals->dPdu = TO_VEC3(sd->dPdu); globals->dPdv = TO_VEC3(sd->dPdv); - globals->surfacearea = (sd->object == OBJECT_NONE) ? 1.0f : object_surface_area(kg, sd->object); + globals->surfacearea = 1.0f; globals->time = sd->time; /* booleans */ |