diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-06-04 18:33:25 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-06-04 18:33:34 +0300 |
commit | 101c277e3d8241ad55f6343690b5d96a5e37d1f0 (patch) | |
tree | d5fa83446648b942d06eb0016e42aef8a5c1ae6b /source/blender/draw/intern/draw_manager_exec.c | |
parent | 349d416949d89b0428abf18e8d3b490470c9601d (diff) |
Workbench: Shadows: Fix cap being clipped by far plane.
This was the last remaining problem with shadow volumes (that I know of).
Only extrude until we hit the far plane.
Diffstat (limited to 'source/blender/draw/intern/draw_manager_exec.c')
-rw-r--r-- | source/blender/draw/intern/draw_manager_exec.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/source/blender/draw/intern/draw_manager_exec.c b/source/blender/draw/intern/draw_manager_exec.c index cb2cad8a36e..f6b6438395d 100644 --- a/source/blender/draw/intern/draw_manager_exec.c +++ b/source/blender/draw/intern/draw_manager_exec.c @@ -516,12 +516,12 @@ static void draw_clipping_setup_from_view(void) for (int p = 0; p < 6; p++) { int q, r; switch (p) { - case 0: q = 1; r = 2; break; - case 1: q = 0; r = 5; break; - case 2: q = 1; r = 5; break; - case 3: q = 2; r = 6; break; - case 4: q = 0; r = 3; break; - default: q = 4; r = 7; break; + case 0: q = 1; r = 2; break; /* -X */ + case 1: q = 0; r = 5; break; /* -Y */ + case 2: q = 1; r = 5; break; /* +Z (far) */ + case 3: q = 2; r = 6; break; /* +Y */ + case 4: q = 0; r = 3; break; /* -Z (near) */ + default: q = 4; r = 7; break; /* +X */ } if (DST.frontface == GL_CW) { SWAP(int, q, r); @@ -713,6 +713,13 @@ void DRW_culling_frustum_corners_get(BoundBox *corners) memcpy(corners, &DST.clipping.frustum_corners, sizeof(BoundBox)); } +/* See draw_clipping_setup_from_view() for the plane order. */ +void DRW_culling_frustum_planes_get(float planes[6][4]) +{ + draw_clipping_setup_from_view(); + memcpy(planes, &DST.clipping.frustum_planes, sizeof(DST.clipping.frustum_planes)); +} + /** \} */ /* -------------------------------------------------------------------- */ |