aboutsummaryrefslogtreecommitdiff
path: root/src/rlgl.c
diff options
context:
space:
mode:
authorvictorfisac <victorfisac@gmail.com>2016-06-10 00:49:51 +0200
committervictorfisac <victorfisac@gmail.com>2016-06-10 00:49:51 +0200
commit7b07b68bfdf03f13ed705188394cb7d26f4c2594 (patch)
tree3b514d215985b838e70e62744a1964ccec794aed /src/rlgl.c
parentcbda329bfde0cadc5a1608f8c30c6b7778dec2df (diff)
downloadraylib-7b07b68bfdf03f13ed705188394cb7d26f4c2594.tar.gz
raylib-7b07b68bfdf03f13ed705188394cb7d26f4c2594.zip
Adapt standard shader to GL ES 2.0
Some shader calculations are now pre-calculated because some math functions doesn't exist in glsl 110.
Diffstat (limited to 'src/rlgl.c')
-rw-r--r--src/rlgl.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/rlgl.c b/src/rlgl.c
index c9944806..9a88a818 100644
--- a/src/rlgl.c
+++ b/src/rlgl.c
@@ -1795,8 +1795,13 @@ void rlglDrawMesh(Mesh mesh, Material material, Matrix transform)
// NOTE: standard shader specific locations are got at render time to keep Shader struct as simple as possible (with just default shader locations)
if (material.shader.id == standardShader.id)
{
+ // Transpose and inverse model transformations matrix for fragment normal calculations
+ Matrix transInvTransform = transform;
+ MatrixTranspose(&transInvTransform);
+ MatrixInvert(&transInvTransform);
+
// Send model transformations matrix to shader
- glUniformMatrix4fv(glGetUniformLocation(material.shader.id, "modelMatrix"), 1, false, MatrixToFloat(transform));
+ glUniformMatrix4fv(glGetUniformLocation(material.shader.id, "modelMatrix"), 1, false, MatrixToFloat(transInvTransform));
// Send view transformation matrix to shader. View matrix 8, 9 and 10 are view direction vector axis values (target - position)
glUniform3f(glGetUniformLocation(material.shader.id, "viewDir"), matView.m8, matView.m9, matView.m10);