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:
Diffstat (limited to 'source/blender/draw/engines/overlay/overlay_shader.c')
-rw-r--r--source/blender/draw/engines/overlay/overlay_shader.c78
1 files changed, 13 insertions, 65 deletions
diff --git a/source/blender/draw/engines/overlay/overlay_shader.c b/source/blender/draw/engines/overlay/overlay_shader.c
index 0288dc12be8..c04a3218461 100644
--- a/source/blender/draw/engines/overlay/overlay_shader.c
+++ b/source/blender/draw/engines/overlay/overlay_shader.c
@@ -829,33 +829,16 @@ GPUShader *OVERLAY_shader_motion_path_vert(void)
GPUShader *OVERLAY_shader_outline_prepass(bool use_wire)
{
const DRWContextState *draw_ctx = DRW_context_state_get();
- const GPUShaderConfigData *sh_cfg = &GPU_shader_cfg_data[draw_ctx->sh_cfg];
OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
if (use_wire && !sh_data->outline_prepass_wire) {
- sh_data->outline_prepass_wire = GPU_shader_create_from_arrays({
- .vert = (const char *[]){sh_cfg->lib,
- datatoc_common_view_lib_glsl,
- datatoc_gpu_shader_common_obinfos_lib_glsl,
- datatoc_outline_prepass_vert_glsl,
- NULL},
- .geom = (const char *[]){sh_cfg->lib,
- datatoc_common_view_lib_glsl,
- datatoc_outline_prepass_geom_glsl,
- NULL},
- .frag = (const char *[]){datatoc_outline_prepass_frag_glsl, NULL},
- .defs = (const char *[]){sh_cfg->def, "#define USE_GEOM\n", NULL},
- });
+ sh_data->outline_prepass_wire = GPU_shader_create_from_info_name(
+ draw_ctx->sh_cfg ? "overlay_outline_prepass_wire_clipped" :
+ "overlay_outline_prepass_wire");
}
else if (!sh_data->outline_prepass) {
- sh_data->outline_prepass = GPU_shader_create_from_arrays({
- .vert = (const char *[]){sh_cfg->lib,
- datatoc_common_view_lib_glsl,
- datatoc_gpu_shader_common_obinfos_lib_glsl,
- datatoc_outline_prepass_vert_glsl,
- NULL},
- .frag = (const char *[]){datatoc_outline_prepass_frag_glsl, NULL},
- .defs = (const char *[]){sh_cfg->def, NULL},
- });
+ sh_data->outline_prepass = GPU_shader_create_from_info_name(
+ draw_ctx->sh_cfg ? "overlay_outline_prepass_mesh_clipped" :
+ "overlay_outline_prepass_mesh");
}
return use_wire ? sh_data->outline_prepass_wire : sh_data->outline_prepass;
}
@@ -863,25 +846,11 @@ GPUShader *OVERLAY_shader_outline_prepass(bool use_wire)
GPUShader *OVERLAY_shader_outline_prepass_gpencil(void)
{
const DRWContextState *draw_ctx = DRW_context_state_get();
- const GPUShaderConfigData *sh_cfg = &GPU_shader_cfg_data[draw_ctx->sh_cfg];
OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
if (!sh_data->outline_prepass_gpencil) {
- sh_data->outline_prepass_gpencil = GPU_shader_create_from_arrays({
- .vert = (const char *[]){sh_cfg->lib,
- datatoc_common_view_lib_glsl,
- datatoc_gpencil_common_lib_glsl,
- datatoc_gpu_shader_common_obinfos_lib_glsl,
- datatoc_outline_prepass_vert_glsl,
- NULL},
- .frag = (const char *[]){datatoc_common_view_lib_glsl,
- datatoc_gpencil_common_lib_glsl,
- datatoc_outline_prepass_frag_glsl,
- NULL},
- .defs = (const char *[]){sh_cfg->def,
- "#define USE_GPENCIL\n",
- "#define UNIFORM_RESOURCE_ID\n",
- NULL},
- });
+ sh_data->outline_prepass_gpencil = GPU_shader_create_from_info_name(
+ draw_ctx->sh_cfg ? "overlay_outline_prepass_gpencil_clipped" :
+ "overlay_outline_prepass_gpencil");
}
return sh_data->outline_prepass_gpencil;
}
@@ -889,26 +858,11 @@ GPUShader *OVERLAY_shader_outline_prepass_gpencil(void)
GPUShader *OVERLAY_shader_outline_prepass_pointcloud(void)
{
const DRWContextState *draw_ctx = DRW_context_state_get();
- const GPUShaderConfigData *sh_cfg = &GPU_shader_cfg_data[draw_ctx->sh_cfg];
OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
if (!sh_data->outline_prepass_pointcloud) {
- sh_data->outline_prepass_pointcloud = GPU_shader_create_from_arrays({
- .vert = (const char *[]){sh_cfg->lib,
- datatoc_common_view_lib_glsl,
- datatoc_common_pointcloud_lib_glsl,
- datatoc_gpu_shader_common_obinfos_lib_glsl,
- datatoc_outline_prepass_vert_glsl,
- NULL},
- .frag = (const char *[]){datatoc_common_view_lib_glsl,
- datatoc_gpencil_common_lib_glsl,
- datatoc_outline_prepass_frag_glsl,
- NULL},
- .defs = (const char *[]){sh_cfg->def,
- "#define POINTCLOUD\n",
- "#define INSTANCED_ATTR\n",
- "#define UNIFORM_RESOURCE_ID\n",
- NULL},
- });
+ sh_data->outline_prepass_pointcloud = GPU_shader_create_from_info_name(
+ draw_ctx->sh_cfg ? "overlay_outline_prepass_pointcloud_clipped" :
+ "overlay_outline_prepass_pointcloud");
}
return sh_data->outline_prepass_pointcloud;
}
@@ -917,13 +871,7 @@ GPUShader *OVERLAY_shader_outline_detect(void)
{
OVERLAY_Shaders *sh_data = &e_data.sh_data[0];
if (!sh_data->outline_detect) {
- sh_data->outline_detect = GPU_shader_create_from_arrays({
- .vert = (const char *[]){datatoc_common_fullscreen_vert_glsl, NULL},
- .frag = (const char *[]){datatoc_common_view_lib_glsl,
- datatoc_common_globals_lib_glsl,
- datatoc_outline_detect_frag_glsl,
- NULL},
- });
+ sh_data->outline_detect = GPU_shader_create_from_info_name("overlay_outline_detect");
}
return sh_data->outline_detect;
}