diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-02-06 01:15:16 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-02-06 01:15:16 +0300 |
commit | dbd7f36da8ec3ac1c2898aee346beecb86aac8a2 (patch) | |
tree | 0d77061a4305b7bcfef13bb753089e5f6f21e7c3 /source/blender/draw/engines/basic | |
parent | a245d533514e335f028cfa6cdb26614ed0982484 (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/basic')
-rw-r--r-- | source/blender/draw/engines/basic/basic_engine.c | 8 |
1 files changed, 4 insertions, 4 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; |