mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-27 06:34:11 +00:00
b9bb841744
This cleans up a lot of ugly code that I always thought was rather dumb.
64 lines
1.5 KiB
C
64 lines
1.5 KiB
C
#ifndef __QF_Vulkan_qf_particles_h
|
|
#define __QF_Vulkan_qf_particles_h
|
|
|
|
#include "QF/darray.h"
|
|
#include "QF/image.h"
|
|
#include "QF/render.h"
|
|
|
|
#include "QF/Vulkan/command.h"
|
|
|
|
typedef struct qfv_particle_s {
|
|
vec4f_t pos;
|
|
vec4f_t vel;
|
|
vec4f_t color;
|
|
float texture;
|
|
float ramp;
|
|
float scale;
|
|
float live;
|
|
} qfv_particle_t;
|
|
|
|
typedef struct qfv_parameters_s {
|
|
vec4f_t drag;
|
|
vec4f_t ramp;
|
|
} qfv_parameters_t;
|
|
|
|
// Doubles as VkDrawIndirectCommand
|
|
typedef struct qfv_particle_system_s {
|
|
uint32_t vertexCount; // always 1
|
|
uint32_t particleCount;
|
|
uint32_t firstVertex; // always 0
|
|
uint32_t firstInstance; // always 0
|
|
} qfv_particle_system_t;
|
|
|
|
typedef struct particleframe_s {
|
|
VkEvent physicsEvent;
|
|
VkEvent updateEvent;
|
|
VkBuffer states;
|
|
VkBuffer params;
|
|
VkBuffer system;
|
|
|
|
VkDescriptorSet curDescriptors;
|
|
VkDescriptorSet inDescriptors;
|
|
VkDescriptorSet newDescriptors;
|
|
} particleframe_t;
|
|
|
|
typedef struct particleframeset_s
|
|
DARRAY_TYPE (particleframe_t) particleframeset_t;
|
|
|
|
typedef struct particlectx_s {
|
|
particleframeset_t frames;
|
|
|
|
struct qfv_resource_s *resources;
|
|
struct qfv_stagebuf_s *stage;
|
|
|
|
psystem_t *psystem;
|
|
} particlectx_t;
|
|
|
|
struct vulkan_ctx_s;
|
|
|
|
struct psystem_s *Vulkan_ParticleSystem (struct vulkan_ctx_s *ctx);
|
|
void Vulkan_Particles_Init (struct vulkan_ctx_s *ctx);
|
|
void Vulkan_Particles_Setup (struct vulkan_ctx_s *ctx);
|
|
void Vulkan_Particles_Shutdown (struct vulkan_ctx_s *ctx);
|
|
|
|
#endif//__QF_Vulkan_qf_particles_h
|