Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee/eevee_subsurface.c
| Show First 20 Lines • Show All 181 Lines • ▼ Show 20 Lines | if (effects->enabled_effects & EFFECT_SSS) { | ||||
| } | } | ||||
| GPU_framebuffer_ensure_config(&fbl->sss_accum_fb, | GPU_framebuffer_ensure_config(&fbl->sss_accum_fb, | ||||
| {GPU_ATTACHMENT_TEXTURE(stencil_tex), | {GPU_ATTACHMENT_TEXTURE(stencil_tex), | ||||
| GPU_ATTACHMENT_TEXTURE(txl->sss_dir_accum), | GPU_ATTACHMENT_TEXTURE(txl->sss_dir_accum), | ||||
| GPU_ATTACHMENT_TEXTURE(txl->sss_col_accum)}); | GPU_ATTACHMENT_TEXTURE(txl->sss_col_accum)}); | ||||
| /* Clear texture. */ | /* Clear texture. */ | ||||
| if (DRW_state_is_image_render() || effects->taa_current_sample == 1) { | |||||
| float clear[4] = {0.0f, 0.0f, 0.0f, 0.0f}; | float clear[4] = {0.0f, 0.0f, 0.0f, 0.0f}; | ||||
| GPU_framebuffer_bind(fbl->sss_accum_fb); | GPU_framebuffer_bind(fbl->sss_accum_fb); | ||||
| GPU_framebuffer_clear_color(fbl->sss_accum_fb, clear); | GPU_framebuffer_clear_color(fbl->sss_accum_fb, clear); | ||||
| } | |||||
| /* Make the opaque refraction pass mask the sss. */ | /* Make the opaque refraction pass mask the sss. */ | ||||
| DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_DEPTH_EQUAL | DRW_STATE_CLIP_PLANES | | DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_DEPTH_EQUAL | DRW_STATE_CLIP_PLANES | | ||||
| DRW_STATE_WRITE_STENCIL | DRW_STATE_STENCIL_ALWAYS; | DRW_STATE_WRITE_STENCIL | DRW_STATE_STENCIL_ALWAYS; | ||||
| DRW_pass_state_set(vedata->psl->refract_pass, state); | DRW_pass_state_set(vedata->psl->refract_pass, state); | ||||
| DRW_pass_foreach_shgroup(vedata->psl->refract_pass, &set_shgrp_stencil, NULL); | DRW_pass_foreach_shgroup(vedata->psl->refract_pass, &set_shgrp_stencil, NULL); | ||||
| } | } | ||||
| else { | else { | ||||
| ▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | void EEVEE_subsurface_add_pass(EEVEE_ViewLayerData *sldata, | ||||
| DRW_shgroup_uniform_texture_ref(grp, "sssIrradiance", &effects->sss_blur); | DRW_shgroup_uniform_texture_ref(grp, "sssIrradiance", &effects->sss_blur); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "sssAlbedo", &effects->sss_albedo); | DRW_shgroup_uniform_texture_ref(grp, "sssAlbedo", &effects->sss_albedo); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "sssRadius", &effects->sss_radius); | DRW_shgroup_uniform_texture_ref(grp, "sssRadius", &effects->sss_radius); | ||||
| DRW_shgroup_uniform_block(grp, "sssProfile", sss_profile); | DRW_shgroup_uniform_block(grp, "sssProfile", sss_profile); | ||||
| DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); | DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); | ||||
| DRW_shgroup_stencil_mask(grp, sss_id); | DRW_shgroup_stencil_mask(grp, sss_id); | ||||
| DRW_shgroup_call(grp, quad, NULL); | DRW_shgroup_call(grp, quad, NULL); | ||||
| if (DRW_state_is_image_render()) { | if ((stl->g_data->render_passes & (SCE_PASS_SUBSURFACE_COLOR | SCE_PASS_SUBSURFACE_DIRECT)) != | ||||
| 0) { | |||||
| grp = DRW_shgroup_create(e_data.sss_sh[2], psl->sss_accum_ps); | grp = DRW_shgroup_create(e_data.sss_sh[2], psl->sss_accum_ps); | ||||
| DRW_shgroup_uniform_texture(grp, "utilTex", EEVEE_materials_get_util_tex()); | DRW_shgroup_uniform_texture(grp, "utilTex", EEVEE_materials_get_util_tex()); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "depthBuffer", depth_src); | DRW_shgroup_uniform_texture_ref(grp, "depthBuffer", depth_src); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "sssIrradiance", &effects->sss_blur); | DRW_shgroup_uniform_texture_ref(grp, "sssIrradiance", &effects->sss_blur); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "sssAlbedo", &effects->sss_albedo); | DRW_shgroup_uniform_texture_ref(grp, "sssAlbedo", &effects->sss_albedo); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "sssRadius", &effects->sss_radius); | DRW_shgroup_uniform_texture_ref(grp, "sssRadius", &effects->sss_radius); | ||||
| DRW_shgroup_uniform_block(grp, "sssProfile", sss_profile); | DRW_shgroup_uniform_block(grp, "sssProfile", sss_profile); | ||||
| DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); | DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); | ||||
| ▲ Show 20 Lines • Show All 157 Lines • Show Last 20 Lines | |||||