diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-01-21 11:08:42 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-01-21 11:08:42 +0300 |
commit | 78d2abd9c16f97be2ab272ee38ba7e398f57a742 (patch) | |
tree | ab83647a2f0477ab7fda9665eecccd6db6da951b /source/blender/draw/intern | |
parent | 7bc9a563e65842629a98f0655578e1e4f8c8c960 (diff) |
DRW: Support wire overlay clipping
Diffstat (limited to 'source/blender/draw/intern')
-rw-r--r-- | source/blender/draw/intern/draw_common.c | 8 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_common.h | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_common.c b/source/blender/draw/intern/draw_common.c index 48212757969..250b0a1f1ab 100644 --- a/source/blender/draw/intern/draw_common.c +++ b/source/blender/draw/intern/draw_common.c @@ -298,6 +298,14 @@ void DRW_globals_free(void) } } +void DRW_shgroup_world_clip_planes_from_rv3d(DRWShadingGroup *shgrp, const RegionView3D *rv3d) +{ + int world_clip_planes_len = (rv3d->viewlock & RV3D_BOXCLIP) ? 4 : 6; + DRW_shgroup_uniform_vec4(shgrp, "WorldClipPlanes", rv3d->clip[0], world_clip_planes_len); + DRW_shgroup_uniform_int_copy(shgrp, "WorldClipPlanesLen", world_clip_planes_len); + DRW_shgroup_state_enable(shgrp, DRW_STATE_CLIP_PLANES); +} + DRWShadingGroup *shgroup_dynlines_flat_color(DRWPass *pass) { GPUShader *sh = GPU_shader_get_builtin_shader(GPU_SHADER_3D_FLAT_COLOR); diff --git a/source/blender/draw/intern/draw_common.h b/source/blender/draw/intern/draw_common.h index b79902bf4e3..5b55e93af3d 100644 --- a/source/blender/draw/intern/draw_common.h +++ b/source/blender/draw/intern/draw_common.h @@ -125,6 +125,8 @@ BLI_STATIC_ASSERT_ALIGN(GlobalsUboStorage, 16) void DRW_globals_update(void); void DRW_globals_free(void); +void DRW_shgroup_world_clip_planes_from_rv3d(struct DRWShadingGroup *shgrp, const RegionView3D *rv3d); + struct DRWShadingGroup *shgroup_dynlines_flat_color(struct DRWPass *pass); struct DRWShadingGroup *shgroup_dynlines_dashed_uniform_color(struct DRWPass *pass, float color[4]); struct DRWShadingGroup *shgroup_dynpoints_uniform_color(struct DRWPass *pass, float color[4], float *size); |