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:
authorAntony Riakiotakis <kalast@gmail.com>2015-04-28 21:41:37 +0300
committerAntony Riakiotakis <kalast@gmail.com>2015-04-28 21:41:49 +0300
commit859ac8fbc6eaaa303b04839538b590a5a240f857 (patch)
tree593d01ec0e30ab1b81fd793bb5385ea55bab5343 /source/blender/editors/screen/glutil.c
parent85ae4b87afa80527a36d3bd3164a9df6544f0c3b (diff)
Fix ortho part of T44505
In this case we can calculate an offset without worrying about perspective correction. Unfortunately if looking from a camera we still have depth issues here. There's no really general case that can fix this so I'm leaving this as is.
Diffstat (limited to 'source/blender/editors/screen/glutil.c')
-rw-r--r--source/blender/editors/screen/glutil.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c
index 618d6906b76..1ab03bfb7ef 100644
--- a/source/blender/editors/screen/glutil.c
+++ b/source/blender/editors/screen/glutil.c
@@ -991,7 +991,7 @@ void bgl_get_mats(bglMats *mats)
/**
* \note \a viewdist is only for ortho at the moment.
*/
-void bglPolygonOffset(float viewdist, float dist)
+void bglPolygonOffset(float viewdist, float dist)
{
static float winmat[16], offset = 0.0;
@@ -1007,7 +1007,16 @@ void bglPolygonOffset(float viewdist, float dist)
/* dist is from camera to center point */
- if (winmat[15] > 0.5f) offs = 0.00001f * dist * viewdist; // ortho tweaking
+ if (winmat[15] > 0.5f) {
+ int depthbits, i, depthmax = 1;
+ glGetIntegerv(GL_DEPTH_BITS, &depthbits);
+
+ for (i = 1; i < depthbits; i++) {
+ depthmax = (depthmax << 1) + 1;
+ }
+ offs = (-1.0 / winmat[10]) * dist / (double) depthmax;
+ //offs = 0.00001f * dist * viewdist; // ortho tweaking
+ }
else offs = 0.0001f * dist; // should be clipping value or so...
winmat[14] -= offs;