From d338f274ffbd2c91ed94bc13abaa6126a684ed59 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sat, 29 Jul 2017 01:25:56 -0300 Subject: [PATCH] Update naming convention for builtin shader matrices. - ClipSpaceFromLocal replaces TransformProjectionMatrix - ViewSpaceFromLocal replaces TransformMatrix - ClipSpaceFromView replaces ProjectionMatrix - ViewNormalFromLocal replaces NormalMatrix --HG-- branch : minor --- src/modules/graphics/Shader.cpp | 20 ++++++++++---------- src/modules/graphics/Shader.h | 8 ++++---- src/modules/graphics/opengl/Shader.cpp | 8 ++++---- src/modules/graphics/wrap_Graphics.lua | 25 ++++++++++++++++--------- 4 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/modules/graphics/Shader.cpp b/src/modules/graphics/Shader.cpp index 0e220d829..dcd50d8e8 100644 --- a/src/modules/graphics/Shader.cpp +++ b/src/modules/graphics/Shader.cpp @@ -351,16 +351,16 @@ StringMap Shader::stageNames(Shader StringMap::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::builtinNames(Shader::builtinNameEntries, sizeof(Shader::builtinNameEntries)); diff --git a/src/modules/graphics/Shader.h b/src/modules/graphics/Shader.h index 31ff693b7..c684df384 100644 --- a/src/modules/graphics/Shader.h +++ b/src/modules/graphics/Shader.h @@ -73,10 +73,10 @@ public: BUILTIN_TEXTURE_VIDEO_Y, BUILTIN_TEXTURE_VIDEO_CB, 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_SCREEN_SIZE, BUILTIN_MAX_ENUM diff --git a/src/modules/graphics/opengl/Shader.cpp b/src/modules/graphics/opengl/Shader.cpp index 35636c5cd..b465d6e0e 100644 --- a/src/modules/graphics/opengl/Shader.cpp +++ b/src/modules/graphics/opengl/Shader.cpp @@ -855,14 +855,14 @@ void Shader::updateBuiltinUniforms() // Only upload the matrices if they've changed. 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) 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_MATRIX_NORMAL]; + location = builtinUniforms[BUILTIN_MATRIX_VIEW_NORMAL_FROM_LOCAL]; if (location >= 0) { Matrix3 normalmatrix = Matrix3(curxform).transposedInverse(); @@ -875,7 +875,7 @@ void Shader::updateBuiltinUniforms() 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) glUniformMatrix4fv(location, 1, GL_FALSE, curproj.getElements()); @@ -885,7 +885,7 @@ void Shader::updateBuiltinUniforms() if (tpmatrixneedsupdate) { - GLint location = builtinUniforms[BUILTIN_MATRIX_TRANSFORM_PROJECTION]; + GLint location = builtinUniforms[BUILTIN_MATRIX_CLIP_FROM_LOCAL]; if (location >= 0) { Matrix4 tp_matrix(curproj, curxform); diff --git a/src/modules/graphics/wrap_Graphics.lua b/src/modules/graphics/wrap_Graphics.lua index 529e7768d..386d2e02e 100644 --- a/src/modules/graphics/wrap_Graphics.lua +++ b/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, // 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. -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 = [[ #ifdef GL_ES @@ -222,13 +229,13 @@ attribute vec4 ConstantColor; varying vec4 VaryingTexCoord; varying vec4 VaryingColor; -vec4 position(mat4 transform_proj, vec4 vertpos); +vec4 position(mat4 clipSpaceFromLocal, vec4 localPosition); void main() { VaryingTexCoord = VertexTexCoord; VaryingColor = gammaCorrectColor(VertexColor) * ConstantColor; setPointSize(); - love_Position = position(TransformProjectionMatrix, VertexPosition); + love_Position = position(ClipSpaceFromLocal, VertexPosition); }]], } @@ -424,8 +431,8 @@ end local defaultcode = { vertex = [[ -vec4 position(mat4 transform_proj, vec4 vertpos) { - return transform_proj * vertpos; +vec4 position(mat4 clipSpaceFromLocal, vec4 localPosition) { + return clipSpaceFromLocal * localPosition; }]], pixel = [[ vec4 effect(vec4 vcolor, Image tex, vec2 texcoord, vec2 pixcoord) {