From 20421ef9528c562a39b92e18d3e1f858df228953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 14 May 2019 00:48:17 +0200 Subject: Cleanup: DRW: Move ModelMatrix declaration to common_view_lib --- .../engines/eevee/shaders/lit_surface_vert.glsl | 5 -- .../draw/engines/eevee/shaders/prepass_vert.glsl | 3 -- .../draw/engines/eevee/shaders/shadow_vert.glsl | 4 -- .../gpencil/shaders/gpencil_edit_point_vert.glsl | 1 - .../engines/gpencil/shaders/gpencil_fill_vert.glsl | 1 - .../gpencil/shaders/gpencil_point_vert.glsl | 2 - .../gpencil/shaders/gpencil_stroke_vert.glsl | 1 - .../workbench/shaders/workbench_prepass_vert.glsl | 2 - .../workbench/shaders/workbench_shadow_vert.glsl | 2 - .../workbench/shaders/workbench_volume_frag.glsl | 3 -- .../workbench/shaders/workbench_volume_vert.glsl | 2 - .../draw/modes/shaders/armature_axes_vert.glsl | 6 +-- .../shaders/armature_envelope_outline_vert.glsl | 5 +- .../shaders/armature_envelope_solid_vert.glsl | 5 +- .../draw/modes/shaders/armature_stick_vert.glsl | 5 +- .../draw/modes/shaders/common_view_lib.glsl | 35 +++++++------- .../shaders/edit_curve_overlay_handle_vert.glsl | 1 - .../shaders/edit_curve_overlay_loosevert_vert.glsl | 1 - .../shaders/edit_curve_overlay_normals_vert.glsl | 1 - .../edit_lattice_overlay_loosevert_vert.glsl | 3 -- .../shaders/edit_mesh_overlay_facefill_vert.glsl | 2 - .../edit_mesh_overlay_mesh_analysis_vert.glsl | 1 - .../draw/modes/shaders/edit_mesh_overlay_vert.glsl | 3 -- .../draw/modes/shaders/edit_normals_vert.glsl | 3 -- .../draw/modes/shaders/object_empty_axes_vert.glsl | 5 +- .../modes/shaders/object_empty_image_vert.glsl | 1 - .../modes/shaders/object_mball_handles_vert.glsl | 3 +- .../modes/shaders/object_outline_prepass_vert.glsl | 2 - .../modes/shaders/object_particle_dot_vert.glsl | 2 - .../modes/shaders/object_particle_prim_vert.glsl | 2 - .../shaders/overlay_face_orientation_vert.glsl | 1 - .../modes/shaders/overlay_face_wireframe_vert.glsl | 3 -- .../draw/modes/shaders/paint_face_vert.glsl | 2 - .../draw/modes/shaders/paint_texture_vert.glsl | 2 - .../draw/modes/shaders/paint_vertex_vert.glsl | 2 - .../draw/modes/shaders/paint_weight_vert.glsl | 2 - .../draw/modes/shaders/paint_wire_vert.glsl | 2 - .../draw/modes/shaders/particle_strand_vert.glsl | 2 - .../draw/modes/shaders/sculpt_mask_vert.glsl | 2 - .../draw/modes/shaders/volume_velocity_vert.glsl | 2 - source/blender/gpu/intern/gpu_codegen.c | 53 ++++++++++++---------- .../blender/gpu/shaders/gpu_shader_material.glsl | 5 -- 42 files changed, 56 insertions(+), 134 deletions(-) diff --git a/source/blender/draw/engines/eevee/shaders/lit_surface_vert.glsl b/source/blender/draw/engines/eevee/shaders/lit_surface_vert.glsl index 4243d0ef870..0a2785bafca 100644 --- a/source/blender/draw/engines/eevee/shaders/lit_surface_vert.glsl +++ b/source/blender/draw/engines/eevee/shaders/lit_surface_vert.glsl @@ -1,9 +1,4 @@ -#ifndef USE_ATTR -uniform mat4 ModelMatrix; -uniform mat4 ModelMatrixInverse; -#endif - #ifndef HAIR_SHADER in vec3 pos; in vec3 nor; diff --git a/source/blender/draw/engines/eevee/shaders/prepass_vert.glsl b/source/blender/draw/engines/eevee/shaders/prepass_vert.glsl index 7f154c9130a..fe274f59167 100644 --- a/source/blender/draw/engines/eevee/shaders/prepass_vert.glsl +++ b/source/blender/draw/engines/eevee/shaders/prepass_vert.glsl @@ -1,7 +1,4 @@ -uniform mat4 ModelMatrix; -uniform mat4 ModelMatrixInverse; - #ifdef CLIP_PLANES /* keep in sync with DRWManager.view_data */ layout(std140) uniform clip_block diff --git a/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl b/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl index 4f59725fcf8..7dd9af310ed 100644 --- a/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl +++ b/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl @@ -1,8 +1,4 @@ -#ifndef USE_ATTR -uniform mat4 ModelMatrix; -#endif - in vec3 pos; in vec3 nor; diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_edit_point_vert.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_edit_point_vert.glsl index 12e7f3ee516..a1cfb2ae4ae 100644 --- a/source/blender/draw/engines/gpencil/shaders/gpencil_edit_point_vert.glsl +++ b/source/blender/draw/engines/gpencil/shaders/gpencil_edit_point_vert.glsl @@ -1,4 +1,3 @@ -uniform mat4 ModelMatrix; in vec3 pos; in vec4 color; diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_fill_vert.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_fill_vert.glsl index 4517b68b5e6..eb452f4c660 100644 --- a/source/blender/draw/engines/gpencil/shaders/gpencil_fill_vert.glsl +++ b/source/blender/draw/engines/gpencil/shaders/gpencil_fill_vert.glsl @@ -1,4 +1,3 @@ -uniform mat4 ModelMatrix; in vec3 pos; in vec4 color; diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_point_vert.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_point_vert.glsl index 355d5ef1b0f..ef8b361373f 100644 --- a/source/blender/draw/engines/gpencil/shaders/gpencil_point_vert.glsl +++ b/source/blender/draw/engines/gpencil/shaders/gpencil_point_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - uniform float pixsize; /* rv3d->pixsize */ uniform int keep_size; uniform float objscale; diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl index 4e2ec784385..c7089f357f9 100644 --- a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl +++ b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_vert.glsl @@ -1,4 +1,3 @@ -uniform mat4 ModelMatrix; uniform float pixsize; /* rv3d->pixsize */ uniform int keep_size; diff --git a/source/blender/draw/engines/workbench/shaders/workbench_prepass_vert.glsl b/source/blender/draw/engines/workbench/shaders/workbench_prepass_vert.glsl index 2955bcb9cca..5d4153999c0 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_prepass_vert.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_prepass_vert.glsl @@ -1,5 +1,3 @@ -uniform mat4 ModelMatrix; -uniform mat4 ModelMatrixInverse; #ifndef HAIR_SHADER in vec3 pos; diff --git a/source/blender/draw/engines/workbench/shaders/workbench_shadow_vert.glsl b/source/blender/draw/engines/workbench/shaders/workbench_shadow_vert.glsl index 85145a2dcdc..e07f87525e2 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_shadow_vert.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_shadow_vert.glsl @@ -1,7 +1,5 @@ #define INFINITE 1000.0 -uniform mat4 ModelMatrix; - uniform vec3 lightDirection = vec3(0.57, 0.57, -0.57); uniform float lightDistance = 1e4; diff --git a/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl index cef405d12d3..848cd49bf53 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_volume_frag.glsl @@ -1,7 +1,4 @@ -uniform mat4 ModelMatrix; -uniform mat4 ModelMatrixInverse; - uniform vec3 OrcoTexCoFactors[2]; uniform sampler2D depthBuffer; diff --git a/source/blender/draw/engines/workbench/shaders/workbench_volume_vert.glsl b/source/blender/draw/engines/workbench/shaders/workbench_volume_vert.glsl index 1834173fee9..6f0bb56fafd 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_volume_vert.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_volume_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - uniform vec3 OrcoTexCoFactors[2]; uniform float slicePosition; uniform int sliceAxis; /* -1 is no slice, 0 is X, 1 is Y, 2 is Z. */ diff --git a/source/blender/draw/modes/shaders/armature_axes_vert.glsl b/source/blender/draw/modes/shaders/armature_axes_vert.glsl index a689dce4d70..d7ed3e9ab71 100644 --- a/source/blender/draw/modes/shaders/armature_axes_vert.glsl +++ b/source/blender/draw/modes/shaders/armature_axes_vert.glsl @@ -1,9 +1,7 @@ uniform mat4 ViewProjectionMatrix; uniform vec3 screenVecs[3]; -#ifdef USE_WORLD_CLIP_PLANES -uniform mat4 ModelMatrix; -#endif + /* ---- Instantiated Attrs ---- */ in float axis; /* position on the axis. [0.0-1.0] is X axis, [1.0-2.0] is Y, etc... */ in vec2 screenPos; @@ -32,6 +30,6 @@ void main() finalColor.a = 1.0; #ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance((ModelMatrix * pos_4d).xyz); + world_clip_planes_calc_clip_distance(pos_4d.xyz); #endif } diff --git a/source/blender/draw/modes/shaders/armature_envelope_outline_vert.glsl b/source/blender/draw/modes/shaders/armature_envelope_outline_vert.glsl index 1e7fc4d11b8..c0bde90bf28 100644 --- a/source/blender/draw/modes/shaders/armature_envelope_outline_vert.glsl +++ b/source/blender/draw/modes/shaders/armature_envelope_outline_vert.glsl @@ -3,9 +3,6 @@ uniform mat4 ViewMatrix; uniform mat4 ViewMatrixInverse; uniform mat4 ViewProjectionMatrix; uniform mat4 ProjectionMatrix; -#ifdef USE_WORLD_CLIP_PLANES -uniform mat4 ModelMatrix; -#endif uniform vec2 viewportSize; uniform float lineThickness = 2.0; @@ -145,7 +142,7 @@ void main() vec4 pos_4d = vec4(wpos1, 1.0); #ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance((ModelMatrix * pos_4d).xyz); + world_clip_planes_calc_clip_distance(pos_4d.xyz); #endif vec4 V = ViewMatrix * pos_4d; diff --git a/source/blender/draw/modes/shaders/armature_envelope_solid_vert.glsl b/source/blender/draw/modes/shaders/armature_envelope_solid_vert.glsl index 7f8ccc0c95a..d9567bb84f4 100644 --- a/source/blender/draw/modes/shaders/armature_envelope_solid_vert.glsl +++ b/source/blender/draw/modes/shaders/armature_envelope_solid_vert.glsl @@ -2,9 +2,6 @@ uniform mat4 ViewMatrix; uniform mat4 ViewMatrixInverse; uniform mat4 ViewProjectionMatrix; -#ifdef USE_WORLD_CLIP_PLANES -uniform mat4 ModelMatrix; -#endif /* ---- Instantiated Attrs ---- */ in vec3 pos; @@ -57,6 +54,6 @@ void main() vec4 pos_4d = vec4(sp, 1.0); gl_Position = ViewProjectionMatrix * pos_4d; #ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance((ModelMatrix * pos_4d).xyz); + world_clip_planes_calc_clip_distance(pos_4d.xyz); #endif } diff --git a/source/blender/draw/modes/shaders/armature_stick_vert.glsl b/source/blender/draw/modes/shaders/armature_stick_vert.glsl index 9e5a3d76c0d..fd8a12fcd2c 100644 --- a/source/blender/draw/modes/shaders/armature_stick_vert.glsl +++ b/source/blender/draw/modes/shaders/armature_stick_vert.glsl @@ -1,7 +1,7 @@ uniform mat4 ProjectionMatrix; uniform mat4 ViewProjectionMatrix; -uniform mat4 ModelMatrix; + uniform mat4 ViewMatrix; uniform vec2 viewportSize; @@ -88,8 +88,7 @@ void main() gl_Position.z += (is_bone) ? 0.0 : 1e-6; /* Avoid Z fighting of head/tails. */ #ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance( - (ModelMatrix * (is_head ? boneStart_4d : boneEnd_4d)).xyz); + world_clip_planes_calc_clip_distance((is_head ? boneStart_4d : boneEnd_4d).xyz); #endif } else { diff --git a/source/blender/draw/modes/shaders/common_view_lib.glsl b/source/blender/draw/modes/shaders/common_view_lib.glsl index bdf184cb31e..99410b41ce6 100644 --- a/source/blender/draw/modes/shaders/common_view_lib.glsl +++ b/source/blender/draw/modes/shaders/common_view_lib.glsl @@ -14,23 +14,26 @@ layout(std140) uniform viewBlock vec4 clipPlanes[2]; }; - /** Transform shortcuts. */ - /* Rule of thumb: Try to reuse world positions and normals because converting though viewspace - * will always be decomposed in at least 2 matrix operation. */ +uniform mat4 ModelMatrix; +uniform mat4 ModelMatrixInverse; - /** - * Some clarification: - * Usually Normal matrix is transpose(inverse(ViewMatrix * ModelMatrix)) - * - * But since it is slow to multiply matrices we decompose it. Decomposing - * inversion and transposition both invert the product order leaving us with - * the same original order: - * transpose(ViewMatrixInverse) * transpose(ModelMatrixInverse) - * - * Knowing that the view matrix is orthogonal, the transpose is also the inverse. - * Note: This is only valid because we are only using the mat3 of the ViewMatrixInverse. - * ViewMatrix * transpose(ModelMatrixInverse) - **/ +/** Transform shortcuts. */ +/* Rule of thumb: Try to reuse world positions and normals because converting though viewspace + * will always be decomposed in at least 2 matrix operation. */ + +/** + * Some clarification: + * Usually Normal matrix is transpose(inverse(ViewMatrix * ModelMatrix)) + * + * But since it is slow to multiply matrices we decompose it. Decomposing + * inversion and transposition both invert the product order leaving us with + * the same original order: + * transpose(ViewMatrixInverse) * transpose(ModelMatrixInverse) + * + * Knowing that the view matrix is orthogonal, the transpose is also the inverse. + * Note: This is only valid because we are only using the mat3 of the ViewMatrixInverse. + * ViewMatrix * transpose(ModelMatrixInverse) + **/ #define normal_object_to_view(n) (mat3(ViewMatrix) * (transpose(mat3(ModelMatrixInverse)) * n)) #define normal_object_to_world(n) (transpose(mat3(ModelMatrixInverse)) * n) #define normal_world_to_object(n) (transpose(mat3(ModelMatrix)) * n) diff --git a/source/blender/draw/modes/shaders/edit_curve_overlay_handle_vert.glsl b/source/blender/draw/modes/shaders/edit_curve_overlay_handle_vert.glsl index 1773414a3fc..2f3d37a6e73 100644 --- a/source/blender/draw/modes/shaders/edit_curve_overlay_handle_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_curve_overlay_handle_vert.glsl @@ -1,5 +1,4 @@ /* Draw Curve Handles */ -uniform mat4 ModelMatrix; in vec3 pos; in int data; diff --git a/source/blender/draw/modes/shaders/edit_curve_overlay_loosevert_vert.glsl b/source/blender/draw/modes/shaders/edit_curve_overlay_loosevert_vert.glsl index 16975187176..b1b707b59f4 100644 --- a/source/blender/draw/modes/shaders/edit_curve_overlay_loosevert_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_curve_overlay_loosevert_vert.glsl @@ -1,5 +1,4 @@ /* Draw Curve Vertices */ -uniform mat4 ModelMatrix; uniform vec2 viewportSize; diff --git a/source/blender/draw/modes/shaders/edit_curve_overlay_normals_vert.glsl b/source/blender/draw/modes/shaders/edit_curve_overlay_normals_vert.glsl index b746c8d0a74..ef60ddbc395 100644 --- a/source/blender/draw/modes/shaders/edit_curve_overlay_normals_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_curve_overlay_normals_vert.glsl @@ -1,5 +1,4 @@ /* Draw Curve Normals */ -uniform mat4 ModelMatrix; uniform float normalSize; diff --git a/source/blender/draw/modes/shaders/edit_lattice_overlay_loosevert_vert.glsl b/source/blender/draw/modes/shaders/edit_lattice_overlay_loosevert_vert.glsl index a4773f31977..f7df6bb4b68 100644 --- a/source/blender/draw/modes/shaders/edit_lattice_overlay_loosevert_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_lattice_overlay_loosevert_vert.glsl @@ -1,8 +1,5 @@ - /* Draw Lattice Vertices */ -uniform mat4 ModelMatrix; - uniform vec2 viewportSize; in vec3 pos; diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_facefill_vert.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_facefill_vert.glsl index f81da2ff0e8..a20c1124fe1 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_facefill_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_facefill_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - uniform ivec4 dataMask = ivec4(0xFF); in vec3 pos; diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_mesh_analysis_vert.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_mesh_analysis_vert.glsl index 98cb788b75d..968a63c7780 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_mesh_analysis_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_mesh_analysis_vert.glsl @@ -1,4 +1,3 @@ -uniform mat4 ModelMatrix; in vec3 pos; in vec4 weight_color; diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl index b4476c98382..9711c9feeb8 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_vert.glsl @@ -1,7 +1,4 @@ -uniform mat4 ModelMatrix; -uniform mat4 ModelMatrixInverse; - uniform float faceAlphaMod; uniform ivec4 dataMask = ivec4(0xFF); uniform float ofs; diff --git a/source/blender/draw/modes/shaders/edit_normals_vert.glsl b/source/blender/draw/modes/shaders/edit_normals_vert.glsl index 31b2faa7667..9bf0fb7315c 100644 --- a/source/blender/draw/modes/shaders/edit_normals_vert.glsl +++ b/source/blender/draw/modes/shaders/edit_normals_vert.glsl @@ -1,7 +1,4 @@ -uniform mat4 ModelMatrix; -uniform mat4 ModelMatrixInverse; - uniform float normalSize; in vec3 pos; diff --git a/source/blender/draw/modes/shaders/object_empty_axes_vert.glsl b/source/blender/draw/modes/shaders/object_empty_axes_vert.glsl index 7fd955343fc..43c8e313fc3 100644 --- a/source/blender/draw/modes/shaders/object_empty_axes_vert.glsl +++ b/source/blender/draw/modes/shaders/object_empty_axes_vert.glsl @@ -1,8 +1,5 @@ uniform mat4 ViewProjectionMatrix; -#ifdef USE_WORLD_CLIP_PLANES -uniform mat4 ModelMatrix; -#endif uniform vec3 screenVecs[3]; @@ -33,6 +30,6 @@ void main() finalColor = vec4(color, 1.0); #ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance((ModelMatrix * pos_4d).xyz); + world_clip_planes_calc_clip_distance(pos_4d.xyz); #endif } diff --git a/source/blender/draw/modes/shaders/object_empty_image_vert.glsl b/source/blender/draw/modes/shaders/object_empty_image_vert.glsl index 5ac3b49b394..36e86290be7 100644 --- a/source/blender/draw/modes/shaders/object_empty_image_vert.glsl +++ b/source/blender/draw/modes/shaders/object_empty_image_vert.glsl @@ -1,4 +1,3 @@ -uniform mat4 ModelMatrix; uniform vec2 aspect; uniform float size; diff --git a/source/blender/draw/modes/shaders/object_mball_handles_vert.glsl b/source/blender/draw/modes/shaders/object_mball_handles_vert.glsl index c395ed01bca..9414309570b 100644 --- a/source/blender/draw/modes/shaders/object_mball_handles_vert.glsl +++ b/source/blender/draw/modes/shaders/object_mball_handles_vert.glsl @@ -4,7 +4,6 @@ * Note that if the stiffness is zero, it assumes the scale is directly multiplied by the radius */ uniform mat4 ViewProjectionMatrix; -uniform mat4 ModelMatrix; uniform vec3 screen_vecs[2]; /* ---- Instantiated Attrs ---- */ @@ -32,6 +31,6 @@ void main() finalColor = vec4(color, 1.0); #ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance((ModelMatrix * world_pos).xyz); + world_clip_planes_calc_clip_distance(world_pos.xyz); #endif } diff --git a/source/blender/draw/modes/shaders/object_outline_prepass_vert.glsl b/source/blender/draw/modes/shaders/object_outline_prepass_vert.glsl index fcffc7a8ae0..e34afe95b5e 100644 --- a/source/blender/draw/modes/shaders/object_outline_prepass_vert.glsl +++ b/source/blender/draw/modes/shaders/object_outline_prepass_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - in vec3 pos; out vec4 pPos; diff --git a/source/blender/draw/modes/shaders/object_particle_dot_vert.glsl b/source/blender/draw/modes/shaders/object_particle_dot_vert.glsl index 921a0a57218..f98ae9a9515 100644 --- a/source/blender/draw/modes/shaders/object_particle_dot_vert.glsl +++ b/source/blender/draw/modes/shaders/object_particle_dot_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - uniform float pixel_size; uniform float size; diff --git a/source/blender/draw/modes/shaders/object_particle_prim_vert.glsl b/source/blender/draw/modes/shaders/object_particle_prim_vert.glsl index f1107de8068..46aceb245f4 100644 --- a/source/blender/draw/modes/shaders/object_particle_prim_vert.glsl +++ b/source/blender/draw/modes/shaders/object_particle_prim_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - uniform bool screen_space; uniform float draw_size; uniform vec3 color; diff --git a/source/blender/draw/modes/shaders/overlay_face_orientation_vert.glsl b/source/blender/draw/modes/shaders/overlay_face_orientation_vert.glsl index 5025d054048..2dd84c0a060 100644 --- a/source/blender/draw/modes/shaders/overlay_face_orientation_vert.glsl +++ b/source/blender/draw/modes/shaders/overlay_face_orientation_vert.glsl @@ -1,4 +1,3 @@ -uniform mat4 ModelMatrix; in vec3 pos; diff --git a/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl b/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl index dd64ff10a34..23f64e6e49c 100644 --- a/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl +++ b/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl @@ -1,7 +1,4 @@ -uniform mat4 ModelMatrix; -uniform mat4 ModelMatrixInverse; - uniform float wireStepParam; uniform float ofs; diff --git a/source/blender/draw/modes/shaders/paint_face_vert.glsl b/source/blender/draw/modes/shaders/paint_face_vert.glsl index 7ea2390dd3f..4b5191ead07 100644 --- a/source/blender/draw/modes/shaders/paint_face_vert.glsl +++ b/source/blender/draw/modes/shaders/paint_face_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - in vec3 pos; in vec4 nor; /* select flag on the 4th component */ diff --git a/source/blender/draw/modes/shaders/paint_texture_vert.glsl b/source/blender/draw/modes/shaders/paint_texture_vert.glsl index 14d3afd6272..564f988348e 100644 --- a/source/blender/draw/modes/shaders/paint_texture_vert.glsl +++ b/source/blender/draw/modes/shaders/paint_texture_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - in vec2 u; /* active uv map */ in vec3 pos; diff --git a/source/blender/draw/modes/shaders/paint_vertex_vert.glsl b/source/blender/draw/modes/shaders/paint_vertex_vert.glsl index 871f52b9df3..53e72cc8a20 100644 --- a/source/blender/draw/modes/shaders/paint_vertex_vert.glsl +++ b/source/blender/draw/modes/shaders/paint_vertex_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - in vec3 pos; in vec3 c; /* active color */ diff --git a/source/blender/draw/modes/shaders/paint_weight_vert.glsl b/source/blender/draw/modes/shaders/paint_weight_vert.glsl index fb0e6c535d1..330cc7d19f4 100644 --- a/source/blender/draw/modes/shaders/paint_weight_vert.glsl +++ b/source/blender/draw/modes/shaders/paint_weight_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - in float weight; in vec3 pos; diff --git a/source/blender/draw/modes/shaders/paint_wire_vert.glsl b/source/blender/draw/modes/shaders/paint_wire_vert.glsl index 7e9a5b9bfe6..10bf8729f47 100644 --- a/source/blender/draw/modes/shaders/paint_wire_vert.glsl +++ b/source/blender/draw/modes/shaders/paint_wire_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - in vec3 pos; in vec4 nor; /* flag stored in w */ diff --git a/source/blender/draw/modes/shaders/particle_strand_vert.glsl b/source/blender/draw/modes/shaders/particle_strand_vert.glsl index 14f9050f9df..c3f8fb89c17 100644 --- a/source/blender/draw/modes/shaders/particle_strand_vert.glsl +++ b/source/blender/draw/modes/shaders/particle_strand_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - in vec3 pos; in float color; diff --git a/source/blender/draw/modes/shaders/sculpt_mask_vert.glsl b/source/blender/draw/modes/shaders/sculpt_mask_vert.glsl index ee05844d8f6..7b026836690 100644 --- a/source/blender/draw/modes/shaders/sculpt_mask_vert.glsl +++ b/source/blender/draw/modes/shaders/sculpt_mask_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - uniform float maskOpacity; in vec3 pos; diff --git a/source/blender/draw/modes/shaders/volume_velocity_vert.glsl b/source/blender/draw/modes/shaders/volume_velocity_vert.glsl index 87fa3519da1..e96a789b8b1 100644 --- a/source/blender/draw/modes/shaders/volume_velocity_vert.glsl +++ b/source/blender/draw/modes/shaders/volume_velocity_vert.glsl @@ -1,6 +1,4 @@ -uniform mat4 ModelMatrix; - uniform sampler3D velocityX; uniform sampler3D velocityY; uniform sampler3D velocityZ; diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c index b909839473f..8dda98ab990 100644 --- a/source/blender/gpu/intern/gpu_codegen.c +++ b/source/blender/gpu/intern/gpu_codegen.c @@ -1035,12 +1035,39 @@ static char *code_generate_vertex(ListBase *nodes, const char *vert_code, bool u BLI_dynstr_append(ds, "out vec3 barycentricPosg;\n"); } + BLI_dynstr_append(ds, "\n#define USE_ATTR\n"); + + /* Prototype, defined later (this is because of matrices definition). */ + BLI_dynstr_append(ds, "void pass_attr(in vec3 position);\n"); + + BLI_dynstr_append(ds, "\n"); + + if (use_geom) { + /* XXX HACK: Eevee specific. */ + char *vert_new, *vert_new2; + vert_new = BLI_str_replaceN(vert_code, "worldPosition", "worldPositiong"); + vert_new2 = vert_new; + vert_new = BLI_str_replaceN(vert_new2, "viewPosition", "viewPositiong"); + MEM_freeN(vert_new2); + vert_new2 = vert_new; + vert_new = BLI_str_replaceN(vert_new2, "worldNormal", "worldNormalg"); + MEM_freeN(vert_new2); + vert_new2 = vert_new; + vert_new = BLI_str_replaceN(vert_new2, "viewNormal", "viewNormalg"); + MEM_freeN(vert_new2); + + BLI_dynstr_append(ds, vert_new); + + MEM_freeN(vert_new); + } + else { + BLI_dynstr_append(ds, vert_code); + } + BLI_dynstr_append(ds, "\n"); BLI_dynstr_append(ds, "#define USE_ATTR\n" - "uniform mat4 ModelMatrixInverse;\n" - "uniform mat4 ModelMatrix;\n" "vec3 srgb_to_linear_attr(vec3 c) {\n" "\tc = max(c, vec3(0.0));\n" "\tvec3 c1 = c * (1.0 / 12.92);\n" @@ -1177,28 +1204,6 @@ static char *code_generate_vertex(ListBase *nodes, const char *vert_code, bool u BLI_dynstr_append(ds, "}\n"); - if (use_geom) { - /* XXX HACK: Eevee specific. */ - char *vert_new, *vert_new2; - vert_new = BLI_str_replaceN(vert_code, "worldPosition", "worldPositiong"); - vert_new2 = vert_new; - vert_new = BLI_str_replaceN(vert_new2, "viewPosition", "viewPositiong"); - MEM_freeN(vert_new2); - vert_new2 = vert_new; - vert_new = BLI_str_replaceN(vert_new2, "worldNormal", "worldNormalg"); - MEM_freeN(vert_new2); - vert_new2 = vert_new; - vert_new = BLI_str_replaceN(vert_new2, "viewNormal", "viewNormalg"); - MEM_freeN(vert_new2); - - BLI_dynstr_append(ds, vert_new); - - MEM_freeN(vert_new); - } - else { - BLI_dynstr_append(ds, vert_code); - } - code = BLI_dynstr_get_cstring(ds); BLI_dynstr_free(ds); diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 023870125c9..6a3d6c3b142 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -1,9 +1,4 @@ -#ifndef USE_ATTR -uniform mat4 ModelMatrix; -uniform mat4 ModelMatrixInverse; -#endif - /* Converters */ float convert_rgba_to_float(vec4 color) -- cgit v1.2.3