2021-02-27 22:43:49 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "vk_core.h"
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
//int lightmap, texture;
|
|
|
|
//int render_mode;
|
2021-03-17 17:15:33 +01:00
|
|
|
int texture_id;
|
2021-02-28 00:40:57 +01:00
|
|
|
uint32_t max_vertex;
|
|
|
|
uint32_t element_count;
|
2021-02-27 22:43:49 +01:00
|
|
|
uint32_t index_offset, vertex_offset;
|
|
|
|
VkBuffer buffer;
|
2021-03-21 00:21:26 +01:00
|
|
|
const matrix3x4 *transform_row;
|
2021-03-15 18:49:45 +01:00
|
|
|
struct { float r,g,b; } emissive;
|
2021-04-07 21:11:20 +02:00
|
|
|
} vk_ray_model_dynamic_t;
|
2021-02-27 22:43:49 +01:00
|
|
|
|
|
|
|
void VK_RaySceneBegin( void );
|
2021-04-07 21:11:20 +02:00
|
|
|
void VK_RaySceneAddModelDynamic(VkCommandBuffer cmdbuf, const vk_ray_model_dynamic_t* model);
|
2021-03-03 20:58:40 +01:00
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
VkCommandBuffer cmdbuf;
|
|
|
|
|
|
|
|
struct {
|
|
|
|
VkImageView image_view;
|
|
|
|
VkImage image;
|
|
|
|
uint32_t width, height;
|
|
|
|
} dst;
|
|
|
|
|
2021-03-08 21:09:11 +01:00
|
|
|
// TODO inv_view/proj matrices
|
2021-03-03 20:58:40 +01:00
|
|
|
struct {
|
|
|
|
VkBuffer buffer;
|
|
|
|
uint32_t offset;
|
|
|
|
uint32_t size;
|
|
|
|
} ubo;
|
2021-03-08 21:09:11 +01:00
|
|
|
|
2021-03-10 18:38:06 +01:00
|
|
|
struct {
|
|
|
|
VkBuffer buffer;
|
|
|
|
uint32_t offset;
|
|
|
|
uint32_t size;
|
|
|
|
} dlights;
|
2021-03-08 21:09:11 +01:00
|
|
|
|
|
|
|
// Buffer holding vertex and index data
|
|
|
|
struct {
|
|
|
|
VkBuffer buffer; // must be the same as in vk_ray_model_create_t TODO: validate or make impossible to specify incorrectly
|
|
|
|
uint32_t size;
|
|
|
|
} geometry_data;
|
2021-03-03 20:58:40 +01:00
|
|
|
} vk_ray_scene_render_args_t;
|
|
|
|
void VK_RaySceneEnd(const vk_ray_scene_render_args_t* args);
|
2021-02-27 22:43:49 +01:00
|
|
|
|
|
|
|
qboolean VK_RayInit( void );
|
|
|
|
void VK_RayShutdown( void );
|
|
|
|
|