Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jeroen@blender.org>2020-09-07 09:19:09 +0300
committerJeroen Bakker <jeroen@blender.org>2020-09-07 09:21:41 +0300
commit7170f7a0414ecded72fba3ef69e28be2be148291 (patch)
treed98075a0c6695f8ddb9f85fc5f728a5e837c2d1c /source/blender/draw/engines/eevee/eevee_private.h
parent267b8e1a5c322c87d9684638cc29c984c6d33e58 (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.h55
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,