Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/workbench/workbench_effect_cavity.c
| Context not available. | |||||
| if (CAVITY_ENABLED(wpd)) { | if (CAVITY_ENABLED(wpd)) { | ||||
| workbench_cavity_samples_ubo_ensure(wpd); | workbench_cavity_samples_ubo_ensure(wpd); | ||||
| int state; | |||||
| bool ridge_or_valley = MATCAP_RIDGE_ENABLED(wpd) || MATCAP_VALLEY_ENABLED(wpd); | |||||
| if (ridge_or_valley) { | |||||
| BKE_studiolight_ensure_flag(wpd->studio_light, | |||||
| STUDIOLIGHT_MATCAP_RIDGE_GPUTEXTURE | | |||||
| STUDIOLIGHT_MATCAP_VALLEY_GPUTEXTURE); | |||||
| state = DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND_ALPHA; | |||||
| } | |||||
| else { | |||||
| state = DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND_MUL; | |||||
| } | |||||
| int state = DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND_MUL; | |||||
| DRW_PASS_CREATE(psl->cavity_ps, state); | DRW_PASS_CREATE(psl->cavity_ps, state); | ||||
| sh = workbench_shader_cavity_get(SSAO_ENABLED(wpd), CURVATURE_ENABLED(wpd)); | sh = workbench_shader_cavity_get(SSAO_ENABLED(wpd), | ||||
| CURVATURE_ENABLED(wpd), | |||||
| ridge_or_valley); | |||||
| grp = DRW_shgroup_create(sh, psl->cavity_ps); | grp = DRW_shgroup_create(sh, psl->cavity_ps); | ||||
| DRW_shgroup_uniform_texture(grp, "normalBuffer", wpd->normal_buffer_tx); | DRW_shgroup_uniform_texture(grp, "normalBuffer", wpd->normal_buffer_tx); | ||||
| Context not available. | |||||
| if (CURVATURE_ENABLED(wpd)) { | if (CURVATURE_ENABLED(wpd)) { | ||||
| DRW_shgroup_uniform_texture(grp, "objectIdBuffer", wpd->object_id_tx); | DRW_shgroup_uniform_texture(grp, "objectIdBuffer", wpd->object_id_tx); | ||||
| } | } | ||||
| if (MATCAP_RIDGE_ENABLED(wpd)) { | |||||
| DRW_shgroup_uniform_texture(grp, "matcapRidge", wpd->studio_light->matcap_ridge.gputexture); | |||||
| DRW_shgroup_uniform_bool_copy(grp, "useRidge", MATCAP_RIDGE_ENABLED(wpd)); | |||||
| } | |||||
| if (MATCAP_VALLEY_ENABLED(wpd)) { | |||||
| DRW_shgroup_uniform_texture( | |||||
| grp, "matcapValley", wpd->studio_light->matcap_valley.gputexture); | |||||
| DRW_shgroup_uniform_bool_copy(grp, "useValley", MATCAP_VALLEY_ENABLED(wpd)); | |||||
| } | |||||
| if (ridge_or_valley) { | |||||
| DRW_shgroup_uniform_texture_persistent(grp, "materialBuffer", wpd->material_buffer_tx); | |||||
| } | |||||
| DRW_shgroup_call_procedural_triangles(grp, NULL, 1); | DRW_shgroup_call_procedural_triangles(grp, NULL, 1); | ||||
| } | } | ||||
| else { | else { | ||||
| Context not available. | |||||