Blender  V3.3
Functions
eevee_screen_raytrace.c File Reference
#include "DRW_render.h"
#include "BLI_dynstr.h"
#include "BLI_string_utils.h"
#include "DEG_depsgraph_query.h"
#include "GPU_texture.h"
#include "eevee_private.h"

Go to the source code of this file.

Functions

int EEVEE_screen_raytrace_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_screen_raytrace_cache_init (EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
 
void EEVEE_refraction_compute (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
 
void EEVEE_reflection_compute (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
 
void EEVEE_reflection_output_init (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, uint tot_samples)
 
void EEVEE_reflection_output_accumulate (EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
 

Detailed Description

Screen space reflections and refractions techniques.

Definition in file eevee_screen_raytrace.c.

Function Documentation

◆ EEVEE_reflection_compute()

void EEVEE_reflection_compute ( EEVEE_ViewLayerData *  UNUSEDsldata,
EEVEE_Data *  vedata 
)

◆ EEVEE_reflection_output_accumulate()

void EEVEE_reflection_output_accumulate ( EEVEE_ViewLayerData *  UNUSEDsldata,
EEVEE_Data *  vedata 
)

◆ EEVEE_reflection_output_init()

void EEVEE_reflection_output_init ( EEVEE_ViewLayerData *  UNUSEDsldata,
EEVEE_Data *  vedata,
uint  tot_samples 
)

◆ EEVEE_refraction_compute()

void EEVEE_refraction_compute ( EEVEE_ViewLayerData *  UNUSEDsldata,
EEVEE_Data *  vedata 
)

◆ EEVEE_screen_raytrace_cache_init()

void EEVEE_screen_raytrace_cache_init ( EEVEE_ViewLayerData *  sldata,
EEVEE_Data *  vedata 
)

Screen space ray-tracing overview

Following Frostbite stochastic SSR.

  • First pass Trace rays across the depth buffer. The hit position and PDF are recorded in a RGBA16F render target for each ray (sample).
  • We down-sample the previous frame color buffer.
  • For each final pixel, we gather neighbors rays and choose a color buffer mipmap for each ray using its PDF. (filtered importance sampling) We then evaluate the lighting from the probes and mix the results together.

Definition at line 101 of file eevee_screen_raytrace.c.

References EEVEE_ViewLayerData::combined, EEVEE_ViewLayerData::common_ubo, LightCache::cube_tx, DRW_PASS_CREATE, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_float_copy(), DRW_shgroup_uniform_int(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), DRW_shgroup_uniform_texture_ref_ex(), DRW_shgroup_uniform_vec2_copy(), DRW_STATE_BLEND_ADD, DRW_STATE_WRITE_COLOR, EEVEE_materials_get_util_tex(), EEVEE_shaders_effect_reflection_resolve_sh_get(), EEVEE_shaders_effect_reflection_trace_sh_get(), EFFECT_SSR, EEVEE_StorageList::effects, EEVEE_EffectsInfo::enabled_effects, EEVEE_TextureList::filtered_radiance, EEVEE_StorageList::g_data, GPU_SAMPLER_DEFAULT, GPU_texture_get_mipmap_size(), EEVEE_ViewLayerData::grid_ubo, EEVEE_EffectsInfo::gtao_horizons, EEVEE_PrivateData::light_cache, EEVEE_ViewLayerData::light_ubo, EEVEE_TextureList::maxzbuffer, NULL, EEVEE_TextureList::planar_depth, EEVEE_TextureList::planar_pool, EEVEE_ViewLayerData::planar_ubo, EEVEE_ViewLayerData::probe_ubo, EEVEE_Data::psl, EEVEE_EffectsInfo::reflection_trace_full, EEVEE_ViewLayerData::renderpass_ubo, EEVEE_ViewLayerData::shadow_cascade_pool, EEVEE_ViewLayerData::shadow_cube_pool, EEVEE_ViewLayerData::shadow_ubo, EEVEE_EffectsInfo::ssr_hit_depth, EEVEE_EffectsInfo::ssr_hit_output, EEVEE_EffectsInfo::ssr_normal_input, EEVEE_PassList::ssr_raytrace, EEVEE_PassList::ssr_resolve, EEVEE_EffectsInfo::ssr_specrough_input, EEVEE_Data::stl, EEVEE_EffectsInfo::taa_current_sample, LightCacheTexture::tex, and EEVEE_Data::txl.

Referenced by eevee_cache_init(), and EEVEE_render_cache_init().

◆ EEVEE_screen_raytrace_init()

int EEVEE_screen_raytrace_init ( EEVEE_ViewLayerData *  sldata,
EEVEE_Data *  vedata 
)

Definition at line 20 of file eevee_screen_raytrace.c.

References EEVEE_ViewLayerData::common_data, DEG_get_evaluated_scene(), DRWContextState::depsgraph, DRW_context_state_get(), DRW_texture_pool_query_2d(), DRW_view_is_persp_get(), DRW_viewport_request_redraw(), DRW_viewport_size_get(), Scene::eevee, EEVEE_screen_raytrace_init(), EEVEE_temporal_sampling_reset(), EFFECT_DOUBLE_BUFFER, EFFECT_NORMAL_BUFFER, EFFECT_RADIANCE_BUFFER, EFFECT_REFRACT, EFFECT_SSR, EEVEE_StorageList::effects, EEVEE_Data::fbl, SceneEEVEE::flag, float(), EEVEE_StorageList::g_data, GPU_framebuffer_texture_attach(), GPU_R16F, GPU_RGBA16F, GPU_RGBA8, EEVEE_FramebufferList::main_fb, max_ii(), NULL, EEVEE_EffectsInfo::reflection_trace_full, SCE_EEVEE_SSR_ENABLED, SCE_EEVEE_SSR_HALF_RESOLUTION, SCE_EEVEE_SSR_REFRACTION, EEVEE_FramebufferList::screen_tracing_fb, EEVEE_CommonUniformBuffer::ssr_border_fac, SceneEEVEE::ssr_border_fade, EEVEE_CommonUniformBuffer::ssr_brdf_bias, EEVEE_CommonUniformBuffer::ssr_firefly_fac, SceneEEVEE::ssr_firefly_fac, EEVEE_EffectsInfo::ssr_hit_depth, EEVEE_EffectsInfo::ssr_hit_output, EEVEE_CommonUniformBuffer::ssr_max_roughness, SceneEEVEE::ssr_max_roughness, EEVEE_CommonUniformBuffer::ssr_quality, SceneEEVEE::ssr_quality, EEVEE_EffectsInfo::ssr_specrough_input, EEVEE_CommonUniformBuffer::ssr_thickness, SceneEEVEE::ssr_thickness, EEVEE_CommonUniformBuffer::ssr_uv_scale, EEVEE_EffectsInfo::ssr_was_persp, EEVEE_EffectsInfo::ssr_was_valid_double_buffer, EEVEE_Data::stl, UNPACK2, and EEVEE_PrivateData::valid_double_buffer.

Referenced by EEVEE_effects_init(), and EEVEE_screen_raytrace_init().