Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee/eevee_effects.c
| Show First 20 Lines • Show All 95 Lines • ▼ Show 20 Lines | static void eevee_create_shader_downsample(void) | ||||
| e_data.maxz_copydepth_sh = DRW_shader_create_fullscreen(datatoc_effect_minmaxz_frag_glsl, | e_data.maxz_copydepth_sh = DRW_shader_create_fullscreen(datatoc_effect_minmaxz_frag_glsl, | ||||
| "#define MAX_PASS\n" | "#define MAX_PASS\n" | ||||
| "#define COPY_DEPTH\n"); | "#define COPY_DEPTH\n"); | ||||
| } | } | ||||
| #define SETUP_BUFFER(tex, fb, fb_color) \ | #define SETUP_BUFFER(tex, fb, fb_color) \ | ||||
| { \ | { \ | ||||
| eGPUTextureFormat format = (DRW_state_is_scene_render()) ? GPU_RGBA32F : GPU_RGBA16F; \ | eGPUTextureFormat format = (DRW_state_is_scene_render()) ? GPU_RGBA32F : GPU_RGBA16F; \ | ||||
| DRW_texture_ensure_fullscreen_2d(&tex, format, DRW_TEX_FILTER | DRW_TEX_MIPMAP); \ | DRW_texture_ensure_render_fullscreen_2d(&tex, format, DRW_TEX_FILTER | DRW_TEX_MIPMAP); \ | ||||
| GPU_framebuffer_ensure_config(&fb, \ | GPU_framebuffer_ensure_config( \ | ||||
| &fb, \ | |||||
| { \ | { \ | ||||
| GPU_ATTACHMENT_TEXTURE(dtxl->depth), \ | GPU_ATTACHMENT_TEXTURE(txl->depth ? txl->depth : dtxl->depth), \ | ||||
| GPU_ATTACHMENT_TEXTURE(tex), \ | GPU_ATTACHMENT_TEXTURE(tex), \ | ||||
| }); \ | }); \ | ||||
| GPU_framebuffer_ensure_config(&fb_color, \ | GPU_framebuffer_ensure_config(&fb_color, \ | ||||
| { \ | { \ | ||||
| GPU_ATTACHMENT_NONE, \ | GPU_ATTACHMENT_NONE, \ | ||||
| GPU_ATTACHMENT_TEXTURE(tex), \ | GPU_ATTACHMENT_TEXTURE(tex), \ | ||||
| }); \ | }); \ | ||||
| } \ | } \ | ||||
| ((void)0) | ((void)0) | ||||
| Show All 15 Lines | void EEVEE_effects_init(EEVEE_ViewLayerData *sldata, | ||||
| 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; | EEVEE_EffectsInfo *effects; | ||||
| DefaultTextureList *dtxl = DRW_viewport_texture_list_get(); | DefaultTextureList *dtxl = DRW_viewport_texture_list_get(); | ||||
| const DRWContextState *draw_ctx = DRW_context_state_get(); | const DRWContextState *draw_ctx = DRW_context_state_get(); | ||||
| ViewLayer *view_layer = draw_ctx->view_layer; | ViewLayer *view_layer = draw_ctx->view_layer; | ||||
| const float *viewport_size = DRW_viewport_size_get(); | const float *viewport_size = DRW_viewport_render_size_get(); | ||||
| int size_fs[2] = {(int)viewport_size[0], (int)viewport_size[1]}; | int size_fs[2] = {(int)viewport_size[0], (int)viewport_size[1]}; | ||||
| /* Shaders */ | /* Shaders */ | ||||
| if (!e_data.downsample_sh) { | if (!e_data.downsample_sh) { | ||||
| eevee_create_shader_downsample(); | eevee_create_shader_downsample(); | ||||
| } | } | ||||
| if (!stl->effects) { | if (!stl->effects) { | ||||
| ▲ Show 20 Lines • Show All 91 Lines • ▼ Show 20 Lines | void EEVEE_effects_init(EEVEE_ViewLayerData *sldata, | ||||
| else { | else { | ||||
| effects->velocity_tx = NULL; | effects->velocity_tx = NULL; | ||||
| } | } | ||||
| /** | /** | ||||
| * Setup depth double buffer. | * Setup depth double buffer. | ||||
| */ | */ | ||||
| if ((effects->enabled_effects & EFFECT_DEPTH_DOUBLE_BUFFER) != 0) { | if ((effects->enabled_effects & EFFECT_DEPTH_DOUBLE_BUFFER) != 0) { | ||||
| DRW_texture_ensure_fullscreen_2d(&txl->depth_double_buffer, GPU_DEPTH24_STENCIL8, 0); | DRW_texture_ensure_render_fullscreen_2d(&txl->depth_double_buffer, GPU_DEPTH24_STENCIL8, 0); | ||||
| GPU_framebuffer_ensure_config(&fbl->double_buffer_depth_fb, | GPU_framebuffer_ensure_config(&fbl->double_buffer_depth_fb, | ||||
| {GPU_ATTACHMENT_TEXTURE(txl->depth_double_buffer)}); | {GPU_ATTACHMENT_TEXTURE(txl->depth_double_buffer)}); | ||||
| } | } | ||||
| else { | else { | ||||
| /* Cleanup to release memory */ | /* Cleanup to release memory */ | ||||
| DRW_TEXTURE_FREE_SAFE(txl->depth_double_buffer); | DRW_TEXTURE_FREE_SAFE(txl->depth_double_buffer); | ||||
| GPU_FRAMEBUFFER_FREE_SAFE(fbl->double_buffer_depth_fb); | GPU_FRAMEBUFFER_FREE_SAFE(fbl->double_buffer_depth_fb); | ||||
| ▲ Show 20 Lines • Show All 310 Lines • Show Last 20 Lines | |||||