Blender
V4.3
source
blender
draw
engines
eevee_next
eevee_hizbuffer.hh
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2021 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
13
#pragma once
14
15
#include "
DRW_render.hh
"
16
17
#include "
eevee_shader_shared.hh
"
18
19
namespace
blender::eevee
{
20
21
class
Instance
;
22
23
/* -------------------------------------------------------------------- */
27
class
HiZBuffer
{
28
private
:
29
Instance
&inst_;
30
32
SwapChain<Texture, 2>
hiz_tx_;
34
std::array<GPUTexture *, HIZ_MIP_COUNT> hiz_mip_ref_;
35
40
draw::StorageBuffer<uint4, true>
atomic_tile_counter_ = {
"atomic_tile_counter"
};
42
PassSimple
hiz_update_ps_ = {
"HizUpdate"
};
44
PassSimple
hiz_update_layer_ps_ = {
"HizUpdate.Layer"
};
45
int
layer_id_ = -1;
47
PassSimple
debug_draw_ps_ = {
"HizUpdate.Debug"
};
49
bool
is_dirty_ =
true
;
51
GPUTexture *src_tx_ =
nullptr
;
52
GPUTexture **src_tx_ptr_ =
nullptr
;
53
54
HiZData
&data_;
55
56
public
:
57
HiZBuffer
(
Instance
&inst,
HiZData
&data) : inst_(inst), data_(data)
58
{
59
atomic_tile_counter_.
clear_to_zero
();
60
};
61
62
void
sync
();
63
69
void
set_source
(GPUTexture **texture,
int
layer = -1)
70
{
71
src_tx_ptr_ =
texture
;
72
layer_id_ = layer;
73
swap_layer
();
74
}
75
82
void
swap_layer
()
83
{
84
hiz_tx_.
swap
();
85
back.ref_tx_ = hiz_tx_.
previous
();
86
front
.ref_tx_ = hiz_tx_.
current
();
87
set_dirty
();
88
}
89
93
void
set_dirty
()
94
{
95
is_dirty_ =
true
;
96
}
97
103
void
update
();
104
105
void
debug_draw
(
View
&view, GPUFrameBuffer *view_fb);
106
107
/* Back is Previous layer depth (ex: For refraction). Front for current layer depth. */
108
struct
{
110
GPUTexture *
ref_tx_
=
nullptr
;
111
112
template
<
typename
PassType>
void
bind_resources(
PassType
&pass)
113
{
114
pass.bind_texture(
HIZ_TEX_SLOT
, &
ref_tx_
);
115
}
116
}
front
,
back
;
117
};
118
121
}
// namespace blender::eevee
DRW_render.hh
blender::draw::StorageBuffer
Definition
DRW_gpu_wrapper.hh:498
blender::draw::SwapChain
Definition
DRW_gpu_wrapper.hh:1287
blender::draw::SwapChain::previous
T & previous()
Definition
DRW_gpu_wrapper.hh:1316
blender::draw::SwapChain::current
T & current()
Definition
DRW_gpu_wrapper.hh:1311
blender::draw::SwapChain::swap
void swap()
Definition
DRW_gpu_wrapper.hh:1293
blender::draw::View
Definition
draw_view.hh:34
blender::draw::detail::Pass< command::DrawCommandBuf >
blender::draw::detail::StorageCommon::clear_to_zero
void clear_to_zero()
Definition
DRW_gpu_wrapper.hh:246
blender::draw::overlay::Instance
Definition
overlay_next_instance.hh:52
blender::eevee::HiZBuffer
Definition
eevee_hizbuffer.hh:27
blender::eevee::HiZBuffer::debug_draw
void debug_draw(View &view, GPUFrameBuffer *view_fb)
Definition
eevee_hizbuffer.cc:111
blender::eevee::HiZBuffer::HiZBuffer
HiZBuffer(Instance &inst, HiZData &data)
Definition
eevee_hizbuffer.hh:57
blender::eevee::HiZBuffer::front
struct blender::eevee::HiZBuffer::@195 front
blender::eevee::HiZBuffer::set_dirty
void set_dirty()
Definition
eevee_hizbuffer.hh:93
blender::eevee::HiZBuffer::update
void update()
Definition
eevee_hizbuffer.cc:90
blender::eevee::HiZBuffer::back
struct blender::eevee::HiZBuffer::@195 back
blender::eevee::HiZBuffer::ref_tx_
GPUTexture * ref_tx_
Definition
eevee_hizbuffer.hh:110
blender::eevee::HiZBuffer::sync
void sync()
Definition
eevee_hizbuffer.cc:18
blender::eevee::HiZBuffer::swap_layer
void swap_layer()
Definition
eevee_hizbuffer.hh:82
blender::eevee::HiZBuffer::set_source
void set_source(GPUTexture **texture, int layer=-1)
Definition
eevee_hizbuffer.hh:69
blender::eevee::Instance
A running instance of the engine.
Definition
eevee_instance.hh:68
texture
local_group_size(16, 16) .push_constant(Type texture
Definition
compositor_realize_on_domain_info.hh:15
HIZ_TEX_SLOT
#define HIZ_TEX_SLOT
Definition
eevee_defines.hh:194
eevee_shader_shared.hh
PassType
PassType
Definition
kernel/types.h:495
blender::eevee
Definition
eevee_ambient_occlusion.cc:31
blender::eevee::HiZData
Definition
eevee_shader_shared.hh:1853
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0