18 int2 render_extent = inst_.film.render_extent_get();
19 int2 probe_extent =
int2(inst_.sphere_probes.probe_render_extent());
26 for ([[maybe_unused]]
const int i :
IndexRange(hiz_tx_.size())) {
28 hiz_tx_.current().ensure_mip_views();
33 data_.uv_scale =
float2(render_extent) /
float2(hiz_extent);
37 bool update_mip_0 =
true;
41 GPUShader *sh = inst_.shaders.static_shader_get(
HIZ_UPDATE);
45 pass.
bind_ssbo(
"finished_tile_counter", atomic_tile_counter_);
48 pass.
bind_image(
"out_mip_0", &hiz_mip_ref_[0]);
49 pass.
bind_image(
"out_mip_1", &hiz_mip_ref_[1]);
50 pass.
bind_image(
"out_mip_2", &hiz_mip_ref_[2]);
51 pass.
bind_image(
"out_mip_3", &hiz_mip_ref_[3]);
52 pass.
bind_image(
"out_mip_4", &hiz_mip_ref_[4]);
53 pass.
bind_image(
"out_mip_5", &hiz_mip_ref_[5]);
54 pass.
bind_image(
"out_mip_6", &hiz_mip_ref_[6]);
64 pass.
bind_ssbo(
"finished_tile_counter", atomic_tile_counter_);
67 pass.
bind_image(
"out_mip_0", &hiz_mip_ref_[0]);
68 pass.
bind_image(
"out_mip_1", &hiz_mip_ref_[1]);
69 pass.
bind_image(
"out_mip_2", &hiz_mip_ref_[2]);
70 pass.
bind_image(
"out_mip_3", &hiz_mip_ref_[3]);
71 pass.
bind_image(
"out_mip_4", &hiz_mip_ref_[4]);
72 pass.
bind_image(
"out_mip_5", &hiz_mip_ref_[5]);
73 pass.
bind_image(
"out_mip_6", &hiz_mip_ref_[6]);
80 debug_draw_ps_.init();
82 debug_draw_ps_.shader_set(inst_.shaders.static_shader_get(
HIZ_DEBUG));
83 debug_draw_ps_.bind_resources(this->
front);
94 src_tx_ = *src_tx_ptr_;
96 hiz_mip_ref_[
i] = hiz_tx_.current().mip_view(
i);
99 if (layer_id_ == -1) {
100 inst_.manager->submit(hiz_update_ps_);
103 inst_.manager->submit(hiz_update_layer_ps_);
113 "Debug Mode: HiZ Validation\n"
114 " - Red: pixel in front of HiZ tile value.\n"
115 " - Blue: No error.");
116 inst_.hiz_buffer.update();
118 inst_.manager->submit(debug_draw_ps_,
view);
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
@ GPU_BARRIER_TEXTURE_FETCH
@ GPU_TEXTURE_USAGE_SHADER_READ
@ GPU_TEXTURE_USAGE_SHADER_WRITE
void GPU_texture_mipmap_mode(GPUTexture *texture, bool use_mipmap, bool use_filter)
void bind_texture(const char *name, GPUTexture *texture, GPUSamplerState state=sampler_auto)
void bind_image(const char *name, GPUTexture *image)
void specialize_constant(GPUShader *shader, const char *name, const float &data)
void dispatch(int group_len)
void barrier(eGPUBarrier type)
void push_constant(const char *name, const float &data)
void bind_ssbo(const char *name, GPUStorageBuf *buffer)
void shader_set(GPUShader *shader)
void debug_draw(View &view, GPUFrameBuffer *view_fb)
struct blender::eevee::HiZBuffer::@117223074165324154125050272272211024005337204302 front
detail::Pass< command::DrawCommandBuf > PassSimple
VecBase< T, Size > divide_ceil(const VecBase< T, Size > &a, const VecBase< T, Size > &b)
VecBase< T, Size > ceil_to_multiple(const VecBase< T, Size > &a, const VecBase< T, Size > &b)
T max(const T &a, const T &b)
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
VecBase< int32_t, 3 > int3