Browse Source

Update naming convention for builtin shader matrices.

- ClipSpaceFromLocal replaces TransformProjectionMatrix
- ViewSpaceFromLocal replaces TransformMatrix
- ClipSpaceFromView replaces ProjectionMatrix
- ViewNormalFromLocal replaces NormalMatrix

--HG--
branch : minor
Alex Szpakowski 8 years ago
parent
commit
d338f274ff

+ 10 - 10
src/modules/graphics/Shader.cpp

@@ -351,16 +351,16 @@ StringMap<Shader::ShaderStage, Shader::STAGE_MAX_ENUM> Shader::stageNames(Shader
 
 
 StringMap<Shader::BuiltinUniform, Shader::BUILTIN_MAX_ENUM>::Entry Shader::builtinNameEntries[] =
 StringMap<Shader::BuiltinUniform, Shader::BUILTIN_MAX_ENUM>::Entry Shader::builtinNameEntries[] =
 {
 {
-	{ "MainTex",                   BUILTIN_TEXTURE_MAIN                },
-	{ "love_VideoYChannel",        BUILTIN_TEXTURE_VIDEO_Y             },
-	{ "love_VideoCbChannel",       BUILTIN_TEXTURE_VIDEO_CB            },
-	{ "love_VideoCrChannel",       BUILTIN_TEXTURE_VIDEO_CR            },
-	{ "TransformMatrix",           BUILTIN_MATRIX_TRANSFORM            },
-	{ "ProjectionMatrix",          BUILTIN_MATRIX_PROJECTION           },
-	{ "TransformProjectionMatrix", BUILTIN_MATRIX_TRANSFORM_PROJECTION },
-	{ "NormalMatrix",              BUILTIN_MATRIX_NORMAL               },
-	{ "love_PointSize",            BUILTIN_POINT_SIZE                  },
-	{ "love_ScreenSize",           BUILTIN_SCREEN_SIZE                 },
+	{ "MainTex",             BUILTIN_TEXTURE_MAIN                  },
+	{ "love_VideoYChannel",  BUILTIN_TEXTURE_VIDEO_Y               },
+	{ "love_VideoCbChannel", BUILTIN_TEXTURE_VIDEO_CB              },
+	{ "love_VideoCrChannel", BUILTIN_TEXTURE_VIDEO_CR              },
+	{ "ViewSpaceFromLocal",  BUILTIN_MATRIX_VIEW_FROM_LOCAL        },
+	{ "ClipSpaceFromView",   BUILTIN_MATRIX_CLIP_FROM_VIEW         },
+	{ "ClipSpaceFromLocal",  BUILTIN_MATRIX_CLIP_FROM_LOCAL        },
+	{ "ViewNormalFromLocal", BUILTIN_MATRIX_VIEW_NORMAL_FROM_LOCAL },
+	{ "love_PointSize",      BUILTIN_POINT_SIZE                    },
+	{ "love_ScreenSize",     BUILTIN_SCREEN_SIZE                   },
 };
 };
 
 
 StringMap<Shader::BuiltinUniform, Shader::BUILTIN_MAX_ENUM> Shader::builtinNames(Shader::builtinNameEntries, sizeof(Shader::builtinNameEntries));
 StringMap<Shader::BuiltinUniform, Shader::BUILTIN_MAX_ENUM> Shader::builtinNames(Shader::builtinNameEntries, sizeof(Shader::builtinNameEntries));

+ 4 - 4
src/modules/graphics/Shader.h

@@ -73,10 +73,10 @@ public:
 		BUILTIN_TEXTURE_VIDEO_Y,
 		BUILTIN_TEXTURE_VIDEO_Y,
 		BUILTIN_TEXTURE_VIDEO_CB,
 		BUILTIN_TEXTURE_VIDEO_CB,
 		BUILTIN_TEXTURE_VIDEO_CR,
 		BUILTIN_TEXTURE_VIDEO_CR,
-		BUILTIN_MATRIX_TRANSFORM,
-		BUILTIN_MATRIX_PROJECTION,
-		BUILTIN_MATRIX_TRANSFORM_PROJECTION,
-		BUILTIN_MATRIX_NORMAL,
+		BUILTIN_MATRIX_VIEW_FROM_LOCAL,
+		BUILTIN_MATRIX_CLIP_FROM_VIEW,
+		BUILTIN_MATRIX_CLIP_FROM_LOCAL,
+		BUILTIN_MATRIX_VIEW_NORMAL_FROM_LOCAL,
 		BUILTIN_POINT_SIZE,
 		BUILTIN_POINT_SIZE,
 		BUILTIN_SCREEN_SIZE,
 		BUILTIN_SCREEN_SIZE,
 		BUILTIN_MAX_ENUM
 		BUILTIN_MAX_ENUM

+ 4 - 4
src/modules/graphics/opengl/Shader.cpp

@@ -855,14 +855,14 @@ void Shader::updateBuiltinUniforms()
 	// Only upload the matrices if they've changed.
 	// Only upload the matrices if they've changed.
 	if (memcmp(curxform.getElements(), lastTransformMatrix.getElements(), sizeof(float) * 16) != 0)
 	if (memcmp(curxform.getElements(), lastTransformMatrix.getElements(), sizeof(float) * 16) != 0)
 	{
 	{
-		GLint location = builtinUniforms[BUILTIN_MATRIX_TRANSFORM];
+		GLint location = builtinUniforms[BUILTIN_MATRIX_VIEW_FROM_LOCAL];
 		if (location >= 0)
 		if (location >= 0)
 			glUniformMatrix4fv(location, 1, GL_FALSE, curxform.getElements());
 			glUniformMatrix4fv(location, 1, GL_FALSE, curxform.getElements());
 
 
 		// Also upload the re-calculated normal matrix, if possible. The normal
 		// Also upload the re-calculated normal matrix, if possible. The normal
 		// matrix is the transpose of the inverse of the rotation portion
 		// matrix is the transpose of the inverse of the rotation portion
 		// (top-left 3x3) of the transform matrix.
 		// (top-left 3x3) of the transform matrix.
-		location = builtinUniforms[BUILTIN_MATRIX_NORMAL];
+		location = builtinUniforms[BUILTIN_MATRIX_VIEW_NORMAL_FROM_LOCAL];
 		if (location >= 0)
 		if (location >= 0)
 		{
 		{
 			Matrix3 normalmatrix = Matrix3(curxform).transposedInverse();
 			Matrix3 normalmatrix = Matrix3(curxform).transposedInverse();
@@ -875,7 +875,7 @@ void Shader::updateBuiltinUniforms()
 
 
 	if (memcmp(curproj.getElements(), lastProjectionMatrix.getElements(), sizeof(float) * 16) != 0)
 	if (memcmp(curproj.getElements(), lastProjectionMatrix.getElements(), sizeof(float) * 16) != 0)
 	{
 	{
-		GLint location = builtinUniforms[BUILTIN_MATRIX_PROJECTION];
+		GLint location = builtinUniforms[BUILTIN_MATRIX_CLIP_FROM_VIEW];
 		if (location >= 0)
 		if (location >= 0)
 			glUniformMatrix4fv(location, 1, GL_FALSE, curproj.getElements());
 			glUniformMatrix4fv(location, 1, GL_FALSE, curproj.getElements());
 
 
@@ -885,7 +885,7 @@ void Shader::updateBuiltinUniforms()
 
 
 	if (tpmatrixneedsupdate)
 	if (tpmatrixneedsupdate)
 	{
 	{
-		GLint location = builtinUniforms[BUILTIN_MATRIX_TRANSFORM_PROJECTION];
+		GLint location = builtinUniforms[BUILTIN_MATRIX_CLIP_FROM_LOCAL];
 		if (location >= 0)
 		if (location >= 0)
 		{
 		{
 			Matrix4 tp_matrix(curproj, curxform);
 			Matrix4 tp_matrix(curproj, curxform);

+ 16 - 9
src/modules/graphics/wrap_Graphics.lua

@@ -72,11 +72,18 @@ GLSL.UNIFORMS = [[
 // According to the GLSL ES 1.0 spec, uniform precision must match between stages,
 // According to the GLSL ES 1.0 spec, uniform precision must match between stages,
 // but we can't guarantee that highp is always supported in fragment shaders...
 // but we can't guarantee that highp is always supported in fragment shaders...
 // We *really* don't want to use mediump for these in vertex shaders though.
 // We *really* don't want to use mediump for these in vertex shaders though.
-uniform LOVE_HIGHP_OR_MEDIUMP mat4 TransformMatrix;
-uniform LOVE_HIGHP_OR_MEDIUMP mat4 ProjectionMatrix;
-uniform LOVE_HIGHP_OR_MEDIUMP mat4 TransformProjectionMatrix;
-uniform LOVE_HIGHP_OR_MEDIUMP mat3 NormalMatrix;
-uniform LOVE_HIGHP_OR_MEDIUMP vec4 love_ScreenSize;]]
+uniform LOVE_HIGHP_OR_MEDIUMP mat4 ViewSpaceFromLocal;
+uniform LOVE_HIGHP_OR_MEDIUMP mat4 ClipSpaceFromView;
+uniform LOVE_HIGHP_OR_MEDIUMP mat4 ClipSpaceFromLocal;
+uniform LOVE_HIGHP_OR_MEDIUMP mat3 ViewNormalFromLocal;
+uniform LOVE_HIGHP_OR_MEDIUMP vec4 love_ScreenSize;
+
+// Compatibility
+#define TransformMatrix ViewSpaceFromLocal
+#define ProjectionMatrix ClipSpaceFromView
+#define TransformProjectionMatrix ClipSpaceFromLocal
+#define NormalMatrix ViewNormalFromLocal
+]]
 
 
 GLSL.FUNCTIONS = [[
 GLSL.FUNCTIONS = [[
 #ifdef GL_ES
 #ifdef GL_ES
@@ -222,13 +229,13 @@ attribute vec4 ConstantColor;
 varying vec4 VaryingTexCoord;
 varying vec4 VaryingTexCoord;
 varying vec4 VaryingColor;
 varying vec4 VaryingColor;
 
 
-vec4 position(mat4 transform_proj, vec4 vertpos);
+vec4 position(mat4 clipSpaceFromLocal, vec4 localPosition);
 
 
 void main() {
 void main() {
 	VaryingTexCoord = VertexTexCoord;
 	VaryingTexCoord = VertexTexCoord;
 	VaryingColor = gammaCorrectColor(VertexColor) * ConstantColor;
 	VaryingColor = gammaCorrectColor(VertexColor) * ConstantColor;
 	setPointSize();
 	setPointSize();
-	love_Position = position(TransformProjectionMatrix, VertexPosition);
+	love_Position = position(ClipSpaceFromLocal, VertexPosition);
 }]],
 }]],
 }
 }
 
 
@@ -424,8 +431,8 @@ end
 
 
 local defaultcode = {
 local defaultcode = {
 	vertex = [[
 	vertex = [[
-vec4 position(mat4 transform_proj, vec4 vertpos) {
-	return transform_proj * vertpos;
+vec4 position(mat4 clipSpaceFromLocal, vec4 localPosition) {
+	return clipSpaceFromLocal * localPosition;
 }]],
 }]],
 	pixel = [[
 	pixel = [[
 vec4 effect(vec4 vcolor, Image tex, vec2 texcoord, vec2 pixcoord) {
 vec4 effect(vec4 vcolor, Image tex, vec2 texcoord, vec2 pixcoord) {