diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-06-10 21:28:04 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-06-10 21:28:04 +0300 |
commit | 5290882bd548eeb82e9d89cdc0da10dd32d8de64 (patch) | |
tree | e8748f26cc0d5bc2aaac0fcc394747aec98d74fc /source/blender/draw/engines/workbench/workbench_forward.c | |
parent | 20b0194cd3f33f613bba6923e3ca6fbf16838c55 (diff) |
Workbench: Xray: Fix hairs with matcaps.
Diffstat (limited to 'source/blender/draw/engines/workbench/workbench_forward.c')
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_forward.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_forward.c b/source/blender/draw/engines/workbench/workbench_forward.c index 6864d1ec9b3..2c2cde5ca20 100644 --- a/source/blender/draw/engines/workbench/workbench_forward.c +++ b/source/blender/draw/engines/workbench/workbench_forward.c @@ -421,6 +421,7 @@ static void workbench_forward_cache_populate_particles(WORKBENCH_Data *vedata, O workbench_material_set_normal_world_matrix(shgrp, wpd, e_data.normal_world_matrix); DRW_shgroup_uniform_block(shgrp, "world_block", wpd->world_ubo); DRW_shgroup_uniform_block(shgrp, "material_block", material->material_ubo); + DRW_shgroup_uniform_vec4(shgrp, "viewvecs[0]", (float *)wpd->viewvecs, 3); /* Hairs have lots of layer and can rapidly become the most prominent surface. * So lower their alpha artificially. */ float hair_alpha = wpd->shading.xray_alpha * 0.33f; @@ -429,6 +430,13 @@ static void workbench_forward_cache_populate_particles(WORKBENCH_Data *vedata, O GPUTexture *tex = GPU_texture_from_blender(image, NULL, GL_TEXTURE_2D, false, false, false); DRW_shgroup_uniform_texture(shgrp, "image", tex); } + if (STUDIOLIGHT_ORIENTATION_VIEWNORMAL_ENABLED(wpd)) { + BKE_studiolight_ensure_flag(wpd->studio_light, STUDIOLIGHT_EQUIRECTANGULAR_RADIANCE_GPUTEXTURE); + DRW_shgroup_uniform_texture(shgrp, "matcapImage", wpd->studio_light->equirectangular_radiance_gputexture); + } + if (SPECULAR_HIGHLIGHT_ENABLED(wpd) || MATCAP_ENABLED(wpd)) { + DRW_shgroup_uniform_vec2(shgrp, "invertedViewportSize", DRW_viewport_invert_size_get(), 1); + } shgrp = DRW_shgroup_hair_create(ob, psys, md, vedata->psl->object_outline_pass, e_data.object_outline_hair_sh); |