Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee/eevee_volumes.c
| Show First 20 Lines • Show All 604 Lines • ▼ Show 20 Lines | if (USE_VOLUME_OPTI) { | ||||
| DRW_shgroup_uniform_image_ref(grp, "finalScattering_img", &txl->volume_scatter_history); | DRW_shgroup_uniform_image_ref(grp, "finalScattering_img", &txl->volume_scatter_history); | ||||
| DRW_shgroup_uniform_image_ref(grp, "finalTransmittance_img", &txl->volume_transmit_history); | DRW_shgroup_uniform_image_ref(grp, "finalTransmittance_img", &txl->volume_transmit_history); | ||||
| } | } | ||||
| DRW_shgroup_call_procedural_triangles( | DRW_shgroup_call_procedural_triangles( | ||||
| grp, NULL, USE_VOLUME_OPTI ? 1 : common_data->vol_tex_size[2]); | grp, NULL, USE_VOLUME_OPTI ? 1 : common_data->vol_tex_size[2]); | ||||
| DRW_PASS_CREATE(psl->volumetric_resolve_ps, DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND_CUSTOM); | DRW_PASS_CREATE(psl->volumetric_resolve_ps, DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND_CUSTOM); | ||||
| grp = DRW_shgroup_create(EEVEE_shaders_volumes_resolve_sh_get(), psl->volumetric_resolve_ps); | grp = DRW_shgroup_create(EEVEE_shaders_volumes_resolve_sh_get(false), psl->volumetric_resolve_ps); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "inScattering", &txl->volume_scatter); | DRW_shgroup_uniform_texture_ref(grp, "inScattering", &txl->volume_scatter); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "inTransmittance", &txl->volume_transmit); | DRW_shgroup_uniform_texture_ref(grp, "inTransmittance", &txl->volume_transmit); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "inSceneDepth", &e_data.depth_src); | DRW_shgroup_uniform_texture_ref(grp, "inSceneDepth", &e_data.depth_src); | ||||
| DRW_shgroup_uniform_block(grp, "light_block", sldata->light_ubo); | DRW_shgroup_uniform_block(grp, "light_block", sldata->light_ubo); | ||||
| DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); | DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); | ||||
| DRW_shgroup_uniform_block(grp, "probe_block", sldata->probe_ubo); | DRW_shgroup_uniform_block(grp, "probe_block", sldata->probe_ubo); | ||||
| DRW_shgroup_uniform_block(grp, "renderpass_block", sldata->renderpass_ubo.combined); | DRW_shgroup_uniform_block(grp, "renderpass_block", sldata->renderpass_ubo.combined); | ||||
| ▲ Show 20 Lines • Show All 196 Lines • ▼ Show 20 Lines | if (effects->taa_current_sample == 1) { | ||||
| GPU_framebuffer_bind(fbl->volumetric_accum_fb); | GPU_framebuffer_bind(fbl->volumetric_accum_fb); | ||||
| GPU_framebuffer_clear_color(fbl->volumetric_accum_fb, clear); | GPU_framebuffer_clear_color(fbl->volumetric_accum_fb, clear); | ||||
| } | } | ||||
| /* Create Pass and shgroup. */ | /* Create Pass and shgroup. */ | ||||
| DRW_PASS_CREATE(psl->volumetric_accum_ps, DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND_ADD_FULL); | DRW_PASS_CREATE(psl->volumetric_accum_ps, DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND_ADD_FULL); | ||||
| DRWShadingGroup *grp = NULL; | DRWShadingGroup *grp = NULL; | ||||
| if ((effects->enabled_effects & EFFECT_VOLUMETRIC) != 0) { | if ((effects->enabled_effects & EFFECT_VOLUMETRIC) != 0) { | ||||
| grp = DRW_shgroup_create(EEVEE_shaders_volumes_resolve_sh_get(), psl->volumetric_accum_ps); | grp = DRW_shgroup_create(EEVEE_shaders_volumes_resolve_sh_get(true), psl->volumetric_accum_ps); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "inScattering", &txl->volume_scatter); | DRW_shgroup_uniform_texture_ref(grp, "inScattering", &txl->volume_scatter); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "inTransmittance", &txl->volume_transmit); | DRW_shgroup_uniform_texture_ref(grp, "inTransmittance", &txl->volume_transmit); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "inSceneDepth", &e_data.depth_src); | DRW_shgroup_uniform_texture_ref(grp, "inSceneDepth", &e_data.depth_src); | ||||
| DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); | DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); | ||||
| DRW_shgroup_uniform_block(grp, "renderpass_block", sldata->renderpass_ubo.combined); | DRW_shgroup_uniform_block(grp, "renderpass_block", sldata->renderpass_ubo.combined); | ||||
| } | } | ||||
| else { | else { | ||||
| /* There is no volumetrics in the scene. Use a shader to fill the accum textures with a default | /* There is no volumetrics in the scene. Use a shader to fill the accum textures with a default | ||||
| Show All 22 Lines | |||||