[Bf-blender-cvs] [2a02329cb2f] tmp-overlay-engine: Fix Assert from missing UBO bind
Clément Foucault
noreply at git.blender.org
Sat Nov 16 00:29:55 CET 2019
Commit: 2a02329cb2f354f9325a61b12940af65e0855e53
Author: Clément Foucault
Date: Fri Nov 15 17:44:14 2019 +0100
Branches: tmp-overlay-engine
https://developer.blender.org/rB2a02329cb2f354f9325a61b12940af65e0855e53
Fix Assert from missing UBO bind
===================================================================
M source/blender/draw/engines/overlay/overlay_armature.c
M source/blender/draw/engines/overlay/overlay_shader.c
M source/blender/draw/engines/overlay/overlay_wireframe.c
===================================================================
diff --git a/source/blender/draw/engines/overlay/overlay_armature.c b/source/blender/draw/engines/overlay/overlay_armature.c
index eb6dc695415..a5f42360727 100644
--- a/source/blender/draw/engines/overlay/overlay_armature.c
+++ b/source/blender/draw/engines/overlay/overlay_armature.c
@@ -152,18 +152,18 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
sh = OVERLAY_shader_armature_sphere(false);
grp = DRW_shgroup_create(sh, armature_ps);
- DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
+ DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
cb->point_solid = BUF_INSTANCE(grp, format, DRW_cache_bone_point_get());
sh = OVERLAY_shader_armature_sphere(true);
grp = DRW_shgroup_create(sh, armature_ps);
DRW_shgroup_state_disable(grp, DRW_STATE_CULL_BACK);
- DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
+ DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
cb->point_outline = BUF_INSTANCE(grp, format, DRW_cache_bone_point_wire_outline_get());
sh = OVERLAY_shader_armature_shape(false);
grp = DRW_shgroup_create(sh, armature_ps);
- DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
+ DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
DRW_shgroup_uniform_bool_copy(grp, "customShape", false);
cb->box_solid = BUF_INSTANCE(grp, format, DRW_cache_bone_box_get());
cb->octa_solid = BUF_INSTANCE(grp, format, DRW_cache_bone_octahedral_get());
@@ -174,7 +174,7 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
sh = OVERLAY_shader_armature_shape(true);
grp = DRW_shgroup_create(sh, armature_ps);
DRW_shgroup_state_disable(grp, DRW_STATE_CULL_BACK);
- DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
+ DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
DRW_shgroup_uniform_bool_copy(grp, "customShape", false);
cb->box_outline = BUF_INSTANCE(grp, format, DRW_cache_bone_box_wire_get());
cb->octa_outline = BUF_INSTANCE(grp, format, DRW_cache_bone_octahedral_wire_get());
@@ -188,11 +188,11 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
sh = OVERLAY_shader_armature_degrees_of_freedom();
grp = DRW_shgroup_create(sh, armature_ps);
- DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
+ DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
cb->dof_lines = BUF_INSTANCE(grp, format, DRW_cache_bone_dof_lines_get());
grp = DRW_shgroup_create(sh, psl->armature_transp_ps);
- DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
+ DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
cb->dof_sphere = BUF_INSTANCE(grp, format, DRW_cache_bone_dof_sphere_get());
}
{
@@ -200,7 +200,7 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
sh = OVERLAY_shader_armature_stick();
grp = DRW_shgroup_create(sh, armature_ps);
- DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
+ DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
cb->stick = BUF_INSTANCE(grp, format, DRW_cache_bone_stick_get());
}
{
@@ -208,7 +208,7 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
sh = OVERLAY_shader_armature_envelope(false);
grp = DRW_shgroup_create(sh, armature_ps);
- DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
+ DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
DRW_shgroup_uniform_bool_copy(grp, "isDistance", false);
cb->envelope_solid = BUF_INSTANCE(grp, format, DRW_cache_bone_envelope_solid_get());
@@ -217,14 +217,14 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
sh = OVERLAY_shader_armature_envelope(true);
grp = DRW_shgroup_create(sh, armature_ps);
DRW_shgroup_state_disable(grp, DRW_STATE_CULL_BACK);
- DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
+ DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
cb->envelope_outline = BUF_INSTANCE(grp, format, DRW_cache_bone_envelope_outline_get());
format = formats->instance_bone_envelope_distance;
sh = OVERLAY_shader_armature_envelope(false);
grp = DRW_shgroup_create(sh, psl->armature_transp_ps);
- DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
+ DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
DRW_shgroup_uniform_bool_copy(grp, "isDistance", true);
DRW_shgroup_state_enable(grp, DRW_STATE_CULL_FRONT);
cb->envelope_distance = BUF_INSTANCE(grp, format, DRW_cache_bone_envelope_solid_get());
diff --git a/source/blender/draw/engines/overlay/overlay_shader.c b/source/blender/draw/engines/overlay/overlay_shader.c
index e60cd37fed8..81d76caa9f1 100644
--- a/source/blender/draw/engines/overlay/overlay_shader.c
+++ b/source/blender/draw/engines/overlay/overlay_shader.c
@@ -370,7 +370,6 @@ GPUShader *OVERLAY_shader_armature_wire(void)
if (!sh_data->armature_wire) {
sh_data->armature_wire = GPU_shader_create_from_arrays({
.vert = (const char *[]){sh_cfg->lib,
- datatoc_common_globals_lib_glsl,
datatoc_common_view_lib_glsl,
datatoc_armature_wire_vert_glsl,
NULL},
@@ -661,7 +660,6 @@ GPUShader *OVERLAY_shader_image(void)
if (!sh_data->image) {
sh_data->image = GPU_shader_create_from_arrays({
.vert = (const char *[]){sh_cfg->lib,
- datatoc_common_globals_lib_glsl,
datatoc_common_view_lib_glsl,
datatoc_image_vert_glsl,
NULL},
diff --git a/source/blender/draw/engines/overlay/overlay_wireframe.c b/source/blender/draw/engines/overlay/overlay_wireframe.c
index 5132ad3a2b2..57347598088 100644
--- a/source/blender/draw/engines/overlay/overlay_wireframe.c
+++ b/source/blender/draw/engines/overlay/overlay_wireframe.c
@@ -63,7 +63,11 @@ void OVERLAY_wireframe_cache_init(OVERLAY_Data *vedata)
DRW_PASS_CREATE(psl->wireframe_xray_ps, state_xray | pd->clipping_state);
pd->wires_grp = DRW_shgroup_create(wires_sh, psl->wireframe_ps);
+ DRW_shgroup_uniform_block_persistent(pd->wires_grp, "globalsBlock", G_draw.block_ubo);
+
pd->wires_xray_grp = DRW_shgroup_create(wires_sh, psl->wireframe_xray_ps);
+ DRW_shgroup_uniform_block_persistent(pd->wires_xray_grp, "globalsBlock", G_draw.block_ubo);
+
pd->clear_stencil = (draw_ctx->v3d->shading.type > OB_SOLID);
pd->shdata.wire_step_param = pd->overlay.wireframe_threshold - 254.0f / 255.0f;
}
More information about the Bf-blender-cvs
mailing list