Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee/eevee_mist.c
| Show First 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | char *frag_str = BLI_string_joinN( | ||||
| datatoc_effect_mist_frag_glsl); | datatoc_effect_mist_frag_glsl); | ||||
| e_data.mist_sh = DRW_shader_create_fullscreen(frag_str, "#define FIRST_PASS\n"); | e_data.mist_sh = DRW_shader_create_fullscreen(frag_str, "#define FIRST_PASS\n"); | ||||
| MEM_freeN(frag_str); | MEM_freeN(frag_str); | ||||
| } | } | ||||
| /* Create FrameBuffer. */ | /* Create FrameBuffer. */ | ||||
| DRW_texture_ensure_fullscreen_2d(&txl->mist_accum, GPU_R32F, 0); /* Should be enough precision for many samples. */ | DRW_texture_ensure_render_fullscreen_2d(&txl->mist_accum, GPU_R32F, 0); /* Should be enough precision for many samples. */ | ||||
| GPU_framebuffer_ensure_config(&fbl->mist_accum_fb, { | GPU_framebuffer_ensure_config(&fbl->mist_accum_fb, { | ||||
| GPU_ATTACHMENT_NONE, | GPU_ATTACHMENT_NONE, | ||||
| GPU_ATTACHMENT_TEXTURE(txl->mist_accum) | GPU_ATTACHMENT_TEXTURE(txl->mist_accum) | ||||
| }); | }); | ||||
| /* Clear texture. */ | /* Clear texture. */ | ||||
| GPU_framebuffer_bind(fbl->mist_accum_fb); | GPU_framebuffer_bind(fbl->mist_accum_fb); | ||||
| Show All 26 Lines | void EEVEE_mist_output_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) | ||||
| } | } | ||||
| /* XXX ??!! WHY? If not it does not match cycles. */ | /* XXX ??!! WHY? If not it does not match cycles. */ | ||||
| g_data->mist_falloff *= 0.5f; | g_data->mist_falloff *= 0.5f; | ||||
| /* Create Pass and shgroup. */ | /* Create Pass and shgroup. */ | ||||
| psl->mist_accum_ps = DRW_pass_create("Mist Accum", DRW_STATE_WRITE_COLOR | DRW_STATE_ADDITIVE); | psl->mist_accum_ps = DRW_pass_create("Mist Accum", DRW_STATE_WRITE_COLOR | DRW_STATE_ADDITIVE); | ||||
| DRWShadingGroup *grp = DRW_shgroup_create(e_data.mist_sh, psl->mist_accum_ps); | DRWShadingGroup *grp = DRW_shgroup_create(e_data.mist_sh, psl->mist_accum_ps); | ||||
| DRW_shgroup_uniform_texture_ref(grp, "depthBuffer", &dtxl->depth); | DRW_shgroup_uniform_texture_ref(grp, "depthBuffer", txl->depth ? &txl->depth : &dtxl->depth); | ||||
| DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); | DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); | ||||
| DRW_shgroup_uniform_vec3(grp, "mistSettings", &g_data->mist_start, 1); | DRW_shgroup_uniform_vec3(grp, "mistSettings", &g_data->mist_start, 1); | ||||
| DRW_shgroup_call_add(grp, DRW_cache_fullscreen_quad_get(), NULL); | DRW_shgroup_call_add(grp, DRW_cache_fullscreen_quad_get(), NULL); | ||||
| } | } | ||||
| void EEVEE_mist_output_accumulate(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) | void EEVEE_mist_output_accumulate(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) | ||||
| { | { | ||||
| EEVEE_FramebufferList *fbl = vedata->fbl; | EEVEE_FramebufferList *fbl = vedata->fbl; | ||||
| Show All 15 Lines | |||||