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:
authorJulian Eisel <eiseljulian@gmail.com>2019-07-16 22:09:30 +0300
committerJulian Eisel <eiseljulian@gmail.com>2019-07-16 22:09:30 +0300
commitfca4826c7f9d3258434df1b463189ca232cfd5c8 (patch)
tree04b6a047cd3ba879a2c886365c2228bde6a644f0 /source/blender/draw/intern
parentb0845fc1332bf242237fe858803bcebe87ffd7b3 (diff)
parenta36a44bb811d8dbe39dfaf79e21c509b3134ec66 (diff)
Merge branch 'master' into soc-2019-openxr
Diffstat (limited to 'source/blender/draw/intern')
-rw-r--r--source/blender/draw/intern/draw_armature.c22
-rw-r--r--source/blender/draw/intern/draw_cache_impl_mesh.c2
-rw-r--r--source/blender/draw/intern/draw_instance_data.c3
3 files changed, 16 insertions, 11 deletions
diff --git a/source/blender/draw/intern/draw_armature.c b/source/blender/draw/intern/draw_armature.c
index 4f387de16a8..f97efa9aed9 100644
--- a/source/blender/draw/intern/draw_armature.c
+++ b/source/blender/draw/intern/draw_armature.c
@@ -883,7 +883,7 @@ static void update_color(const Object *ob, const float const_color[4])
#define NO_ALPHA(c) (((c)[3] = 1.0f), (c))
UI_GetThemeColor3fv(TH_SELECT, NO_ALPHA(g_theme.select_color));
- UI_GetThemeColor3fv(TH_EDGE_SELECT, NO_ALPHA(g_theme.edge_select_color));
+ UI_GetThemeColorShade3fv(TH_EDGE_SELECT, 60, NO_ALPHA(g_theme.edge_select_color));
UI_GetThemeColorShade3fv(TH_EDGE_SELECT, -20, NO_ALPHA(g_theme.bone_select_color));
UI_GetThemeColor3fv(TH_WIRE, NO_ALPHA(g_theme.wire_color));
UI_GetThemeColor3fv(TH_WIRE_EDIT, NO_ALPHA(g_theme.wire_edit_color));
@@ -1886,19 +1886,23 @@ static void draw_armature_edit(Object *ob)
{
const DRWContextState *draw_ctx = DRW_context_state_get();
EditBone *eBone;
- bArmature *arm = ob->data;
int index;
const bool is_select = DRW_state_is_select();
- update_color(ob, NULL);
- edbo_compute_bbone_child(arm);
-
const bool show_text = DRW_state_show_text();
const bool show_relations = ((draw_ctx->v3d->flag & V3D_HIDE_HELPLINES) == 0);
- const Object *orig_object = DEG_get_original_object(ob);
+ const Object *ob_orig = DEG_get_original_object(ob);
+ /* FIXME(campbell): We should be able to use the CoW object,
+ * however the active bone isn't updated. Long term solution is an 'EditArmature' struct.
+ * for now we can draw from the original armature. See: T66773. */
+ // bArmature *arm = ob->data;
+ bArmature *arm = ob_orig->data;
+
+ update_color(ob, NULL);
+ edbo_compute_bbone_child(arm);
- for (eBone = arm->edbo->first, index = orig_object->runtime.select_id; eBone;
+ for (eBone = arm->edbo->first, index = ob_orig->runtime.select_id; eBone;
eBone = eBone->next, index += 0x10000) {
if (eBone->layer & arm->layer) {
if ((eBone->flag & BONE_HIDDEN_A) == 0) {
@@ -1993,8 +1997,8 @@ static void draw_armature_pose(Object *ob, const float const_color[4])
}
if (arm->flag & ARM_POSEMODE) {
- const Object *orig_object = DEG_get_original_object(ob);
- index = orig_object->runtime.select_id;
+ const Object *ob_orig = DEG_get_original_object(ob);
+ index = ob_orig->runtime.select_id;
}
}
diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c
index f3089231e8c..306031809d1 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -3018,7 +3018,7 @@ static void mesh_create_loop_edge_fac(MeshRenderData *rdata, GPUVertBuf *vbo)
BM_ITER_ELEM (loop, &iter_loop, efa, BM_LOOPS_OF_FACE) {
float ratio = mesh_loop_edge_factor_get(
efa->no, loop->v->co, loop->v->no, loop->next->v->co);
- vertbuf_raw_step(&wd_step, ratio * 255);
+ vertbuf_raw_step(&wd_step, ratio * 253 + 1);
}
}
BLI_assert(GPU_vertbuf_raw_used(&wd_step) == loop_len);
diff --git a/source/blender/draw/intern/draw_instance_data.c b/source/blender/draw/intern/draw_instance_data.c
index 3e5dfb53fc7..802f49d6549 100644
--- a/source/blender/draw/intern/draw_instance_data.c
+++ b/source/blender/draw/intern/draw_instance_data.c
@@ -141,7 +141,8 @@ GPUBatch *DRW_temp_batch_instance_request(DRWInstanceDataList *idatalist,
GPUBatch *batch = BLI_memblock_alloc(idatalist->pool_instancing);
bool is_compatible = (batch->gl_prim_type == geom->gl_prim_type) && (batch->inst == buf) &&
- (buf->vbo_id != 0) && (batch->phase == GPU_BATCH_READY_TO_DRAW);
+ (buf->vbo_id != 0) && (batch->phase == GPU_BATCH_READY_TO_DRAW) &&
+ (batch->elem == geom->elem);
for (int i = 0; i < GPU_BATCH_VBO_MAX_LEN && is_compatible; i++) {
if (batch->verts[i] != geom->verts[i]) {
is_compatible = false;