Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-05-11 14:59:10 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-05-14 11:57:03 +0300
commitb13e0568d3ab1487b4787806b2d9f4116192983c (patch)
treea1da6f64b020dd2ed8385a0ea71909fa417efa6c /source/blender/gpu
parent49a7031caae8be7fa556b60b67b3fc978d0d947e (diff)
GPU: Remove ModelViewMatrix and ModelViewMatrixInverse usage
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/intern/gpu_codegen.c5
-rw-r--r--source/blender/gpu/shaders/gpu_shader_instance_edges_variying_color_vert.glsl6
-rw-r--r--source/blender/gpu/shaders/gpu_shader_material.glsl9
3 files changed, 9 insertions, 11 deletions
diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c
index 6259780c261..b909839473f 100644
--- a/source/blender/gpu/intern/gpu_codegen.c
+++ b/source/blender/gpu/intern/gpu_codegen.c
@@ -883,10 +883,11 @@ static char *code_generate_fragment(GPUMaterial *material,
BLI_dynstr_append(ds, "\t#define viewinv ViewMatrixInverse\n");
}
if (builtins & GPU_LOC_TO_VIEW_MATRIX) {
- BLI_dynstr_append(ds, "\t#define localtoviewmat ModelViewMatrix\n");
+ BLI_dynstr_append(ds, "\t#define localtoviewmat (ViewMatrix * ModelMatrix)\n");
}
if (builtins & GPU_INVERSE_LOC_TO_VIEW_MATRIX) {
- BLI_dynstr_append(ds, "\t#define invlocaltoviewmat ModelViewMatrixInverse\n");
+ BLI_dynstr_append(ds,
+ "\t#define invlocaltoviewmat (ModelMatrixInverse * ViewMatrixInverse)\n");
}
if (builtins & GPU_VIEW_NORMAL) {
BLI_dynstr_append(ds, "#ifdef HAIR_SHADER\n");
diff --git a/source/blender/gpu/shaders/gpu_shader_instance_edges_variying_color_vert.glsl b/source/blender/gpu/shaders/gpu_shader_instance_edges_variying_color_vert.glsl
index b4a6b0de33f..62a526cae49 100644
--- a/source/blender/gpu/shaders/gpu_shader_instance_edges_variying_color_vert.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_instance_edges_variying_color_vert.glsl
@@ -35,12 +35,12 @@ void main()
{
vec3 eye;
- mat4 ModelViewMatrix = ViewMatrix * InstanceModelMatrix;
+ mat4 model_view_matrix = ViewMatrix * InstanceModelMatrix;
vec4 pos_4d = vec4(pos, 1.0);
- MV_pos = ModelViewMatrix * pos_4d;
+ MV_pos = model_view_matrix * pos_4d;
- mat3 normal_matrix = transpose(inverse(mat3(ModelViewMatrix)));
+ mat3 normal_matrix = transpose(inverse(mat3(model_view_matrix)));
/* if persp */
if (ProjectionMatrix[3][3] == 0.0) {
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index 768f5ddb057..03999b2277c 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -1,7 +1,4 @@
-uniform mat4 ModelViewMatrix;
-uniform mat4 ModelViewMatrixInverse;
-
#ifndef USE_ATTR
uniform mat4 ModelMatrix;
uniform mat4 ModelMatrixInverse;
@@ -1734,11 +1731,11 @@ void node_tex_environment_texco(vec3 viewvec, out vec3 worldvec)
vec4 v = (ProjectionMatrix[3][3] == 0.0) ? vec4(viewvec, 1.0) : vec4(0.0, 0.0, 1.0, 1.0);
vec4 co_homogenous = (ProjectionMatrixInverse * v);
- vec4 co = vec4(co_homogenous.xyz / co_homogenous.w, 0.0);
+ vec3 co = co_homogenous.xyz / co_homogenous.w;
# if defined(WORLD_BACKGROUND) || defined(PROBE_CAPTURE)
- worldvec = (ViewMatrixInverse * co).xyz;
+ worldvec = mat3(ViewMatrixInverse) * co;
# else
- worldvec = (ModelViewMatrixInverse * co).xyz;
+ worldvec = mat3(ModelMatrixInverse) * (mat3(ViewMatrixInverse) * co);
# endif
#endif
}