aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorraysan5 <raysan5@gmail.com>2016-01-13 17:13:28 +0100
committerraysan5 <raysan5@gmail.com>2016-01-13 17:13:28 +0100
commitfb6ef2c2f4fe22552908d339cda541453e43faec (patch)
tree53d86522f6f1a5256e097a2e7bc82ce3e0101526
parentbb49102a4b5ae7bf6a34b437b133e8c5e3557f8d (diff)
downloadraylib-fb6ef2c2f4fe22552908d339cda541453e43faec.tar.gz
raylib-fb6ef2c2f4fe22552908d339cda541453e43faec.zip
Vertex shaders optimization
-rw-r--r--examples/resources/shaders/base.vs5
-rw-r--r--examples/resources/shaders/bloom.fs2
-rw-r--r--examples/resources/shaders/grayscale.fs6
-rw-r--r--examples/resources/shaders/phong.fs2
-rw-r--r--examples/resources/shaders/phong.vs4
-rw-r--r--examples/resources/shaders/shapes_base.vs9
-rw-r--r--examples/resources/shaders/shapes_grayscale.fs4
-rw-r--r--examples/resources/shaders/swirl.fs2
-rw-r--r--shaders/gl330/base.vs5
-rw-r--r--shaders/gl330/bloom.fs2
-rw-r--r--shaders/gl330/blur.fs2
-rw-r--r--shaders/gl330/cross_hatching.fs2
-rw-r--r--shaders/gl330/cross_stitching.fs2
-rw-r--r--shaders/gl330/dream_vision.fs2
-rw-r--r--shaders/gl330/fisheye.fs2
-rw-r--r--shaders/gl330/grayscale.fs6
-rw-r--r--shaders/gl330/phong.fs2
-rw-r--r--shaders/gl330/phong.vs7
-rw-r--r--shaders/gl330/pixel.fs2
-rw-r--r--shaders/gl330/posterization.fs2
-rw-r--r--shaders/gl330/predator.fs2
-rw-r--r--shaders/gl330/scanlines.fs2
-rw-r--r--shaders/gl330/swirl.fs2
-rw-r--r--shaders/gl330/template.fs4
-rw-r--r--shaders/gles100/base.vs5
-rw-r--r--shaders/gles100/bloom.fs2
-rw-r--r--shaders/gles100/blur.fs2
-rw-r--r--shaders/gles100/cross_hatching.fs2
-rw-r--r--shaders/gles100/cross_stitching.fs2
-rw-r--r--shaders/gles100/dream_vision.fs2
-rw-r--r--shaders/gles100/fisheye.fs2
-rw-r--r--shaders/gles100/grayscale.fs6
-rw-r--r--shaders/gles100/pixel.fs2
-rw-r--r--shaders/gles100/posterization.fs2
-rw-r--r--shaders/gles100/predator.fs2
-rw-r--r--shaders/gles100/scanlines.fs2
-rw-r--r--shaders/gles100/swirl.fs2
-rw-r--r--shaders/gles100/template.fs4
-rw-r--r--src/raylib.h4
-rw-r--r--src/rlgl.c53
-rw-r--r--src/rlgl.h4
41 files changed, 86 insertions, 92 deletions
diff --git a/examples/resources/shaders/base.vs b/examples/resources/shaders/base.vs
index 59eae0a0..b0f930b7 100644
--- a/examples/resources/shaders/base.vs
+++ b/examples/resources/shaders/base.vs
@@ -6,8 +6,7 @@ in vec3 vertexNormal;
out vec2 fragTexCoord;
-uniform mat4 projectionMatrix;
-uniform mat4 modelviewMatrix;
+uniform mat4 mvpMatrix;
// NOTE: Add here your custom variables
@@ -15,5 +14,5 @@ void main()
{
fragTexCoord = vertexTexCoord;
- gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0);
+ gl_Position = mvpMatrix*vec4(vertexPosition, 1.0);
} \ No newline at end of file
diff --git a/examples/resources/shaders/bloom.fs b/examples/resources/shaders/bloom.fs
index f9cebe18..2833ce33 100644
--- a/examples/resources/shaders/bloom.fs
+++ b/examples/resources/shaders/bloom.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/examples/resources/shaders/grayscale.fs b/examples/resources/shaders/grayscale.fs
index 38337e00..af50b8c1 100644
--- a/examples/resources/shaders/grayscale.fs
+++ b/examples/resources/shaders/grayscale.fs
@@ -5,16 +5,16 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
void main()
{
- vec4 base = texture2D(texture0, fragTexCoord)*tintColor;
+ vec4 base = texture2D(texture0, fragTexCoord)*fragTintColor;
// Convert to grayscale using NTSC conversion weights
float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114));
- fragColor = vec4(gray, gray, gray, tintColor.a);
+ fragColor = vec4(gray, gray, gray, fragTintColor.a);
} \ No newline at end of file
diff --git a/examples/resources/shaders/phong.fs b/examples/resources/shaders/phong.fs
index bb8826f4..75b7e6d7 100644
--- a/examples/resources/shaders/phong.fs
+++ b/examples/resources/shaders/phong.fs
@@ -6,7 +6,7 @@ in vec3 fragNormal;
// Diffuse data
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// Light attributes
uniform vec3 light_ambientColor = vec3(0.6, 0.3, 0);
diff --git a/examples/resources/shaders/phong.vs b/examples/resources/shaders/phong.vs
index 25163902..c6ef77de 100644
--- a/examples/resources/shaders/phong.vs
+++ b/examples/resources/shaders/phong.vs
@@ -6,8 +6,8 @@ in vec2 vertexTexCoord;
in vec3 vertexNormal;
// Projection and model data
-uniform mat4 projectionMatrix;
-uniform mat4 modelviewMatrix;
+uniform mat4 mvpMatrix;
+
uniform mat4 modelMatrix;
// Attributes to fragment shader
diff --git a/examples/resources/shaders/shapes_base.vs b/examples/resources/shaders/shapes_base.vs
index 78e543b7..1fd686be 100644
--- a/examples/resources/shaders/shapes_base.vs
+++ b/examples/resources/shaders/shapes_base.vs
@@ -4,16 +4,15 @@ attribute vec3 vertexPosition;
attribute vec2 vertexTexCoord;
attribute vec4 vertexColor;
-uniform mat4 projectionMatrix;
-uniform mat4 modelviewMatrix;
+uniform mat4 mvpMatrix;
varying vec2 fragTexCoord;
-varying vec4 fragColor;
+varying vec4 fragTintColor;
void main()
{
fragTexCoord = vertexTexCoord;
- fragColor = vertexColor;
+ fragTintColor = vertexColor;
- gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0);
+ gl_Position = mvpMatrix*vec4(vertexPosition, 1.0);
} \ No newline at end of file
diff --git a/examples/resources/shaders/shapes_grayscale.fs b/examples/resources/shaders/shapes_grayscale.fs
index 1b778871..23ba9153 100644
--- a/examples/resources/shaders/shapes_grayscale.fs
+++ b/examples/resources/shaders/shapes_grayscale.fs
@@ -2,11 +2,11 @@
uniform sampler2D texture0;
varying vec2 fragTexCoord;
-varying vec4 fragColor;
+varying vec4 fragTintColor;
void main()
{
- vec4 base = texture2D(texture0, fragTexCoord)*fragColor;
+ vec4 base = texture2D(texture0, fragTexCoord)*fragTintColor;
// Convert to grayscale using NTSC conversion weights
float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114));
diff --git a/examples/resources/shaders/swirl.fs b/examples/resources/shaders/swirl.fs
index ba26cc05..ace6e79d 100644
--- a/examples/resources/shaders/swirl.fs
+++ b/examples/resources/shaders/swirl.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/base.vs b/shaders/gl330/base.vs
index 59eae0a0..b0f930b7 100644
--- a/shaders/gl330/base.vs
+++ b/shaders/gl330/base.vs
@@ -6,8 +6,7 @@ in vec3 vertexNormal;
out vec2 fragTexCoord;
-uniform mat4 projectionMatrix;
-uniform mat4 modelviewMatrix;
+uniform mat4 mvpMatrix;
// NOTE: Add here your custom variables
@@ -15,5 +14,5 @@ void main()
{
fragTexCoord = vertexTexCoord;
- gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0);
+ gl_Position = mvpMatrix*vec4(vertexPosition, 1.0);
} \ No newline at end of file
diff --git a/shaders/gl330/bloom.fs b/shaders/gl330/bloom.fs
index f9cebe18..2833ce33 100644
--- a/shaders/gl330/bloom.fs
+++ b/shaders/gl330/bloom.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/blur.fs b/shaders/gl330/blur.fs
index b4e5bd2b..bd2b521f 100644
--- a/shaders/gl330/blur.fs
+++ b/shaders/gl330/blur.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/cross_hatching.fs b/shaders/gl330/cross_hatching.fs
index e2362212..7e25b25b 100644
--- a/shaders/gl330/cross_hatching.fs
+++ b/shaders/gl330/cross_hatching.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/cross_stitching.fs b/shaders/gl330/cross_stitching.fs
index 041bf1dc..73f867b6 100644
--- a/shaders/gl330/cross_stitching.fs
+++ b/shaders/gl330/cross_stitching.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/dream_vision.fs b/shaders/gl330/dream_vision.fs
index de9c04eb..f9316342 100644
--- a/shaders/gl330/dream_vision.fs
+++ b/shaders/gl330/dream_vision.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/fisheye.fs b/shaders/gl330/fisheye.fs
index d0e42cca..bbbff65c 100644
--- a/shaders/gl330/fisheye.fs
+++ b/shaders/gl330/fisheye.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/grayscale.fs b/shaders/gl330/grayscale.fs
index 38337e00..af50b8c1 100644
--- a/shaders/gl330/grayscale.fs
+++ b/shaders/gl330/grayscale.fs
@@ -5,16 +5,16 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
void main()
{
- vec4 base = texture2D(texture0, fragTexCoord)*tintColor;
+ vec4 base = texture2D(texture0, fragTexCoord)*fragTintColor;
// Convert to grayscale using NTSC conversion weights
float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114));
- fragColor = vec4(gray, gray, gray, tintColor.a);
+ fragColor = vec4(gray, gray, gray, fragTintColor.a);
} \ No newline at end of file
diff --git a/shaders/gl330/phong.fs b/shaders/gl330/phong.fs
index bb8826f4..75b7e6d7 100644
--- a/shaders/gl330/phong.fs
+++ b/shaders/gl330/phong.fs
@@ -6,7 +6,7 @@ in vec3 fragNormal;
// Diffuse data
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// Light attributes
uniform vec3 light_ambientColor = vec3(0.6, 0.3, 0);
diff --git a/shaders/gl330/phong.vs b/shaders/gl330/phong.vs
index 25163902..ee6d34bf 100644
--- a/shaders/gl330/phong.vs
+++ b/shaders/gl330/phong.vs
@@ -6,8 +6,7 @@ in vec2 vertexTexCoord;
in vec3 vertexNormal;
// Projection and model data
-uniform mat4 projectionMatrix;
-uniform mat4 modelviewMatrix;
+uniform mat4 mvpMatrix;
uniform mat4 modelMatrix;
// Attributes to fragment shader
@@ -21,8 +20,8 @@ void main()
// Calculate view vector normal from model
mat3 normalMatrix = transpose(inverse(mat3(modelMatrix)));
- fragNormal = normalize(normalMatrix * vertexNormal);
+ fragNormal = normalize(normalMatrix*vertexNormal);
// Calculate final vertex position
- gl_Position = projectionMatrix * modelviewMatrix * vec4(vertexPosition, 1.0);
+ gl_Position = mvpMatrix*vec4(vertexPosition, 1.0);
} \ No newline at end of file
diff --git a/shaders/gl330/pixel.fs b/shaders/gl330/pixel.fs
index ec9e13d7..feee1423 100644
--- a/shaders/gl330/pixel.fs
+++ b/shaders/gl330/pixel.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/posterization.fs b/shaders/gl330/posterization.fs
index 652cf609..a4e49466 100644
--- a/shaders/gl330/posterization.fs
+++ b/shaders/gl330/posterization.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/predator.fs b/shaders/gl330/predator.fs
index 77882917..2295d01b 100644
--- a/shaders/gl330/predator.fs
+++ b/shaders/gl330/predator.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/scanlines.fs b/shaders/gl330/scanlines.fs
index 7f33f882..57297299 100644
--- a/shaders/gl330/scanlines.fs
+++ b/shaders/gl330/scanlines.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/swirl.fs b/shaders/gl330/swirl.fs
index 18a47cec..e88b59c9 100644
--- a/shaders/gl330/swirl.fs
+++ b/shaders/gl330/swirl.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gl330/template.fs b/shaders/gl330/template.fs
index 92221959..660e8484 100644
--- a/shaders/gl330/template.fs
+++ b/shaders/gl330/template.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
@@ -15,5 +15,5 @@ void main()
// NOTE: Implement here your fragment shader code
- fragColor = texelColor*tintColor;
+ fragColor = texelColor*fragTintColor;
}
diff --git a/shaders/gles100/base.vs b/shaders/gles100/base.vs
index eff89c56..9f339382 100644
--- a/shaders/gles100/base.vs
+++ b/shaders/gles100/base.vs
@@ -6,8 +6,7 @@ attribute vec3 vertexNormal;
varying vec2 fragTexCoord;
-uniform mat4 projectionMatrix;
-uniform mat4 modelviewMatrix;
+uniform mat4 mvpMatrix;
// NOTE: Add here your custom variables
@@ -17,5 +16,5 @@ void main()
fragTexCoord = vertexTexCoord;
- gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0);
+ gl_Position = mvpMatrix*vec4(vertexPosition, 1.0);
} \ No newline at end of file
diff --git a/shaders/gles100/bloom.fs b/shaders/gles100/bloom.fs
index eba44d41..33754c7e 100644
--- a/shaders/gles100/bloom.fs
+++ b/shaders/gles100/bloom.fs
@@ -5,7 +5,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gles100/blur.fs b/shaders/gles100/blur.fs
index 3c865ca0..a1069c6f 100644
--- a/shaders/gles100/blur.fs
+++ b/shaders/gles100/blur.fs
@@ -4,7 +4,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gles100/cross_hatching.fs b/shaders/gles100/cross_hatching.fs
index c308acb6..cf01b65e 100644
--- a/shaders/gles100/cross_hatching.fs
+++ b/shaders/gles100/cross_hatching.fs
@@ -5,7 +5,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gles100/cross_stitching.fs b/shaders/gles100/cross_stitching.fs
index 09b3ad4a..f1afef04 100644
--- a/shaders/gles100/cross_stitching.fs
+++ b/shaders/gles100/cross_stitching.fs
@@ -5,7 +5,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gles100/dream_vision.fs b/shaders/gles100/dream_vision.fs
index 6cbdfcd6..bb828970 100644
--- a/shaders/gles100/dream_vision.fs
+++ b/shaders/gles100/dream_vision.fs
@@ -5,7 +5,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gles100/fisheye.fs b/shaders/gles100/fisheye.fs
index a21257c7..e7a4485c 100644
--- a/shaders/gles100/fisheye.fs
+++ b/shaders/gles100/fisheye.fs
@@ -5,7 +5,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gles100/grayscale.fs b/shaders/gles100/grayscale.fs
index 07e79614..e55545e2 100644
--- a/shaders/gles100/grayscale.fs
+++ b/shaders/gles100/grayscale.fs
@@ -5,16 +5,16 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
void main()
{
- vec4 base = texture2D(texture0, fragTexCoord)*tintColor;
+ vec4 base = texture2D(texture0, fragTexCoord)*fragTintColor;
// Convert to grayscale using NTSC conversion weights
float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114));
- gl_FragColor = vec4(gray, gray, gray, tintColor.a);
+ gl_FragColor = vec4(gray, gray, gray, fragTintColor.a);
} \ No newline at end of file
diff --git a/shaders/gles100/pixel.fs b/shaders/gles100/pixel.fs
index eceff6e3..552e8900 100644
--- a/shaders/gles100/pixel.fs
+++ b/shaders/gles100/pixel.fs
@@ -5,7 +5,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gles100/posterization.fs b/shaders/gles100/posterization.fs
index f635305e..4f4c4b93 100644
--- a/shaders/gles100/posterization.fs
+++ b/shaders/gles100/posterization.fs
@@ -5,7 +5,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gles100/predator.fs b/shaders/gles100/predator.fs
index c85048a6..2fbdc7af 100644
--- a/shaders/gles100/predator.fs
+++ b/shaders/gles100/predator.fs
@@ -5,7 +5,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gles100/scanlines.fs b/shaders/gles100/scanlines.fs
index 56a6f694..85de158d 100644
--- a/shaders/gles100/scanlines.fs
+++ b/shaders/gles100/scanlines.fs
@@ -5,7 +5,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gles100/swirl.fs b/shaders/gles100/swirl.fs
index b50ed39e..b0d54b23 100644
--- a/shaders/gles100/swirl.fs
+++ b/shaders/gles100/swirl.fs
@@ -5,7 +5,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/shaders/gles100/template.fs b/shaders/gles100/template.fs
index 9d9499f3..1f4b8ccf 100644
--- a/shaders/gles100/template.fs
+++ b/shaders/gles100/template.fs
@@ -5,7 +5,7 @@ precision mediump float;
varying vec2 fragTexCoord;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
@@ -15,5 +15,5 @@ void main()
// NOTE: Implement here your fragment shader code
- gl_FragColor = texelColor*tintColor;
+ gl_FragColor = texelColor*fragTintColor;
} \ No newline at end of file
diff --git a/src/raylib.h b/src/raylib.h
index d6b28e53..1a99f007 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -336,8 +336,8 @@ typedef struct Shader {
int colorLoc; // Color attibute location point (vertex shader)
// Uniforms
- int projectionLoc; // Projection matrix uniform location point (vertex shader)
- int modelviewLoc; // ModelView matrix uniform location point (vertex shader)
+ int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader)
+
int modelLoc; // Model transformation matrix uniform location point (vertex shader)
int viewLoc; // View transformation matrix uniform location point (vertex shader)
int tintColorLoc; // Color uniform location point (fragment shader)
diff --git a/src/rlgl.c b/src/rlgl.c
index 2f525f47..e3c763be 100644
--- a/src/rlgl.c
+++ b/src/rlgl.c
@@ -1295,9 +1295,10 @@ void rlglDraw(void)
if ((lines.vCounter > 0) || (triangles.vCounter > 0) || (quads.vCounter > 0))
{
glUseProgram(currentShader.id);
+
+ Matrix matMVP = MatrixMultiply(modelview, projection); // Create modelview-projection matrix
- glUniformMatrix4fv(currentShader.projectionLoc, 1, false, MatrixToFloat(projection));
- glUniformMatrix4fv(currentShader.modelviewLoc, 1, false, MatrixToFloat(modelview));
+ glUniformMatrix4fv(currentShader.mvpLoc, 1, false, MatrixToFloat(matMVP));
glUniform1i(currentShader.mapDiffuseLoc, 0);
}
@@ -1520,14 +1521,14 @@ void rlglDrawModel(Model model, Vector3 position, float rotationAngle, Vector3 r
Matrix matModelView = MatrixMultiply(matModel, matView); // Transform to camera-space coordinates
// Calculate model-view-projection matrix (MVP)
- //Matrix matMVP = MatrixMultiply(matModelView, matProjection); // Transform to screen-space coordinates
+ Matrix matMVP = MatrixMultiply(matModelView, matProjection); // Transform to screen-space coordinates
// NOTE: Drawing in OpenGL 3.3+, matrices are passed to shader
// TODO: Reduce number of matrices passed to shaders, use only matMVP
glUniformMatrix4fv(model.shader.modelLoc, 1, false, MatrixToFloat(matModel));
glUniformMatrix4fv(model.shader.viewLoc, 1, false, MatrixToFloat(matView));
- glUniformMatrix4fv(model.shader.projectionLoc, 1, false, MatrixToFloat(matProjection));
- glUniformMatrix4fv(model.shader.modelviewLoc, 1, false, MatrixToFloat(matModelView));
+
+ glUniformMatrix4fv(model.shader.mvpLoc, 1, false, MatrixToFloat(matMVP));
// Apply color tinting to model
// NOTE: Just update one uniform on fragment shader
@@ -2247,13 +2248,13 @@ Shader LoadShader(char *vsFileName, char *fsFileName)
shader.colorLoc = -1;
// Get handles to GLSL uniform locations (vertex shader)
- shader.modelviewLoc = glGetUniformLocation(shader.id, "modelviewMatrix");
+ shader.mvpLoc = glGetUniformLocation(shader.id, "mvpMatrix");
+
shader.modelLoc = glGetUniformLocation(shader.id, "modelMatrix");
shader.viewLoc = glGetUniformLocation(shader.id, "viewMatrix");
- shader.projectionLoc = glGetUniformLocation(shader.id, "projectionMatrix");
// Get handles to GLSL uniform locations (fragment shader)
- shader.tintColorLoc = glGetUniformLocation(shader.id, "tintColor");
+ shader.tintColorLoc = glGetUniformLocation(shader.id, "fragTintColor");
shader.mapDiffuseLoc = glGetUniformLocation(shader.id, "texture0");
shader.mapNormalLoc = -1; // It can be set later
shader.mapSpecularLoc = -1; // It can be set later
@@ -2738,40 +2739,39 @@ static Shader LoadDefaultShader(void)
"in vec2 vertexTexCoord; \n"
"in vec4 vertexColor; \n"
"out vec2 fragTexCoord; \n"
- "out vec4 tintColor; \n"
+ "out vec4 fragTintColor; \n"
#elif defined(GRAPHICS_API_OPENGL_ES2)
char vShaderStr[] = "#version 100 \n"
"attribute vec3 vertexPosition; \n"
"attribute vec2 vertexTexCoord; \n"
"attribute vec4 vertexColor; \n"
"varying vec2 fragTexCoord; \n"
- "varying vec4 tintColor; \n"
+ "varying vec4 fragTintColor; \n"
#endif
- "uniform mat4 projectionMatrix; \n"
- "uniform mat4 modelviewMatrix; \n"
+ "uniform mat4 mvpMatrix; \n"
"void main() \n"
"{ \n"
" fragTexCoord = vertexTexCoord; \n"
- " tintColor = vertexColor; \n"
- " gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0); \n"
+ " fragTintColor = vertexColor; \n"
+ " gl_Position = mvpMatrix*vec4(vertexPosition, 1.0); \n"
"} \n";
// Fragment shader directly defined, no external file required
#if defined(GRAPHICS_API_OPENGL_33)
char fShaderStr[] = "#version 330 \n"
"in vec2 fragTexCoord; \n"
- "in vec4 tintColor; \n"
+ "in vec4 fragTintColor; \n"
#elif defined(GRAPHICS_API_OPENGL_ES2)
char fShaderStr[] = "#version 100 \n"
"precision mediump float; \n" // precision required for OpenGL ES2 (WebGL)
"varying vec2 fragTexCoord; \n"
- "varying vec4 tintColor; \n"
+ "varying vec4 fragTintColor; \n"
#endif
"uniform sampler2D texture0; \n"
"void main() \n"
"{ \n"
" vec4 texelColor = texture2D(texture0, fragTexCoord); \n" // NOTE: texture2D() is deprecated on OpenGL 3.3 and ES 3.0, use texture() instead
- " gl_FragColor = texelColor*tintColor; \n"
+ " gl_FragColor = texelColor*fragTintColor; \n"
"} \n";
shader.id = LoadShaderProgram(vShaderStr, fShaderStr);
@@ -2788,10 +2788,10 @@ static Shader LoadDefaultShader(void)
shader.normalLoc = -1;
// Get handles to GLSL uniform locations (vertex shader)
- shader.modelviewLoc = glGetUniformLocation(shader.id, "modelviewMatrix");
+ shader.mvpLoc = glGetUniformLocation(shader.id, "mvpMatrix");
+
shader.modelLoc = glGetUniformLocation(shader.id, "modelMatrix");
shader.viewLoc = glGetUniformLocation(shader.id, "viewMatrix");
- shader.projectionLoc = glGetUniformLocation(shader.id, "projectionMatrix");
// Get handles to GLSL uniform locations (fragment shader)
shader.tintColorLoc = -1;
@@ -2831,12 +2831,11 @@ static Shader LoadSimpleShader(void)
"attribute vec3 vertexNormal; \n"
"varying vec2 fragTexCoord; \n"
#endif
- "uniform mat4 projectionMatrix; \n"
- "uniform mat4 modelviewMatrix; \n"
+ "uniform mat4 mvpMatrix; \n"
"void main() \n"
"{ \n"
" fragTexCoord = vertexTexCoord; \n"
- " gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0); \n"
+ " gl_Position = mvpMatrix*vec4(vertexPosition, 1.0); \n"
"} \n";
// Fragment shader directly defined, no external file required
@@ -2849,11 +2848,11 @@ static Shader LoadSimpleShader(void)
"varying vec2 fragTexCoord; \n"
#endif
"uniform sampler2D texture0; \n"
- "uniform vec4 tintColor; \n"
+ "uniform vec4 fragTintColor; \n"
"void main() \n"
"{ \n"
" vec4 texelColor = texture2D(texture0, fragTexCoord); \n" // NOTE: texture2D() is deprecated on OpenGL 3.3 and ES 3.0, use texture() instead
- " gl_FragColor = texelColor*tintColor; \n"
+ " gl_FragColor = texelColor*fragTintColor; \n"
"} \n";
shader.id = LoadShaderProgram(vShaderStr, fShaderStr);
@@ -2870,13 +2869,13 @@ static Shader LoadSimpleShader(void)
shader.colorLoc = -1;
// Get handles to GLSL uniform locations (vertex shader)
- shader.modelviewLoc = glGetUniformLocation(shader.id, "modelviewMatrix");
+ shader.mvpLoc = glGetUniformLocation(shader.id, "mvpMatrix");
+
shader.modelLoc = glGetUniformLocation(shader.id, "modelMatrix");
shader.viewLoc = glGetUniformLocation(shader.id, "viewMatrix");
- shader.projectionLoc = glGetUniformLocation(shader.id, "projectionMatrix");
// Get handles to GLSL uniform locations (fragment shader)
- shader.tintColorLoc = glGetUniformLocation(shader.id, "tintColor");
+ shader.tintColorLoc = glGetUniformLocation(shader.id, "fragTintColor");
shader.mapDiffuseLoc = glGetUniformLocation(shader.id, "texture0");
shader.mapNormalLoc = -1; // It can be set later
shader.mapSpecularLoc = -1; // It can be set later
diff --git a/src/rlgl.h b/src/rlgl.h
index 93b56bb2..d33844ce 100644
--- a/src/rlgl.h
+++ b/src/rlgl.h
@@ -159,8 +159,8 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion;
int colorLoc; // Color attibute location point (vertex shader)
// Uniforms
- int projectionLoc; // Projection matrix uniform location point (vertex shader)
- int modelviewLoc; // ModelView matrix uniform location point (vertex shader)
+ int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader)
+
int modelLoc; // Model transformation matrix uniform location point (vertex shader)
int viewLoc; // View transformation matrix uniform location point (vertex shader)
int tintColorLoc; // Color uniform location point (fragment shader)