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:
authorCampbell Barton <ideasman42@gmail.com>2019-02-06 01:15:16 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-02-06 01:15:16 +0300
commitdbd7f36da8ec3ac1c2898aee346beecb86aac8a2 (patch)
tree0d77061a4305b7bcfef13bb753089e5f6f21e7c3 /source/blender/draw/engines
parenta245d533514e335f028cfa6cdb26614ed0982484 (diff)
GPU: refactor clipped drawing from DRW into GPU
Needed to fix T61196, supporting clipped back-buffer in the 3D view which is done outside the draw module. It was also inconvenient having DRW_shader_* versions of GPU_shader_* API calls. - Clipping distances are now supported as a shader configuration for builtin shaders. - Add shader config argument when accessing builtin shaders. - Move GPU_shader_create_from_arrays() from DRW to GPU.
Diffstat (limited to 'source/blender/draw/engines')
-rw-r--r--source/blender/draw/engines/basic/basic_engine.c8
-rw-r--r--source/blender/draw/engines/external/external_engine.c2
-rw-r--r--source/blender/draw/engines/workbench/workbench_deferred.c6
-rw-r--r--source/blender/draw/engines/workbench/workbench_forward.c6
4 files changed, 11 insertions, 11 deletions
diff --git a/source/blender/draw/engines/basic/basic_engine.c b/source/blender/draw/engines/basic/basic_engine.c
index d22f4ccb86c..cdc625fc297 100644
--- a/source/blender/draw/engines/basic/basic_engine.c
+++ b/source/blender/draw/engines/basic/basic_engine.c
@@ -65,7 +65,7 @@ typedef struct BASIC_Shaders {
/* *********** STATIC *********** */
static struct {
- BASIC_Shaders sh_data[DRW_SHADER_SLOT_LEN];
+ BASIC_Shaders sh_data[GPU_SHADER_CFG_LEN];
} e_data = {NULL}; /* Engine data */
typedef struct BASIC_PrivateData {
@@ -79,11 +79,11 @@ typedef struct BASIC_PrivateData {
static void basic_engine_init(void *UNUSED(vedata))
{
const DRWContextState *draw_ctx = DRW_context_state_get();
- BASIC_Shaders *sh_data = &e_data.sh_data[draw_ctx->shader_slot];
+ BASIC_Shaders *sh_data = &e_data.sh_data[draw_ctx->shader_cfg];
/* Depth prepass */
if (!sh_data->depth) {
- sh_data->depth = DRW_shader_create_3D_depth_only(draw_ctx->shader_slot);
+ sh_data->depth = DRW_shader_create_3D_depth_only(draw_ctx->shader_cfg);
}
}
@@ -93,7 +93,7 @@ static void basic_cache_init(void *vedata)
BASIC_StorageList *stl = ((BASIC_Data *)vedata)->stl;
const DRWContextState *draw_ctx = DRW_context_state_get();
- BASIC_Shaders *sh_data = &e_data.sh_data[draw_ctx->shader_slot];
+ BASIC_Shaders *sh_data = &e_data.sh_data[draw_ctx->shader_cfg];
const RegionView3D *rv3d = draw_ctx->rv3d;
const bool is_clip = (rv3d->rflag & RV3D_CLIPPING) != 0;
diff --git a/source/blender/draw/engines/external/external_engine.c b/source/blender/draw/engines/external/external_engine.c
index d7e290917aa..d4930889449 100644
--- a/source/blender/draw/engines/external/external_engine.c
+++ b/source/blender/draw/engines/external/external_engine.c
@@ -91,7 +91,7 @@ static void external_engine_init(void *UNUSED(vedata))
{
/* Depth prepass */
if (!e_data.depth_sh) {
- e_data.depth_sh = DRW_shader_create_3D_depth_only(DRW_SHADER_SLOT_DEFAULT);
+ e_data.depth_sh = DRW_shader_create_3D_depth_only(GPU_SHADER_CFG_DEFAULT);
}
}
diff --git a/source/blender/draw/engines/workbench/workbench_deferred.c b/source/blender/draw/engines/workbench/workbench_deferred.c
index 18b4712cc86..0991546e74b 100644
--- a/source/blender/draw/engines/workbench/workbench_deferred.c
+++ b/source/blender/draw/engines/workbench/workbench_deferred.c
@@ -88,7 +88,7 @@ static struct {
/* Shaders */
extern char datatoc_common_hair_lib_glsl[];
-extern char datatoc_common_world_clip_lib_glsl[];
+extern char datatoc_gpu_shader_cfg_world_clip_lib_glsl[];
extern char datatoc_workbench_prepass_vert_glsl[];
extern char datatoc_workbench_prepass_frag_glsl[];
@@ -160,14 +160,14 @@ static char *workbench_build_prepass_vert(bool is_hair)
char *str = NULL;
if (!is_hair) {
return BLI_string_joinN(
- datatoc_common_world_clip_lib_glsl,
+ datatoc_gpu_shader_cfg_world_clip_lib_glsl,
datatoc_workbench_prepass_vert_glsl);
}
DynStr *ds = BLI_dynstr_new();
BLI_dynstr_append(ds, datatoc_common_hair_lib_glsl);
- BLI_dynstr_append(ds, datatoc_common_world_clip_lib_glsl);
+ BLI_dynstr_append(ds, datatoc_gpu_shader_cfg_world_clip_lib_glsl);
BLI_dynstr_append(ds, datatoc_workbench_prepass_vert_glsl);
str = BLI_dynstr_get_cstring(ds);
diff --git a/source/blender/draw/engines/workbench/workbench_forward.c b/source/blender/draw/engines/workbench/workbench_forward.c
index 1f3d14102a6..10dfbb44418 100644
--- a/source/blender/draw/engines/workbench/workbench_forward.c
+++ b/source/blender/draw/engines/workbench/workbench_forward.c
@@ -61,7 +61,7 @@ static struct {
} e_data = {{NULL}};
/* Shaders */
-extern char datatoc_common_world_clip_lib_glsl[];
+extern char datatoc_gpu_shader_cfg_world_clip_lib_glsl[];
extern char datatoc_common_hair_lib_glsl[];
extern char datatoc_workbench_forward_composite_frag_glsl[];
@@ -82,14 +82,14 @@ static char *workbench_build_forward_vert(bool is_hair)
char *str = NULL;
if (!is_hair) {
return BLI_string_joinN(
- datatoc_common_world_clip_lib_glsl,
+ datatoc_gpu_shader_cfg_world_clip_lib_glsl,
datatoc_workbench_prepass_vert_glsl);
}
DynStr *ds = BLI_dynstr_new();
BLI_dynstr_append(ds, datatoc_common_hair_lib_glsl);
- BLI_dynstr_append(ds, datatoc_common_world_clip_lib_glsl);
+ BLI_dynstr_append(ds, datatoc_gpu_shader_cfg_world_clip_lib_glsl);
BLI_dynstr_append(ds, datatoc_workbench_prepass_vert_glsl);
str = BLI_dynstr_get_cstring(ds);