diff options
author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2017-05-28 01:24:06 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-28 01:24:06 -0700 |
commit | 3df85a103a39c4d304da8734a862315a3e619a90 (patch) | |
tree | 36d8cb23c8d54cef77dc09c10d7dd97e81669341 /src | |
parent | 4caa2bad9d57c97aa749d3a44f6be6f593bb798b (diff) | |
parent | 669ef82aee76ddd1c9f356542f187038fe47eeb9 (diff) |
Merge pull request #2729 from yuriks/quaternion-fix
OpenGL: Improve accuracy of quaternion interpolation
Diffstat (limited to 'src')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_gen.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index d4a99f79f..ffe419863 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp @@ -535,8 +535,8 @@ static void WriteLighting(std::string& out, const PicaShaderConfig& config) { } // Rotate the surface-local normal by the interpolated normal quaternion to convert it to - // eyespace - out += "vec3 normal = normalize(quaternion_rotate(normquat, surface_normal));\n"; + // eyespace. + out += "vec3 normal = quaternion_rotate(normalize(normquat), surface_normal);\n"; // Gets the index into the specified lookup table for specular lighting auto GetLutIndex = [&lighting](unsigned light_num, LightingRegs::LightingLutInput input, @@ -1002,7 +1002,9 @@ uniform sampler1D proctex_diff_lut; // Rotate the vector v by the quaternion q vec3 quaternion_rotate(vec4 q, vec3 v) { return v + 2.0 * cross(q.xyz, cross(q.xyz, v) + q.w * v); -})"; +} + +)"; if (config.state.proctex.enable) AppendProcTexSampler(out, config); |