diff options
| author | raysan5 <[email protected]> | 2021-03-31 20:44:16 +0200 |
|---|---|---|
| committer | raysan5 <[email protected]> | 2021-03-31 20:44:16 +0200 |
| commit | cdc3754449da5cf8c83843f395dd97e71a7eba30 (patch) | |
| tree | 2b850fbf711c08985840db841b778ab9584f2e2b /src | |
| parent | 2488d361b6c9e65ba8e4ebc29bbc58a9bc3365ea (diff) | |
| download | raylib-cdc3754449da5cf8c83843f395dd97e71a7eba30.tar.gz raylib-cdc3754449da5cf8c83843f395dd97e71a7eba30.zip | |
ADDED: Support model normal matrix location #1691
Diffstat (limited to 'src')
| -rw-r--r-- | src/core.c | 7 | ||||
| -rw-r--r-- | src/models.c | 3 | ||||
| -rw-r--r-- | src/raylib.h | 3 | ||||
| -rw-r--r-- | src/rlgl.h | 1 |
4 files changed, 10 insertions, 4 deletions
@@ -2055,9 +2055,10 @@ Shader LoadShader(const char *vsFileName, const char *fsFileName) shader.locs[SHADER_LOC_VERTEX_COLOR] = rlGetLocationAttrib(shader.id, DEFAULT_SHADER_ATTRIB_NAME_COLOR); // Get handles to GLSL uniform locations (vertex shader) - shader.locs[SHADER_LOC_MATRIX_MVP] = rlGetLocationUniform(shader.id, "mvp"); - shader.locs[SHADER_LOC_MATRIX_PROJECTION] = rlGetLocationUniform(shader.id, "projection"); - shader.locs[SHADER_LOC_MATRIX_VIEW] = rlGetLocationUniform(shader.id, "view"); + shader.locs[SHADER_LOC_MATRIX_MVP] = rlGetLocationUniform(shader.id, "mvp"); + shader.locs[SHADER_LOC_MATRIX_VIEW] = rlGetLocationUniform(shader.id, "view"); + shader.locs[SHADER_LOC_MATRIX_PROJECTION] = rlGetLocationUniform(shader.id, "projection"); + shader.locs[SHADER_LOC_MATRIX_NORMAL] = rlGetLocationUniform(shader.id, "matNormal"); // Get handles to GLSL uniform locations (fragment shader) shader.locs[SHADER_LOC_COLOR_DIFFUSE] = rlGetLocationUniform(shader.id, "colDiffuse"); diff --git a/src/models.c b/src/models.c index 9dfdc0ea..b0b54a21 100644 --- a/src/models.c +++ b/src/models.c @@ -1058,6 +1058,9 @@ void DrawMeshInstanced(Mesh mesh, Material material, Matrix *transforms, int ins // transform: function parameter transformation matModelView = MatrixMultiply(transforms[0], MatrixMultiply(rlGetMatrixTransform(), matView)); } + + // Upload model normal matrix (if locations available) + if (material.shader.locs[SHADER_LOC_MATRIX_NORMAL] != -1) rlSetUniformMatrix(material.shader.locs[SHADER_LOC_MATRIX_NORMAL], MatrixTranspose(MatrixInvert(matModelView))); //----------------------------------------------------- // Bind active texture maps (if available) diff --git a/src/raylib.h b/src/raylib.h index 44adb35a..aac17098 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -739,9 +739,10 @@ typedef enum { SHADER_LOC_VERTEX_TANGENT, SHADER_LOC_VERTEX_COLOR, SHADER_LOC_MATRIX_MVP, - SHADER_LOC_MATRIX_MODEL, SHADER_LOC_MATRIX_VIEW, SHADER_LOC_MATRIX_PROJECTION, + SHADER_LOC_MATRIX_MODEL, + SHADER_LOC_MATRIX_NORMAL, SHADER_LOC_VECTOR_VIEW, SHADER_LOC_COLOR_DIFFUSE, SHADER_LOC_COLOR_SPECULAR, @@ -417,6 +417,7 @@ typedef enum { SHADER_LOC_MATRIX_MVP, SHADER_LOC_MATRIX_MODEL, SHADER_LOC_MATRIX_VIEW, + SHADER_LOC_MATRIX_NORMAL, SHADER_LOC_MATRIX_PROJECTION, SHADER_LOC_VECTOR_VIEW, SHADER_LOC_COLOR_DIFFUSE, |
