diff options
author | Jeroen Bakker <jeroen@blender.org> | 2020-09-07 09:19:09 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2020-09-07 09:21:41 +0300 |
commit | 7170f7a0414ecded72fba3ef69e28be2be148291 (patch) | |
tree | d98075a0c6695f8ddb9f85fc5f728a5e837c2d1c /source/blender/draw/engines/eevee/eevee_private.h | |
parent | 267b8e1a5c322c87d9684638cc29c984c6d33e58 (diff) |
EEVEE: Shaders tests
This will add the remaining static shaders to the eevee shader test suite.
- Downsampling
- GGX LUT generation
- Mist
- Motion Blur
- Ambient Occlusion
- Render Passes
- Screen Raytracing
- Shadows
- Subsurface
- Volumes
Reviewed By: Clément Foucault
Differential Revision: https://developer.blender.org/D8779
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_private.h')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_private.h | 55 |
1 files changed, 47 insertions, 8 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h index 4aaf6741a1c..8216d2545ac 100644 --- a/source/blender/draw/engines/eevee/eevee_private.h +++ b/source/blender/draw/engines/eevee/eevee_private.h @@ -83,6 +83,10 @@ extern struct DrawEngineType draw_engine_eevee_type; /* clang-format on */ #define EEVEE_PROBE_MAX min_ii(MAX_PROBE, GPU_max_texture_layers() / 6) +#define EEVEE_VELOCITY_TILE_SIZE 32 +#define USE_VOLUME_OPTI \ + (GLEW_ARB_shader_image_load_store && GLEW_ARB_shading_language_420pack && \ + !GPU_crappy_amd_driver()) #define SWAP_DOUBLE_BUFFERS() \ { \ @@ -192,6 +196,14 @@ enum { KEY_SHADOW = (1 << 3), }; +/* SSR shader variations */ +typedef enum EEVEE_SSRShaderOptions { + SSR_RESOLVE = (1 << 0), + SSR_FULL_TRACE = (1 << 1), + SSR_AO = (1 << 3), + SSR_MAX_SHADER = (1 << 4), +} EEVEE_SSRShaderOptions; + /* ************ PROBE UBO ************* */ /* They are the same struct as their Cache siblings. @@ -1050,7 +1062,6 @@ void EEVEE_shadows_draw_cascades(EEVEE_ViewLayerData *sldata, int cascade_index); void EEVEE_shadow_output_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, uint tot_samples); void EEVEE_shadow_output_accumulate(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); -void EEVEE_shadows_free(void); /* eevee_sampling.c */ void EEVEE_sample_ball(int sample_ofs, float radius, float rsample[3]); @@ -1079,6 +1090,41 @@ struct GPUShader *EEVEE_shaders_bloom_resolve_get(bool high_quality); struct GPUShader *EEVEE_shaders_depth_of_field_downsample_get(bool use_alpha); struct GPUShader *EEVEE_shaders_depth_of_field_scatter_get(bool use_alpha); struct GPUShader *EEVEE_shaders_depth_of_field_resolve_get(bool use_alpha); +struct GPUShader *EEVEE_shaders_effect_downsample_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_downsample_cube_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_minz_downlevel_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_maxz_downlevel_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_minz_downdepth_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_maxz_downdepth_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_minz_downdepth_layer_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_maxz_downdepth_layer_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_maxz_copydepth_layer_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_minz_copydepth_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_maxz_copydepth_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_mist_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_motion_blur_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_motion_blur_object_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_motion_blur_hair_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_motion_blur_velocity_tiles_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_motion_blur_velocity_tiles_expand_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_ambient_occlusion_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_ambient_occlusion_layer_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_ambient_occlusion_debug_sh_get(void); +struct GPUShader *EEVEE_shaders_effect_screen_raytrace_sh_get(EEVEE_SSRShaderOptions options); +struct GPUShader *EEVEE_shaders_renderpasses_post_process_sh_get(void); +struct GPUShader *EEVEE_shaders_shadow_sh_get(void); +struct GPUShader *EEVEE_shaders_shadow_accum_sh_get(void); +struct GPUShader *EEVEE_shaders_subsurface_first_pass_sh_get(void); +struct GPUShader *EEVEE_shaders_subsurface_second_pass_sh_get(void); +struct GPUShader *EEVEE_shaders_subsurface_translucency_sh_get(void); +struct GPUShader *EEVEE_shaders_volumes_clear_sh_get(void); +struct GPUShader *EEVEE_shaders_volumes_scatter_sh_get(void); +struct GPUShader *EEVEE_shaders_volumes_scatter_with_lights_sh_get(void); +struct GPUShader *EEVEE_shaders_volumes_integration_sh_get(void); +struct GPUShader *EEVEE_shaders_volumes_resolve_sh_get(void); +struct GPUShader *EEVEE_shaders_volumes_accum_sh_get(void); +struct GPUShader *EEVEE_shaders_ggx_lut_sh_get(void); +struct GPUShader *EEVEE_shaders_ggx_refraction_lut_sh_get(void); struct GPUShader *EEVEE_shaders_probe_filter_glossy_sh_get(void); struct GPUShader *EEVEE_shaders_probe_filter_diffuse_sh_get(void); struct GPUShader *EEVEE_shaders_probe_filter_visibility_sh_get(void); @@ -1194,8 +1240,6 @@ void EEVEE_reflection_output_init(EEVEE_ViewLayerData *sldata, uint tot_samples); void EEVEE_reflection_output_accumulate(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); -void EEVEE_screen_raytrace_free(void); - /* eevee_subsurface.c */ void EEVEE_subsurface_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); void EEVEE_subsurface_draw_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); @@ -1211,7 +1255,6 @@ void EEVEE_subsurface_add_pass(EEVEE_ViewLayerData *sldata, void EEVEE_subsurface_data_render(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); void EEVEE_subsurface_compute(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); void EEVEE_subsurface_output_accumulate(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); -void EEVEE_subsurface_free(void); /* eevee_motion_blur.c */ int EEVEE_motion_blur_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); @@ -1226,12 +1269,10 @@ void EEVEE_motion_blur_hair_cache_populate(EEVEE_ViewLayerData *sldata, void EEVEE_motion_blur_swap_data(EEVEE_Data *vedata); void EEVEE_motion_blur_cache_finish(EEVEE_Data *vedata); void EEVEE_motion_blur_draw(EEVEE_Data *vedata); -void EEVEE_motion_blur_free(void); /* eevee_mist.c */ void EEVEE_mist_output_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); void EEVEE_mist_output_accumulate(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); -void EEVEE_mist_free(void); /* eevee_renderpasses.c */ void EEVEE_renderpasses_init(EEVEE_Data *vedata); @@ -1247,7 +1288,6 @@ void EEVEE_renderpasses_postprocess(EEVEE_ViewLayerData *sldata, eViewLayerEEVEEPassType renderpass_type); void EEVEE_renderpasses_draw(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); void EEVEE_renderpasses_draw_debug(EEVEE_Data *vedata); -void EEVEE_renderpasses_free(void); bool EEVEE_renderpasses_only_first_sample_pass_active(EEVEE_Data *vedata); /* eevee_temporal_sampling.c */ @@ -1290,7 +1330,6 @@ void EEVEE_create_minmax_buffer(EEVEE_Data *vedata, struct GPUTexture *depth_src void EEVEE_downsample_buffer(EEVEE_Data *vedata, struct GPUTexture *texture_src, int level); void EEVEE_downsample_cube_buffer(EEVEE_Data *vedata, struct GPUTexture *texture_src, int level); void EEVEE_draw_effects(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata); -void EEVEE_effects_free(void); /* eevee_render.c */ bool EEVEE_render_init(EEVEE_Data *vedata, |