diff options
author | Patrick Mours <pmours@nvidia.com> | 2020-01-16 20:08:52 +0300 |
---|---|---|
committer | Patrick Mours <pmours@nvidia.com> | 2020-01-22 17:49:14 +0300 |
commit | 26687dda5ab7de1e2a00cb6252a6eb919c3f570c (patch) | |
tree | 0f126234efc556327ddeffb9068865c873999c3b /intern/cycles/device/device_optix.cpp | |
parent | cbbbb9d17918af656578bc6526d21e41acaa59e4 (diff) |
Fix T71344: Optix render errors with motion blur and unknown bone constraint relationship
The OptiX SRT motion expects a motion defined by translation,
rotation, shear and scale, but the matrix decomposition code in
Cycles was not able to extract shear information and instead
produced a stretch matrix with the information baked in. This
caused conflicting transforms between traversal and shading
and lead to render artifacts.
This patch changes the matrix decomposition to produce factors
inline with what OptiX expects to fix that.
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D6605
Diffstat (limited to 'intern/cycles/device/device_optix.cpp')
-rw-r--r-- | intern/cycles/device/device_optix.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/intern/cycles/device/device_optix.cpp b/intern/cycles/device/device_optix.cpp index a510e538031..8a8eef0e059 100644 --- a/intern/cycles/device/device_optix.cpp +++ b/intern/cycles/device/device_optix.cpp @@ -1461,6 +1461,9 @@ class OptiXDevice : public Device { srt_data[i].a = decomp[i].z.x; // scale.x.y srt_data[i].b = decomp[i].z.y; // scale.x.z srt_data[i].c = decomp[i].w.x; // scale.y.z + assert(decomp[i].z.z == 0.0f); // scale.y.x + assert(decomp[i].w.y == 0.0f); // scale.z.x + assert(decomp[i].w.z == 0.0f); // scale.z.y // Pivot point srt_data[i].pvx = 0.0f; |