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[] =
{
{ "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));
+4 -4
View File
@@ -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
+4 -4
View File
@@ -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);
+16 -9
View File
@@ -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) {