diff options
Diffstat (limited to 'source/blender')
7 files changed, 25 insertions, 42 deletions
diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt index c25d5564b21..acad2a5d14b 100644 --- a/source/blender/draw/CMakeLists.txt +++ b/source/blender/draw/CMakeLists.txt @@ -325,8 +325,6 @@ data_to_c_simple(modes/shaders/particle_strand_frag.glsl SRC) data_to_c_simple(modes/shaders/particle_strand_vert.glsl SRC) data_to_c_simple(modes/shaders/sculpt_mask_vert.glsl SRC) data_to_c_simple(modes/shaders/volume_velocity_vert.glsl SRC) -data_to_c_simple(modes/shaders/drw_shader_3D_vert.glsl SRC) -data_to_c_simple(modes/shaders/drw_shader_3D_smooth_color_vert.glsl SRC) data_to_c_simple(engines/gpencil/shaders/gpencil_fill_vert.glsl SRC) data_to_c_simple(engines/gpencil/shaders/gpencil_fill_frag.glsl SRC) diff --git a/source/blender/draw/intern/draw_builtin_shader.c b/source/blender/draw/intern/draw_builtin_shader.c index 6a70b91d67a..889dbaed3da 100644 --- a/source/blender/draw/intern/draw_builtin_shader.c +++ b/source/blender/draw/intern/draw_builtin_shader.c @@ -38,14 +38,13 @@ extern char datatoc_common_world_clip_lib_glsl[]; -extern char datatoc_drw_shader_3D_vert_glsl[]; -extern char datatoc_drw_shader_3D_smooth_color_vert_glsl[]; - -extern char datatoc_gpu_shader_uniform_color_frag_glsl[]; extern char datatoc_gpu_shader_3D_smooth_color_frag_glsl[]; +extern char datatoc_gpu_shader_3D_smooth_color_vert_glsl[]; +extern char datatoc_gpu_shader_3D_vert_glsl[]; extern char datatoc_gpu_shader_depth_only_frag_glsl[]; extern char datatoc_gpu_shader_flat_color_frag_glsl[]; extern char datatoc_gpu_shader_instance_camera_vert_glsl[]; +extern char datatoc_gpu_shader_uniform_color_frag_glsl[]; /* cache of built-in shaders (each is created on first use) */ static struct { @@ -68,7 +67,7 @@ static GPUShader *drw_shader_get_builtin_shader_clipped(eGPUBuiltinShader shader break; } shader = DRW_shader_create_from_arrays({ - .vert = (const char *[]){world_clip_lib, datatoc_drw_shader_3D_vert_glsl, NULL}, + .vert = (const char *[]){world_clip_lib, datatoc_gpu_shader_3D_vert_glsl, NULL}, .frag = (const char *[]){datatoc_gpu_shader_uniform_color_frag_glsl, NULL}, .defs = (const char *[]){world_clip_def, NULL}}); break; @@ -77,7 +76,7 @@ static GPUShader *drw_shader_get_builtin_shader_clipped(eGPUBuiltinShader shader break; } shader = DRW_shader_create_from_arrays({ - .vert = (const char *[]){world_clip_lib, datatoc_drw_shader_3D_smooth_color_vert_glsl, NULL}, + .vert = (const char *[]){world_clip_lib, datatoc_gpu_shader_3D_smooth_color_vert_glsl, NULL}, .frag = (const char *[]){datatoc_gpu_shader_3D_smooth_color_frag_glsl, NULL}, .defs = (const char *[]){world_clip_def, NULL}}); break; @@ -86,7 +85,7 @@ static GPUShader *drw_shader_get_builtin_shader_clipped(eGPUBuiltinShader shader break; } shader = DRW_shader_create_from_arrays({ - .vert = (const char *[]){world_clip_lib, datatoc_drw_shader_3D_vert_glsl, NULL}, + .vert = (const char *[]){world_clip_lib, datatoc_gpu_shader_3D_vert_glsl, NULL}, .frag = (const char *[]){datatoc_gpu_shader_depth_only_frag_glsl, NULL}, .defs = (const char *[]){world_clip_def, NULL}}); break; diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c index 52a173e433f..837de9c9ca7 100644 --- a/source/blender/draw/modes/object_mode.c +++ b/source/blender/draw/modes/object_mode.c @@ -105,7 +105,7 @@ extern char datatoc_gpu_shader_flat_color_frag_glsl[]; extern char datatoc_gpu_shader_flat_id_frag_glsl[]; extern char datatoc_common_fullscreen_vert_glsl[]; extern char datatoc_gpu_shader_uniform_color_frag_glsl[]; -extern char datatoc_drw_shader_3D_vert_glsl[]; +extern char datatoc_gpu_shader_3D_vert_glsl[]; /* *********** LISTS *********** */ typedef struct OBJECT_PassList { @@ -419,7 +419,7 @@ static void OBJECT_engine_init(void *vedata) if (!sh_data->outline_resolve) { /* Outline */ sh_data->outline_prepass = DRW_shader_create_from_arrays({ - .vert = (const char *[]){world_clip_lib_or_empty, datatoc_drw_shader_3D_vert_glsl, NULL}, + .vert = (const char *[]){world_clip_lib_or_empty, datatoc_gpu_shader_3D_vert_glsl, NULL}, .frag = (const char *[]){datatoc_object_outline_prepass_frag_glsl, NULL}, .defs = (const char *[]){world_clip_def_or_empty, NULL}}); sh_data->outline_prepass_wire = DRW_shader_create_from_arrays({ @@ -495,7 +495,7 @@ static void OBJECT_engine_init(void *vedata) /* Loose Points */ sh_data->loose_points = DRW_shader_create_from_arrays({ - .vert = (const char *[]){world_clip_lib_or_empty, datatoc_drw_shader_3D_vert_glsl, NULL}, + .vert = (const char *[]){world_clip_lib_or_empty, datatoc_gpu_shader_3D_vert_glsl, NULL}, .frag = (const char *[]){datatoc_object_loose_points_frag_glsl, NULL}, .defs = (const char *[]){world_clip_def_or_empty, NULL}}); } diff --git a/source/blender/draw/modes/shaders/drw_shader_3D_smooth_color_vert.glsl b/source/blender/draw/modes/shaders/drw_shader_3D_smooth_color_vert.glsl deleted file mode 100644 index 05f9618a7f7..00000000000 --- a/source/blender/draw/modes/shaders/drw_shader_3D_smooth_color_vert.glsl +++ /dev/null @@ -1,17 +0,0 @@ -/* Keep 'gpu_shader_3D_smooth_color_vert.glsl' compatible. */ -uniform mat4 ModelViewProjectionMatrix; -uniform mat4 ModelMatrix; - -in vec3 pos; -in vec4 color; - -out vec4 finalColor; - -void main() -{ - gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0); - finalColor = color; -#ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance((ModelMatrix * vec4(pos, 1.0)).xyz); -#endif -} diff --git a/source/blender/draw/modes/shaders/drw_shader_3D_vert.glsl b/source/blender/draw/modes/shaders/drw_shader_3D_vert.glsl deleted file mode 100644 index f0d477527ce..00000000000 --- a/source/blender/draw/modes/shaders/drw_shader_3D_vert.glsl +++ /dev/null @@ -1,13 +0,0 @@ -/* Keep 'gpu_shader_3D_vert.glsl' compatible. */ -uniform mat4 ModelViewProjectionMatrix; -uniform mat4 ModelMatrix; - -in vec3 pos; - -void main() -{ - gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0); -#ifdef USE_WORLD_CLIP_PLANES - world_clip_planes_calc_clip_distance((ModelMatrix * vec4(pos, 1.0)).xyz); -#endif -} diff --git a/source/blender/gpu/shaders/gpu_shader_3D_smooth_color_vert.glsl b/source/blender/gpu/shaders/gpu_shader_3D_smooth_color_vert.glsl index a1feb2f75b7..955ce07780c 100644 --- a/source/blender/gpu/shaders/gpu_shader_3D_smooth_color_vert.glsl +++ b/source/blender/gpu/shaders/gpu_shader_3D_smooth_color_vert.glsl @@ -1,6 +1,10 @@ uniform mat4 ModelViewProjectionMatrix; +#ifdef USE_WORLD_CLIP_PLANES +uniform mat4 ModelMatrix; +#endif + in vec3 pos; in vec4 color; @@ -10,4 +14,8 @@ void main() { gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0); finalColor = color; + +#ifdef USE_WORLD_CLIP_PLANES + world_clip_planes_calc_clip_distance((ModelMatrix * vec4(pos, 1.0)).xyz); +#endif } diff --git a/source/blender/gpu/shaders/gpu_shader_3D_vert.glsl b/source/blender/gpu/shaders/gpu_shader_3D_vert.glsl index 059473ebb74..9fc748b292b 100644 --- a/source/blender/gpu/shaders/gpu_shader_3D_vert.glsl +++ b/source/blender/gpu/shaders/gpu_shader_3D_vert.glsl @@ -1,9 +1,17 @@ uniform mat4 ModelViewProjectionMatrix; +#ifdef USE_WORLD_CLIP_PLANES +uniform mat4 ModelMatrix; +#endif + in vec3 pos; void main() { gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0); + +#ifdef USE_WORLD_CLIP_PLANES + world_clip_planes_calc_clip_distance((ModelMatrix * vec4(pos, 1.0)).xyz); +#endif } |