summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2017-05-28 01:24:06 -0700
committerGitHub <noreply@github.com>2017-05-28 01:24:06 -0700
commit3df85a103a39c4d304da8734a862315a3e619a90 (patch)
tree36d8cb23c8d54cef77dc09c10d7dd97e81669341 /src
parent4caa2bad9d57c97aa749d3a44f6be6f593bb798b (diff)
parent669ef82aee76ddd1c9f356542f187038fe47eeb9 (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.cpp8
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);