From b13e0568d3ab1487b4787806b2d9f4116192983c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Sat, 11 May 2019 13:59:10 +0200 Subject: GPU: Remove ModelViewMatrix and ModelViewMatrixInverse usage --- source/blender/gpu/intern/gpu_codegen.c | 5 +++-- .../shaders/gpu_shader_instance_edges_variying_color_vert.glsl | 6 +++--- source/blender/gpu/shaders/gpu_shader_material.glsl | 9 +++------ 3 files changed, 9 insertions(+), 11 deletions(-) (limited to 'source/blender/gpu') 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 } -- cgit v1.2.3