145 GPUTexture *closure_opt_layers_ =
nullptr;
146 GPUTexture *normal_opt_layers_ =
nullptr;
147 GPUTexture *header_opt_layers_ =
nullptr;
152 Texture dummy_header_tx_ = {
"GBufferDummyHeader"};
153 Texture dummy_closure_tx_ = {
"GBufferDummyClosure"};
154 Texture dummy_normal_tx_ = {
"GBufferDummyNormal"};
157 void acquire(
int2 extent,
int header_count,
int data_count,
int normal_count)
178 auto range = [](
int layer_count,
int fb_layer_count,
Texture &tx,
Texture &dummy) {
179 return (layer_count > fb_layer_count) ?
180 tx.layer_range_view(fb_layer_count, layer_count - fb_layer_count) :
225 header_opt_layers_ =
nullptr;
226 closure_opt_layers_ =
nullptr;
227 normal_opt_layers_ =
nullptr;
232 pass.bind_texture(
"gbuf_header_tx", &
header_tx);
233 pass.bind_texture(
"gbuf_closure_tx", &
closure_tx);
234 pass.bind_texture(
"gbuf_normal_tx", &
normal_tx);
MINLINE int max_ii(int a, int b)
bool GPU_stencil_export_support()
@ GPU_LOADACTION_DONT_CARE
void GPU_framebuffer_clear_stencil(GPUFrameBuffer *fb, uint clear_stencil)
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
#define GPU_framebuffer_bind_ex(_fb,...)
@ GPU_TEXTURE_USAGE_SHADER_READ
@ GPU_TEXTURE_USAGE_SHADER_WRITE
@ GPU_TEXTURE_USAGE_ATTACHMENT
A running instance of the engine.
#define GBUF_NORMAL_FB_LAYER_COUNT
#define GBUF_CLOSURE_SLOT
#define GBUF_CLOSURE_FB_LAYER_COUNT
#define GBUF_HEADER_FB_LAYER_COUNT
VecBase< uint32_t, 4 > uint4
VecBase< int32_t, 2 > int2
const uint header_fb_layer_count
void acquire(int2 extent, int header_count, int data_count, int normal_count)
void bind_resources(PassType &pass)
void bind_optional_layers(PassType &pass)
const uint normal_fb_layer_count
void bind(Framebuffer &gbuffer_fb)
const uint closure_fb_layer_count