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:
authorClément Foucault <foucault.clem@gmail.com>2018-06-04 18:33:25 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-06-04 18:33:34 +0300
commit101c277e3d8241ad55f6343690b5d96a5e37d1f0 (patch)
treed5fa83446648b942d06eb0016e42aef8a5c1ae6b /source/blender/draw/intern/draw_manager_exec.c
parent349d416949d89b0428abf18e8d3b490470c9601d (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.c19
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));
+}
+
/** \} */
/* -------------------------------------------------------------------- */