diff options
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/infos')
4 files changed, 36 insertions, 80 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/infos/eevee_culling_info.hh b/source/blender/draw/engines/eevee/shaders/infos/eevee_culling_info.hh index 8a76a3a13cd..4ba152c131e 100644 --- a/source/blender/draw/engines/eevee/shaders/infos/eevee_culling_info.hh +++ b/source/blender/draw/engines/eevee/shaders/infos/eevee_culling_info.hh @@ -54,7 +54,7 @@ GPU_SHADER_CREATE_INFO(eevee_light_data) GPU_SHADER_CREATE_INFO(eevee_culling_debug) .do_static_compilation(true) - .sampler(0, ImageType::DEPTH_2D, "depth_tx") + .sampler(0, ImageType::FLOAT_2D, "hiz_tx") .fragment_out(0, Type::VEC4, "out_debug_color") .additional_info("eevee_shared", "draw_view") .fragment_source("eevee_culling_debug_frag.glsl") diff --git a/source/blender/draw/engines/eevee/shaders/infos/eevee_deferred_info.hh b/source/blender/draw/engines/eevee/shaders/infos/eevee_deferred_info.hh index 7a438b14f44..6c22249349e 100644 --- a/source/blender/draw/engines/eevee/shaders/infos/eevee_deferred_info.hh +++ b/source/blender/draw/engines/eevee/shaders/infos/eevee_deferred_info.hh @@ -7,82 +7,36 @@ GPU_SHADER_CREATE_INFO(eevee_utility_texture).sampler(8, ImageType::FLOAT_2D_ARRAY, "utility_tx"); -GPU_SHADER_CREATE_INFO(eevee_deferred_direct) +#define image_out(slot, qualifier, format, name) \ + image(slot, format, qualifier, ImageType::FLOAT_2D, name, Frequency::PASS) + +GPU_SHADER_CREATE_INFO(eevee_deferred_eval) .do_static_compilation(true) .auto_resource_location(true) .sampler(0, ImageType::FLOAT_2D, "hiz_tx") - .sampler(1, ImageType::FLOAT_2D, "emission_data_tx") .sampler(2, ImageType::FLOAT_2D, "transmit_color_tx") .sampler(3, ImageType::FLOAT_2D, "transmit_normal_tx") .sampler(4, ImageType::FLOAT_2D, "transmit_data_tx") .sampler(5, ImageType::FLOAT_2D, "reflect_color_tx") .sampler(6, ImageType::FLOAT_2D, "reflect_normal_tx") .fragment_out(0, Type::VEC4, "out_combined") - .fragment_out(1, Type::VEC4, "out_diffuse") - .fragment_out(2, Type::VEC3, "out_specular") + /* Renderpasses. */ + // .image_out(0, Qualifier::READ_WRITE, GPU_RGBA16F, "rpass_diffuse_light") + // .image_out(1, Qualifier::READ_WRITE, GPU_RGBA16F, "rpass_specular_light") + /* Raytracing. */ + // .image_out(2, Qualifier::WRITE, GPU_RGBA16F, "ray_data") + /* SubSurfaceScattering. */ + // .image_out(3, Qualifier::WRITE, GPU_RGBA16F, "sss_radiance") .additional_info("eevee_shared", "draw_view") - .fragment_source("eevee_deferred_direct_frag.glsl") + .fragment_source("eevee_deferred_eval_frag.glsl") .additional_info("draw_fullscreen", "eevee_transmittance_data", "eevee_utility_texture", - "eevee_lightprobe_data", + // "eevee_lightprobe_data", "eevee_light_data", "eevee_shadow_data", "eevee_sampling_data"); -/** \} */ - -/* -------------------------------------------------------------------- */ -/** \name Holdout - * \{ */ - -GPU_SHADER_CREATE_INFO(eevee_deferred_holdout) - .do_static_compilation(true) - .sampler(0, ImageType::FLOAT_2D, "combined_tx") - .sampler(1, ImageType::FLOAT_2D, "transparency_data_tx") - .fragment_out(5, Type::VEC3, "out_holdout") - .additional_info("eevee_shared") - .fragment_source("eevee_deferred_holdout_frag.glsl") - .additional_info("draw_fullscreen", "draw_view"); - -/** \} */ - -/* -------------------------------------------------------------------- */ -/** \name Transparency - * \{ */ - -GPU_SHADER_CREATE_INFO(eevee_deferred_transparent) - .do_static_compilation(true) - .sampler(0, ImageType::UINT_2D, "volume_data_tx") - .sampler(1, ImageType::FLOAT_2D, "transparency_data_tx") - .fragment_out(0, Type::VEC4, "out_combined") - .fragment_out(1, Type::VEC3, "out_diffuse") - .fragment_out(2, Type::VEC3, "out_specular") - .fragment_out(3, Type::VEC3, "out_volume") - .fragment_out(4, Type::VEC3, "out_background") - .fragment_out(5, Type::VEC3, "out_holdout") - .additional_info("eevee_shared") - .fragment_source("eevee_deferred_transparent_frag.glsl") - .additional_info("draw_fullscreen", "draw_view", "eevee_light_data"); - -/** \} */ - -/* -------------------------------------------------------------------- */ -/** \name Volume - * \{ */ - -GPU_SHADER_CREATE_INFO(eevee_deferred_volume) - .do_static_compilation(true) - .sampler(0, ImageType::FLOAT_2D, "transparency_data_tx") - .sampler(1, ImageType::UINT_2D, "volume_data_tx") - .fragment_out(0, Type::VEC4, "out_combined") - .fragment_out(1, Type::VEC3, "out_volume") - .additional_info("eevee_shared") - .fragment_source("eevee_deferred_volume_frag.glsl") - .additional_info("draw_fullscreen", - "draw_view", - "eevee_utility_texture", - "eevee_light_data", - "eevee_shadow_data"); +#undef image_out /** \} */ diff --git a/source/blender/draw/engines/eevee/shaders/infos/eevee_material_info.hh b/source/blender/draw/engines/eevee/shaders/infos/eevee_material_info.hh index 0b310d7c309..c2bd8805aa2 100644 --- a/source/blender/draw/engines/eevee/shaders/infos/eevee_material_info.hh +++ b/source/blender/draw/engines/eevee/shaders/infos/eevee_material_info.hh @@ -64,29 +64,31 @@ GPU_SHADER_INTERFACE_INFO(eevee_surface_iface, "interp") .smooth(Type::FLOAT, "hair_thickness") .flat(Type::INT, "hair_strand_id"); +#define image_out(slot, qualifier, format, name) \ + image(slot, format, qualifier, ImageType::FLOAT_2D, name, Frequency::PASS) + GPU_SHADER_CREATE_INFO(eevee_surface_deferred) .vertex_out(eevee_surface_iface) - /* Diffuse or Transmission Color. */ - .fragment_out(0, Type::VEC3, "out_transmit_color") - /* RG: Normal (negative if Tranmission), B: SSS ID, A: Min-Thickness */ - .fragment_out(1, Type::VEC4, "out_transmit_normal") - /* RGB: SSS RGB Radius. - * or - * R: Transmission IOR, G: Transmission Roughness, B: Unused. */ - .fragment_out(2, Type::VEC3, "out_transmit_data") - /* Reflection Color. */ - .fragment_out(3, Type::VEC3, "out_reflection_color") - /* RG: Normal, B: Roughness X, A: Roughness Y. */ - .fragment_out(4, Type::VEC4, "out_reflection_normal") - /* Volume Emission, Absorption, Scatter, Phase. */ - .fragment_out(5, Type::UVEC4, "out_volume_data") - /* Emission. */ - .fragment_out(6, Type::VEC3, "out_emission_data") - /* Transparent BSDF, Holdout. */ - .fragment_out(7, Type::VEC4, "out_transparency_data") + /* Note: This removes the possibility of using gl_FragDepth. */ + .early_fragment_test(true) + /* Direct output. */ + .fragment_out(0, Type::VEC4, "out_radiance", DualBlend::SRC_0) + .fragment_out(0, Type::VEC4, "out_transmittance", DualBlend::SRC_1) + /* Gbuffer. */ + .image_out(0, Qualifier::WRITE, GPU_R11F_G11F_B10F, "gbuff_transmit_color") + .image_out(1, Qualifier::WRITE, GPU_R11F_G11F_B10F, "gbuff_transmit_data") + .image_out(2, Qualifier::WRITE, GPU_RGBA16F, "gbuff_transmit_normal") + .image_out(3, Qualifier::WRITE, GPU_R11F_G11F_B10F, "gbuff_reflection_color") + .image_out(4, Qualifier::WRITE, GPU_RGBA16F, "gbuff_reflection_normal") + /* Renderpasses. */ + .image_out(5, Qualifier::READ_WRITE, GPU_RGBA16F, "rpass_emission") + .image_out(6, Qualifier::READ_WRITE, GPU_RGBA16F, "rpass_volume_light") + /* TODO: AOVs maybe? */ .fragment_source("eevee_surface_deferred_frag.glsl") .additional_info("eevee_sampling_data", "eevee_utility_texture"); +#undef image_out + GPU_SHADER_CREATE_INFO(eevee_surface_forward) .auto_resource_location(true) .vertex_out(eevee_surface_iface) diff --git a/source/blender/draw/engines/eevee/shaders/infos/eevee_shadow_info.hh b/source/blender/draw/engines/eevee/shaders/infos/eevee_shadow_info.hh index d68bcc3db98..efb93e745a3 100644 --- a/source/blender/draw/engines/eevee/shaders/infos/eevee_shadow_info.hh +++ b/source/blender/draw/engines/eevee/shaders/infos/eevee_shadow_info.hh @@ -182,7 +182,7 @@ GPU_SHADER_CREATE_INFO(eevee_shadow_debug) .storage_buf(0, Qualifier::READ, "ShadowTileMapData", "tilemaps_buf[]") .storage_buf(1, Qualifier::READ, "uvec2", "pages_cached_buf[]") .storage_buf(2, Qualifier::READ, "ShadowPagesInfoData", "pages_infos_buf") - .sampler(0, ImageType::DEPTH_2D, "depth_tx") + .sampler(0, ImageType::FLOAT_2D, "hiz_tx") .sampler(1, ImageType::FLOAT_2D, "atlas_tx") .sampler(2, ImageType::UINT_2D, "tilemaps_tx") .sampler(3, ImageType::UINT_2D, "debug_page_tx") |