mirror of
https://github.com/love2d/love.git
synced 2026-08-16 08:11:02 +02:00
Re-added the built-in NormalMatrix uniform 3x3 matrix variable to shaders.
This commit is contained in:
@@ -716,6 +716,16 @@ void Shader::checkSetBuiltinUniforms()
|
||||
if (location >= 0)
|
||||
glUniformMatrix4fv(location, 1, GL_FALSE, curxform.getElements());
|
||||
|
||||
// Also upload the re-calculated normal matrix, if possible. The
|
||||
// normal matrix is the transpose of the inverse of the rotation
|
||||
// portion (top-left 3x3) of the transform matrix.
|
||||
location = builtinUniforms[BUILTIN_NORMAL_MATRIX];
|
||||
if (location >= 0)
|
||||
{
|
||||
Matrix3 normalmatrix = Matrix3(curxform).transposedInverse();
|
||||
glUniformMatrix3fv(location, 1, GL_FALSE, normalmatrix.getElements());
|
||||
}
|
||||
|
||||
tpmatrixneedsupdate = true;
|
||||
lastTransformMatrix = curxform;
|
||||
}
|
||||
@@ -885,6 +895,7 @@ StringMap<Shader::BuiltinUniform, Shader::BUILTIN_MAX_ENUM>::Entry Shader::built
|
||||
{"TransformMatrix", Shader::BUILTIN_TRANSFORM_MATRIX},
|
||||
{"ProjectionMatrix", Shader::BUILTIN_PROJECTION_MATRIX},
|
||||
{"TransformProjectionMatrix", Shader::BUILTIN_TRANSFORM_PROJECTION_MATRIX},
|
||||
{"NormalMatrix", Shader::BUILTIN_NORMAL_MATRIX},
|
||||
{"love_PointSize", Shader::BUILTIN_POINT_SIZE},
|
||||
{"love_ScreenSize", Shader::BUILTIN_SCREEN_SIZE},
|
||||
};
|
||||
|
||||
@@ -61,6 +61,7 @@ public:
|
||||
BUILTIN_TRANSFORM_MATRIX = 0,
|
||||
BUILTIN_PROJECTION_MATRIX,
|
||||
BUILTIN_TRANSFORM_PROJECTION_MATRIX,
|
||||
BUILTIN_NORMAL_MATRIX,
|
||||
BUILTIN_POINT_SIZE,
|
||||
BUILTIN_SCREEN_SIZE,
|
||||
BUILTIN_MAX_ENUM
|
||||
|
||||
@@ -57,10 +57,12 @@ GLSL.UNIFORMS = [[
|
||||
uniform LOVE_UNIFORM_PRECISION mat4 TransformMatrix;
|
||||
uniform LOVE_UNIFORM_PRECISION mat4 ProjectionMatrix;
|
||||
uniform LOVE_UNIFORM_PRECISION mat4 TransformProjectionMatrix;
|
||||
uniform LOVE_UNIFORM_PRECISION mat3 NormalMatrix;
|
||||
#else
|
||||
#define TransformMatrix gl_ModelViewMatrix
|
||||
#define ProjectionMatrix gl_ProjectionMatrix
|
||||
#define TransformProjectionMatrix gl_ModelViewProjectionMatrix
|
||||
#define NormalMatrix gl_NormalMatrix
|
||||
#endif
|
||||
uniform mediump vec4 love_ScreenSize;]]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user