Update naming convention for builtin shader matrices.

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

--HG--
branch : minor
This commit is contained in:
Alex Szpakowski
2017-07-29 01:25:56 -03:00
parent 5fc2190ce4
commit d338f274ff
4 changed files with 34 additions and 27 deletions
+10 -10
View File
@@ -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 }, { "MainTex", BUILTIN_TEXTURE_MAIN },
{ "love_VideoYChannel", BUILTIN_TEXTURE_VIDEO_Y }, { "love_VideoYChannel", BUILTIN_TEXTURE_VIDEO_Y },
{ "love_VideoCbChannel", BUILTIN_TEXTURE_VIDEO_CB }, { "love_VideoCbChannel", BUILTIN_TEXTURE_VIDEO_CB },
{ "love_VideoCrChannel", BUILTIN_TEXTURE_VIDEO_CR }, { "love_VideoCrChannel", BUILTIN_TEXTURE_VIDEO_CR },
{ "TransformMatrix", BUILTIN_MATRIX_TRANSFORM }, { "ViewSpaceFromLocal", BUILTIN_MATRIX_VIEW_FROM_LOCAL },
{ "ProjectionMatrix", BUILTIN_MATRIX_PROJECTION }, { "ClipSpaceFromView", BUILTIN_MATRIX_CLIP_FROM_VIEW },
{ "TransformProjectionMatrix", BUILTIN_MATRIX_TRANSFORM_PROJECTION }, { "ClipSpaceFromLocal", BUILTIN_MATRIX_CLIP_FROM_LOCAL },
{ "NormalMatrix", BUILTIN_MATRIX_NORMAL }, { "ViewNormalFromLocal", BUILTIN_MATRIX_VIEW_NORMAL_FROM_LOCAL },
{ "love_PointSize", BUILTIN_POINT_SIZE }, { "love_PointSize", BUILTIN_POINT_SIZE },
{ "love_ScreenSize", BUILTIN_SCREEN_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
View File
@@ -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_VIEW_FROM_LOCAL,
BUILTIN_MATRIX_PROJECTION, BUILTIN_MATRIX_CLIP_FROM_VIEW,
BUILTIN_MATRIX_TRANSFORM_PROJECTION, BUILTIN_MATRIX_CLIP_FROM_LOCAL,
BUILTIN_MATRIX_NORMAL, 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
View File
@@ -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
View File
@@ -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 ViewSpaceFromLocal;
uniform LOVE_HIGHP_OR_MEDIUMP mat4 ProjectionMatrix; uniform LOVE_HIGHP_OR_MEDIUMP mat4 ClipSpaceFromView;
uniform LOVE_HIGHP_OR_MEDIUMP mat4 TransformProjectionMatrix; uniform LOVE_HIGHP_OR_MEDIUMP mat4 ClipSpaceFromLocal;
uniform LOVE_HIGHP_OR_MEDIUMP mat3 NormalMatrix; uniform LOVE_HIGHP_OR_MEDIUMP mat3 ViewNormalFromLocal;
uniform LOVE_HIGHP_OR_MEDIUMP vec4 love_ScreenSize;]] 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) { vec4 position(mat4 clipSpaceFromLocal, vec4 localPosition) {
return transform_proj * vertpos; 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) {