|
Blender V4.3
|
#include <eevee_hizbuffer.hh>
Public Member Functions | |
| HiZBuffer (Instance &inst, HiZData &data) | |
| void | set_source (GPUTexture **texture, int layer=-1) |
| void | swap_layer () |
| void | set_dirty () |
Hierarchical-Z buffer | |
| void | sync () |
| void | update () |
| void | debug_draw (View &view, GPUFrameBuffer *view_fb) |
Public Attributes | ||
| struct { | ||
| GPUTexture * ref_tx_ = nullptr | ||
| } | front | |
| struct { | ||
| GPUTexture * ref_tx_ = nullptr | ||
| } | back | |
Definition at line 27 of file eevee_hizbuffer.hh.
Definition at line 57 of file eevee_hizbuffer.hh.
References blender::draw::detail::StorageCommon< T, len, device_only >::clear_to_zero().
| void blender::eevee::HiZBuffer::debug_draw | ( | View & | view, |
| GPUFrameBuffer * | view_fb ) |
Definition at line 111 of file eevee_hizbuffer.cc.
References blender::eevee::DEBUG_HIZ_VALIDATION, blender::eevee::Instance::debug_mode, GPU_framebuffer_bind(), blender::eevee::Instance::hiz_buffer, blender::eevee::Instance::info_append(), blender::eevee::Instance::manager, blender::draw::Manager::submit(), and update().
Referenced by blender::eevee::ShadingView::render().
|
inline |
Tag the front buffer for update if needed.
Definition at line 93 of file eevee_hizbuffer.hh.
Referenced by blender::eevee::ForwardPipeline::render(), and swap_layer().
|
inline |
Set source texture for the hiz down-sampling. Need to be called once at the start of a pipeline or view. Tag the buffer as dirty.
Definition at line 69 of file eevee_hizbuffer.hh.
References swap_layer(), and texture.
Referenced by blender::eevee::DeferredProbePipeline::render(), blender::eevee::PlanarProbePipeline::render(), and blender::eevee::ShadingView::render().
|
inline |
Swap front and back layer. Internally set front layer to be dirty. IMPORTANT: Before the second swap (and the second update) the content of the back hi-z buffer is undefined.
Definition at line 82 of file eevee_hizbuffer.hh.
References blender::draw::SwapChain< T, len >::current(), front, blender::draw::SwapChain< T, len >::previous(), set_dirty(), and blender::draw::SwapChain< T, len >::swap().
Referenced by blender::eevee::VolumeModule::draw_compute(), blender::eevee::DeferredLayer::render(), and set_source().
| void blender::eevee::HiZBuffer::sync | ( | ) |
Definition at line 18 of file eevee_hizbuffer.cc.
References blender::draw::detail::PassBase< DrawCommandBufType >::bind_resources(), blender::math::ceil_to_multiple(), blender::eevee::DEBUG_HIZ_VALIDATION, blender::eevee::Instance::debug_mode, blender::math::divide_ceil(), blender::draw::detail::PassBase< DrawCommandBufType >::draw_procedural(), DRW_STATE_BLEND_CUSTOM, DRW_STATE_WRITE_COLOR, blender::eevee::Instance::film, front, GPU_BARRIER_TEXTURE_FETCH, GPU_PRIM_TRIS, GPU_R32F, GPU_texture_mipmap_mode(), GPU_TEXTURE_USAGE_SHADER_READ, GPU_TEXTURE_USAGE_SHADER_WRITE, blender::eevee::HIZ_DEBUG, HIZ_GROUP_SIZE, HIZ_MIP_COUNT, blender::eevee::HIZ_UPDATE, blender::eevee::HIZ_UPDATE_LAYER, blender::draw::detail::Pass< DrawCommandBufType >::init(), blender::math::max(), blender::eevee::SphereProbeModule::probe_render_extent(), blender::eevee::Film::render_extent_get(), blender::draw::detail::PassBase< DrawCommandBufType >::shader_set(), blender::eevee::Instance::shaders, blender::eevee::Instance::sphere_probes, blender::draw::detail::PassBase< DrawCommandBufType >::state_set(), blender::eevee::ShaderModule::static_shader_get(), blender::eevee::HiZData::uv_scale, and blender::eevee::with_filter.
Referenced by blender::eevee::Instance::begin_sync().
| void blender::eevee::HiZBuffer::update | ( | ) |
Update the content of the HiZ buffer with the source depth set by set_source(). Noop if the buffer has not been tagged as dirty. Should be called before each passes that needs to read the hiz buffer.
Definition at line 90 of file eevee_hizbuffer.cc.
References HIZ_MIP_COUNT, blender::eevee::Instance::manager, and blender::draw::Manager::submit().
Referenced by debug_draw(), blender::eevee::LightModule::debug_draw(), blender::eevee::ShadowModule::debug_draw(), blender::eevee::VolumeModule::draw_compute(), blender::eevee::VolumeModule::draw_resolve(), blender::eevee::DeferredLayer::render(), blender::eevee::DeferredProbePipeline::render(), blender::eevee::PlanarProbePipeline::render(), blender::eevee::AmbientOcclusion::render_pass(), and blender::eevee::ShadowModule::set_view().
| struct { ... } blender::eevee::HiZBuffer::back |
Referenced by blender::eevee::RayTraceModule::sync().
| struct { ... } blender::eevee::HiZBuffer::front |
Referenced by blender::eevee::PlanarProbePipeline::begin_sync(), blender::eevee::ShadowModule::begin_sync(), blender::eevee::ShadowModule::debug_end_sync(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::DeferredProbePipeline::end_sync(), blender::eevee::ShadowModule::end_sync(), blender::eevee::VolumeModule::end_sync(), blender::eevee::DeferredLayerBase::gbuffer_pass_sync(), swap_layer(), blender::eevee::AmbientOcclusion::sync(), blender::eevee::ForwardPipeline::sync(), sync(), and blender::eevee::RayTraceModule::sync().
| GPUTexture* blender::eevee::HiZBuffer::ref_tx_ = nullptr |
References to the textures in the swap-chain.
Definition at line 110 of file eevee_hizbuffer.hh.
Referenced by blender::eevee::RayTraceModule::sync().