quakeforge/include/QF/Vulkan/qf_translucent.h
Bill Currie 743b06d5c1 [vulkan] Script render graph initialization sequence
While every possible subsystem needs an initialization call, all that
does is add the actual initialization task to the render graph system.
This allows the render graph to be fully configurable, initializing only
those subsystems that the graph needs.

Scripted initialization is still separated from startup as render graph
creation needs various resources (eg, attachments) defined before
creating render and compute passes, but all those need to be created
before the subsystems can actually start up.
2024-01-30 23:13:16 +09:00

49 lines
1.2 KiB
C

#ifndef __QF_Vulkan_qf_translucent_h
#define __QF_Vulkan_qf_translucent_h
#include "QF/darray.h"
#include "QF/simd/types.h"
#include "QF/Vulkan/command.h"
typedef struct qfv_transfrag_s {
vec4f_t color;
float depth;
int32_t next;
} qfv_transfrag_t;
typedef struct qfv_transtate_s {
int32_t numFragments;
int32_t maxFragments;
} qfv_transtate_t;
typedef struct translucentframe_s {
VkDescriptorSet flat;
VkDescriptorSet cube;
struct qfv_resobj_s *heads;
struct qfv_resobj_s *cube_heads;
struct qfv_resobj_s *heads_view;
struct qfv_resobj_s *cube_heads_view;
struct qfv_resobj_s *state;
struct qfv_resobj_s *frags;
} translucentframe_t;
typedef struct translucentframeset_s
DARRAY_TYPE (translucentframe_t) translucentframeset_t;
typedef struct translucentctx_s {
translucentframeset_t frames;
struct qfv_resource_s *resources;
VkExtent2D extent;
int maxFragments;
} translucentctx_t;
struct vulkan_ctx_s;
void Vulkan_Translucent_Init (struct vulkan_ctx_s *ctx);
VkDescriptorSet Vulkan_Translucent_Descriptors (struct vulkan_ctx_s *ctx,
int frame)__attribute__((pure));
#endif//__QF_Vulkan_qf_translucent_h