Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee/eevee_shaders.c
| Show First 20 Lines • Show All 131 Lines • ▼ Show 20 Lines | static struct { | ||||
| /* Subsurface */ | /* Subsurface */ | ||||
| struct GPUShader *sss_sh[3]; | struct GPUShader *sss_sh[3]; | ||||
| /* Volume */ | /* Volume */ | ||||
| struct GPUShader *volumetric_clear_sh; | struct GPUShader *volumetric_clear_sh; | ||||
| struct GPUShader *scatter_sh; | struct GPUShader *scatter_sh; | ||||
| struct GPUShader *scatter_with_lights_sh; | struct GPUShader *scatter_with_lights_sh; | ||||
| struct GPUShader *volumetric_integration_sh; | struct GPUShader *volumetric_integration_sh; | ||||
| struct GPUShader *volumetric_resolve_sh; | struct GPUShader *volumetric_resolve_sh[2]; | ||||
| struct GPUShader *volumetric_accum_sh; | struct GPUShader *volumetric_accum_sh; | ||||
| /* Shader strings */ | /* Shader strings */ | ||||
| char *closure_lit_lib; | char *closure_lit_lib; | ||||
| char *surface_lit_frag; | char *surface_lit_frag; | ||||
| char *surface_prepass_frag; | char *surface_prepass_frag; | ||||
| char *surface_geom_barycentric; | char *surface_geom_barycentric; | ||||
| ▲ Show 20 Lines • Show All 700 Lines • ▼ Show 20 Lines | e_data.volumetric_integration_sh = DRW_shader_create_with_shaderlib( | ||||
| USE_VOLUME_OPTI ? "#extension GL_ARB_shader_image_load_store: enable\n" | USE_VOLUME_OPTI ? "#extension GL_ARB_shader_image_load_store: enable\n" | ||||
| "#extension GL_ARB_shading_language_420pack: enable\n" | "#extension GL_ARB_shading_language_420pack: enable\n" | ||||
| "#define USE_VOLUME_OPTI\n" SHADER_DEFINES : | "#define USE_VOLUME_OPTI\n" SHADER_DEFINES : | ||||
| SHADER_DEFINES); | SHADER_DEFINES); | ||||
| } | } | ||||
| return e_data.volumetric_integration_sh; | return e_data.volumetric_integration_sh; | ||||
| } | } | ||||
| struct GPUShader *EEVEE_shaders_volumes_resolve_sh_get() | struct GPUShader *EEVEE_shaders_volumes_resolve_sh_get(bool accum) | ||||
| { | { | ||||
| if (e_data.volumetric_resolve_sh == NULL) { | const int index = accum ? 1 : 0; | ||||
| e_data.volumetric_resolve_sh = DRW_shader_create_fullscreen_with_shaderlib( | if (e_data.volumetric_resolve_sh[index] == NULL) { | ||||
| datatoc_volumetric_resolve_frag_glsl, e_data.lib, SHADER_DEFINES); | e_data.volumetric_resolve_sh[index] = DRW_shader_create_fullscreen_with_shaderlib( | ||||
| datatoc_volumetric_resolve_frag_glsl, | |||||
| e_data.lib, | |||||
| accum ? "#define VOLUMETRICS_ACCUM\n" SHADER_DEFINES : SHADER_DEFINES); | |||||
| } | } | ||||
| return e_data.volumetric_resolve_sh; | return e_data.volumetric_resolve_sh[index]; | ||||
| } | } | ||||
| struct GPUShader *EEVEE_shaders_volumes_accum_sh_get() | struct GPUShader *EEVEE_shaders_volumes_accum_sh_get() | ||||
| { | { | ||||
| if (e_data.volumetric_accum_sh == NULL) { | if (e_data.volumetric_accum_sh == NULL) { | ||||
| e_data.volumetric_accum_sh = DRW_shader_create_fullscreen_with_shaderlib( | e_data.volumetric_accum_sh = DRW_shader_create_fullscreen_with_shaderlib( | ||||
| datatoc_volumetric_accum_frag_glsl, e_data.lib, SHADER_DEFINES); | datatoc_volumetric_accum_frag_glsl, e_data.lib, SHADER_DEFINES); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 532 Lines • ▼ Show 20 Lines | void EEVEE_shaders_free(void) | ||||
| DRW_SHADER_FREE_SAFE(e_data.shadow_accum_sh); | DRW_SHADER_FREE_SAFE(e_data.shadow_accum_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.sss_sh[0]); | DRW_SHADER_FREE_SAFE(e_data.sss_sh[0]); | ||||
| DRW_SHADER_FREE_SAFE(e_data.sss_sh[1]); | DRW_SHADER_FREE_SAFE(e_data.sss_sh[1]); | ||||
| DRW_SHADER_FREE_SAFE(e_data.sss_sh[2]); | DRW_SHADER_FREE_SAFE(e_data.sss_sh[2]); | ||||
| DRW_SHADER_FREE_SAFE(e_data.volumetric_clear_sh); | DRW_SHADER_FREE_SAFE(e_data.volumetric_clear_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.scatter_sh); | DRW_SHADER_FREE_SAFE(e_data.scatter_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.scatter_with_lights_sh); | DRW_SHADER_FREE_SAFE(e_data.scatter_with_lights_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.volumetric_integration_sh); | DRW_SHADER_FREE_SAFE(e_data.volumetric_integration_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.volumetric_resolve_sh); | DRW_SHADER_FREE_SAFE(e_data.volumetric_resolve_sh[0]); | ||||
| DRW_SHADER_FREE_SAFE(e_data.volumetric_resolve_sh[1]); | |||||
| DRW_SHADER_FREE_SAFE(e_data.volumetric_accum_sh); | DRW_SHADER_FREE_SAFE(e_data.volumetric_accum_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.probe_filter_glossy_sh); | DRW_SHADER_FREE_SAFE(e_data.probe_filter_glossy_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.probe_filter_diffuse_sh); | DRW_SHADER_FREE_SAFE(e_data.probe_filter_diffuse_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.probe_filter_visibility_sh); | DRW_SHADER_FREE_SAFE(e_data.probe_filter_visibility_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.probe_grid_fill_sh); | DRW_SHADER_FREE_SAFE(e_data.probe_grid_fill_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.probe_planar_downsample_sh); | DRW_SHADER_FREE_SAFE(e_data.probe_planar_downsample_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.studiolight_probe_sh); | DRW_SHADER_FREE_SAFE(e_data.studiolight_probe_sh); | ||||
| DRW_SHADER_FREE_SAFE(e_data.studiolight_background_sh); | DRW_SHADER_FREE_SAFE(e_data.studiolight_background_sh); | ||||
| ▲ Show 20 Lines • Show All 47 Lines • Show Last 20 Lines | |||||