Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee/eevee_screen_raytrace.c
| Show First 20 Lines • Show All 100 Lines • ▼ Show 20 Lines | |||||
| int EEVEE_screen_raytrace_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) | int EEVEE_screen_raytrace_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) | ||||
| { | { | ||||
| EEVEE_CommonUniformBuffer *common_data = &sldata->common_data; | EEVEE_CommonUniformBuffer *common_data = &sldata->common_data; | ||||
| EEVEE_StorageList *stl = vedata->stl; | EEVEE_StorageList *stl = vedata->stl; | ||||
| EEVEE_FramebufferList *fbl = vedata->fbl; | EEVEE_FramebufferList *fbl = vedata->fbl; | ||||
| EEVEE_TextureList *txl = vedata->txl; | EEVEE_TextureList *txl = vedata->txl; | ||||
| EEVEE_EffectsInfo *effects = stl->effects; | EEVEE_EffectsInfo *effects = stl->effects; | ||||
| const float *viewport_size = DRW_viewport_size_get(); | const float *viewport_size = DRW_viewport_render_size_get(); | ||||
| const DRWContextState *draw_ctx = DRW_context_state_get(); | const DRWContextState *draw_ctx = DRW_context_state_get(); | ||||
| const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph); | const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph); | ||||
| /* Compute pixel size, (shared with contact shadows) */ | /* Compute pixel size, (shared with contact shadows) */ | ||||
| copy_v2_v2(common_data->ssr_pixelsize, viewport_size); | copy_v2_v2(common_data->ssr_pixelsize, viewport_size); | ||||
| invert_v2(common_data->ssr_pixelsize); | invert_v2(common_data->ssr_pixelsize); | ||||
| if (scene_eval->eevee.flag & SCE_EEVEE_SSR_ENABLED) { | if (scene_eval->eevee.flag & SCE_EEVEE_SSR_ENABLED) { | ||||
| const bool use_refraction = (scene_eval->eevee.flag & SCE_EEVEE_SSR_REFRACTION) != 0; | const bool use_refraction = (scene_eval->eevee.flag & SCE_EEVEE_SSR_REFRACTION) != 0; | ||||
| if (use_refraction) { | if (use_refraction) { | ||||
| /* TODO: Opti: Could be shared. */ | /* TODO: Opti: Could be shared. */ | ||||
| DRW_texture_ensure_fullscreen_2d( | DRW_texture_ensure_render_fullscreen_2d( | ||||
| &txl->refract_color, GPU_R11F_G11F_B10F, DRW_TEX_FILTER | DRW_TEX_MIPMAP); | &txl->refract_color, GPU_R11F_G11F_B10F, DRW_TEX_FILTER | DRW_TEX_MIPMAP); | ||||
| GPU_framebuffer_ensure_config( | GPU_framebuffer_ensure_config( | ||||
| &fbl->refract_fb, {GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE(txl->refract_color)}); | &fbl->refract_fb, {GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE(txl->refract_color)}); | ||||
| } | } | ||||
| const bool is_persp = DRW_viewport_is_persp_get(); | const bool is_persp = DRW_viewport_is_persp_get(); | ||||
| if (effects->ssr_was_persp != is_persp) { | if (effects->ssr_was_persp != is_persp) { | ||||
| ▲ Show 20 Lines • Show All 146 Lines • ▼ Show 20 Lines | void EEVEE_reflection_compute(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) | ||||
| EEVEE_PassList *psl = vedata->psl; | EEVEE_PassList *psl = vedata->psl; | ||||
| EEVEE_FramebufferList *fbl = vedata->fbl; | EEVEE_FramebufferList *fbl = vedata->fbl; | ||||
| EEVEE_StorageList *stl = vedata->stl; | EEVEE_StorageList *stl = vedata->stl; | ||||
| EEVEE_TextureList *txl = vedata->txl; | EEVEE_TextureList *txl = vedata->txl; | ||||
| EEVEE_EffectsInfo *effects = stl->effects; | EEVEE_EffectsInfo *effects = stl->effects; | ||||
| if (((effects->enabled_effects & EFFECT_SSR) != 0) && stl->g_data->valid_double_buffer) { | if (((effects->enabled_effects & EFFECT_SSR) != 0) && stl->g_data->valid_double_buffer) { | ||||
| DefaultTextureList *dtxl = DRW_viewport_texture_list_get(); | DefaultTextureList *dtxl = DRW_viewport_texture_list_get(); | ||||
| e_data.depth_src = dtxl->depth; | e_data.depth_src = txl->depth ? txl->depth : dtxl->depth; | ||||
| DRW_stats_group_start("SSR"); | DRW_stats_group_start("SSR"); | ||||
| /* Raytrace. */ | /* Raytrace. */ | ||||
| GPU_framebuffer_bind(fbl->screen_tracing_fb); | GPU_framebuffer_bind(fbl->screen_tracing_fb); | ||||
| DRW_draw_pass(psl->ssr_raytrace); | DRW_draw_pass(psl->ssr_raytrace); | ||||
| EEVEE_downsample_buffer(vedata, txl->color_double_buffer, 9); | EEVEE_downsample_buffer(vedata, txl->color_double_buffer, 9); | ||||
| Show All 40 Lines | |||||