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().