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:
authorJeroen Bakker <j.bakker@atmind.nl>2018-06-01 18:06:25 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2018-06-01 18:15:35 +0300
commite4a727626e34eef20e2b41cc3e26b41db4f360a0 (patch)
tree25af9312b02b0defae25f2c08c2a9863d2e795e1 /source/blender/draw/engines/workbench/workbench_forward.c
parent56dc2bf0c528524b9a31c9cd27f9b1a261827bf0 (diff)
X-Ray: Added a slider for the alpha
- will not render when set to 0.0 for speed reasons. so when user sets transparency to hide everything the bigger passes will be skipped.
Diffstat (limited to 'source/blender/draw/engines/workbench/workbench_forward.c')
-rw-r--r--source/blender/draw/engines/workbench/workbench_forward.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_forward.c b/source/blender/draw/engines/workbench/workbench_forward.c
index 279e6a745ee..50cf5676239 100644
--- a/source/blender/draw/engines/workbench/workbench_forward.c
+++ b/source/blender/draw/engines/workbench/workbench_forward.c
@@ -178,6 +178,7 @@ static WORKBENCH_MaterialData *get_or_create_material_data(
drawtype == OB_SOLID ? wpd->transparent_accum_sh : wpd->transparent_accum_texture_sh,
psl->transparent_accum_pass);
DRW_shgroup_uniform_block(grp, "world_block", wpd->world_ubo);
+ DRW_shgroup_uniform_float(grp, "alpha", &wpd->shading.xray_alpha, 1);
workbench_material_set_normal_world_matrix(grp, wpd, e_data.normal_world_matrix);
material->object_id = engine_object_data->object_id;
copy_v4_v4(material->material_data.diffuse_color, material_template.material_data.diffuse_color);
@@ -343,6 +344,7 @@ void workbench_forward_engine_init(WORKBENCH_Data *vedata)
int state = DRW_STATE_WRITE_COLOR | DRW_STATE_TRANSPARENT_REVEALAGE;
psl->transparent_revealage_pass = DRW_pass_create("Transparent Revealage", state);
grp = DRW_shgroup_create(e_data.transparent_revealage_sh, psl->transparent_revealage_pass);
+ DRW_shgroup_uniform_float(grp, "alpha", &wpd->shading.xray_alpha, 1);
wpd->transparent_revealage_shgrp = grp;
}
#endif
@@ -546,14 +548,17 @@ void workbench_forward_draw_scene(WORKBENCH_Data *vedata)
/* Write Depth + Object ID */
GPU_framebuffer_bind(fbl->object_outline_fb);
DRW_draw_pass(psl->object_outline_pass);
-
- /* Shade */
- GPU_framebuffer_bind(fbl->transparent_accum_fb);
- DRW_draw_pass(psl->transparent_accum_pass);
+
+ if (wpd->shading.xray_alpha > 0.0) {
+ /* Shade */
+ GPU_framebuffer_bind(fbl->transparent_accum_fb);
+ DRW_draw_pass(psl->transparent_accum_pass);
#ifdef WORKBENCH_REVEALAGE_ENABLED
- GPU_framebuffer_bind(fbl->transparent_revealage_fb);
- DRW_draw_pass(psl->transparent_revealage_pass);
+ GPU_framebuffer_bind(fbl->transparent_revealage_fb);
+ DRW_draw_pass(psl->transparent_revealage_pass);
#endif
+ }
+
/* Composite */
GPU_framebuffer_bind(fbl->composite_fb);
DRW_draw_pass(psl->composite_pass);