diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-06-10 01:36:33 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-06-10 01:36:33 +0300 |
commit | 0a5e9e2f56f5d738b1128b46ecadd9713bd42dec (patch) | |
tree | 7078e883a8ac737a153742331d0f3875463e6c63 /source/blender/draw/modes/object_mode.c | |
parent | b35f562e180c752fa18aafe489677aa9e8bf1b6a (diff) |
Probe: Small UI improvments
-Better falloff default.
-Add clip distance visualisation.
-Reformat UI and add a display panel.
Diffstat (limited to 'source/blender/draw/modes/object_mode.c')
-rw-r--r-- | source/blender/draw/modes/object_mode.c | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c index 0f91ae27903..e1bcb3bf147 100644 --- a/source/blender/draw/modes/object_mode.c +++ b/source/blender/draw/modes/object_mode.c @@ -1430,21 +1430,46 @@ static void DRW_shgroup_probe(OBJECT_StorageList *stl, Object *ob, SceneLayer *s } if ((prb->flag & PRB_SHOW_PARALLAX) != 0) { - if ((prb->flag & PRB_CUSTOM_PARALLAX) != 0) { - float (*obmat)[4]; + float (*obmat)[4], *dist; + + if ((prb->flag & PRB_CUSTOM_PARALLAX) != 0) { + dist = &prb->distpar; /* TODO object parallax */ obmat = ob->obmat; + } + else { + dist = &prb->distinf; + obmat = ob->obmat; + } - if (prb->parallax_type == PROBE_BOX) { - DRW_shgroup_call_dynamic_add(stl->g_data->cube, color, &prb->distpar, obmat); - } - else { - DRW_shgroup_call_dynamic_add(stl->g_data->sphere, color, &prb->distpar, obmat); - } + if (prb->parallax_type == PROBE_BOX) { + DRW_shgroup_call_dynamic_add(stl->g_data->cube, color, &dist, obmat); + } + else { + DRW_shgroup_call_dynamic_add(stl->g_data->sphere, color, &dist, obmat); } } + if ((prb->flag & PRB_SHOW_CLIP_DIST) != 0) { + static const float cubefacemat[6][4][4] = { + {{0.0, 0.0, -1.0, 0.0}, {0.0, -1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}, + {{0.0, 0.0, 1.0, 0.0}, {0.0, -1.0, 0.0, 0.0}, {1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}, + {{1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, -1.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}, + {{1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, -1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}, + {{1.0, 0.0, 0.0, 0.0}, {0.0, -1.0, 0.0, 0.0}, {0.0, 0.0, -1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}, + {{-1.0, 0.0, 0.0, 0.0}, {0.0, -1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}, + }; + + for (int i = 0; i < 6; ++i) { + normalize_m4_m4(prb->clipmat[i], ob->obmat); + // invert_m4(prb->clipmat[i]); + mul_m4_m4m4(prb->clipmat[i], prb->clipmat[i], cubefacemat[i]); + + DRW_shgroup_call_dynamic_add(stl->g_data->lamp_buflimit, color, &prb->clipsta, &prb->clipend, prb->clipmat[i]); + DRW_shgroup_call_dynamic_add(stl->g_data->lamp_buflimit_points, color, &prb->clipsta, &prb->clipend, prb->clipmat[i]); + } + } DRW_shgroup_call_dynamic_add(stl->g_data->lamp_center_group, ob->obmat[3]); /* Line and point going to the ground */ |