rt: hide internal apis
This commit is contained in:
parent
ed4d0070f8
commit
8f47115a01
|
@ -3,6 +3,7 @@
|
|||
#include "vk_core.h"
|
||||
#include "vk_buffer.h"
|
||||
#include "vk_const.h"
|
||||
#include "vk_rtx.h"
|
||||
|
||||
#define MAX_INSTANCES 2048
|
||||
#define MAX_KUSOCHKI 32768
|
||||
|
@ -89,3 +90,44 @@ void XVK_RayModel_ClearForNextFrame( void );
|
|||
void XVK_RayModel_Validate(void);
|
||||
|
||||
void RT_RayModel_Clear(void);
|
||||
|
||||
// Just creates an empty BLAS structure, doesn't alloc anything
|
||||
// Memory pointed to by name must remain alive until RT_BlasDestroy
|
||||
struct rt_blas_s* RT_BlasCreate(const char *name, rt_blas_usage_e usage);
|
||||
|
||||
// Create an empty BLAS with specified limits
|
||||
struct rt_blas_s* RT_BlasCreatePreallocated(const char *name, rt_blas_usage_e usage, int max_geometries, const int *max_prims, int max_vertex, uint32_t extra_buffer_offset);
|
||||
|
||||
void RT_BlasDestroy(struct rt_blas_s* blas);
|
||||
|
||||
// 1. Schedules BLAS build (allocates geoms+ranges from a temp pool, etc).
|
||||
// 2. Allocates kusochki (if not) and fills them with geom and initial material data
|
||||
qboolean RT_BlasBuild(struct rt_blas_s *blas, const struct vk_render_geometry_s *geoms, int geoms_count);
|
||||
|
||||
VkDeviceAddress RT_BlasGetDeviceAddress(struct rt_blas_s *blas);
|
||||
|
||||
typedef struct rt_kusochki_s {
|
||||
uint32_t offset;
|
||||
int count;
|
||||
int internal_index__;
|
||||
} rt_kusochki_t;
|
||||
|
||||
// TODO lifetime arg here is KORYAVY
|
||||
rt_kusochki_t RT_KusochkiAlloc(int count, r_geometry_lifetime_t lifetime);
|
||||
void RT_KusochkiFree(const rt_kusochki_t*);
|
||||
|
||||
struct vk_render_geometry_s;
|
||||
qboolean RT_KusochkiUpload(const rt_kusochki_t *kusochki, const struct vk_render_geometry_s *geoms, int geoms_count, int override_texture_id);
|
||||
|
||||
// Update animated materials
|
||||
void RT_KusochkiUploadSubset(rt_kusochki_t *kusochki, const struct vk_render_geometry_s *geoms, const int *geoms_indices, int geoms_indices_count);
|
||||
|
||||
typedef struct {
|
||||
const struct rt_blas_s* blas;
|
||||
uint32_t kusochki_offset;
|
||||
int render_type; // TODO material_mode
|
||||
const matrix3x4 *transform, *prev_transform;
|
||||
const vec4_t *color;
|
||||
} rt_blas_frame_args_t;
|
||||
|
||||
void RT_BlasAddToFrame( rt_blas_frame_args_t args );
|
||||
|
|
|
@ -574,6 +574,12 @@ void RT_FrameAddModel( struct rt_model_s *model, rt_frame_add_model_t args ) {
|
|||
|
||||
rt_draw_instance_t* draw_instance = g_ray_model_state.frame.instances + g_ray_model_state.frame.instances_count;
|
||||
|
||||
/* if (args.textures_override > 0) { */
|
||||
/* // FIXME need geometries + count */
|
||||
/* rt_kusochki_t temp_kusok = RT_KusochkiAlloc(int count, r_geometry_lifetime_t lifetime); */
|
||||
/* qboolean RT_KusochkiUpload(const rt_kusochki_t *kusochki, const struct vk_render_geometry_s *geoms, int geoms_count, int override_texture_id); */
|
||||
/* } */
|
||||
|
||||
draw_instance->model_toremove = NULL;
|
||||
draw_instance->blas_addr = model->blas_addr;
|
||||
draw_instance->kusochki_offset = model->kusochki.offset;
|
||||
|
|
|
@ -809,6 +809,7 @@ void R_RenderModelDraw(const vk_render_model_t *model, r_model_draw_t args) {
|
|||
.transform = (const matrix3x4*)args.transform,
|
||||
.prev_transform = (const matrix3x4*)args.prev_transform,
|
||||
.color = args.color,
|
||||
.textures_override = args.textures_override,
|
||||
});
|
||||
} else {
|
||||
submitToTraditionalRender(model, *args.transform, *args.color, args.render_type, args.textures_override);
|
||||
|
|
|
@ -36,6 +36,7 @@ typedef struct {
|
|||
const matrix4x4 *projection, *view;
|
||||
|
||||
// Buffer holding vertex and index data
|
||||
// TODO remove
|
||||
struct {
|
||||
VkBuffer buffer; // must be the same as in vk_ray_model_create_t TODO: validate or make impossible to specify incorrectly
|
||||
uint64_t size;
|
||||
|
@ -54,55 +55,14 @@ void VK_RayShutdown( void );
|
|||
struct rt_blas_s;
|
||||
struct vk_render_geometry_s;
|
||||
|
||||
struct rt_model_s;
|
||||
|
||||
typedef enum {
|
||||
kBlasBuildStatic, // builds slow for fast trace
|
||||
kBlasBuildDynamicUpdate, // builds if not built, updates if built
|
||||
kBlasBuildDynamicFast, // builds fast from scratch (no correlation with previous frame guaranteed, e.g. triapi)
|
||||
} rt_blas_usage_e;
|
||||
|
||||
// Just creates an empty BLAS structure, doesn't alloc anything
|
||||
// Memory pointed to by name must remain alive until RT_BlasDestroy
|
||||
struct rt_blas_s* RT_BlasCreate(const char *name, rt_blas_usage_e usage);
|
||||
|
||||
// Create an empty BLAS with specified limits
|
||||
struct rt_blas_s* RT_BlasCreatePreallocated(const char *name, rt_blas_usage_e usage, int max_geometries, const int *max_prims, int max_vertex, uint32_t extra_buffer_offset);
|
||||
|
||||
void RT_BlasDestroy(struct rt_blas_s* blas);
|
||||
|
||||
// 1. Schedules BLAS build (allocates geoms+ranges from a temp pool, etc).
|
||||
// 2. Allocates kusochki (if not) and fills them with geom and initial material data
|
||||
qboolean RT_BlasBuild(struct rt_blas_s *blas, const struct vk_render_geometry_s *geoms, int geoms_count);
|
||||
|
||||
VkDeviceAddress RT_BlasGetDeviceAddress(struct rt_blas_s *blas);
|
||||
|
||||
typedef struct rt_kusochki_s {
|
||||
uint32_t offset;
|
||||
int count;
|
||||
int internal_index__;
|
||||
} rt_kusochki_t;
|
||||
|
||||
// TODO lifetime arg here is KORYAVY
|
||||
rt_kusochki_t RT_KusochkiAlloc(int count, r_geometry_lifetime_t lifetime);
|
||||
void RT_KusochkiFree(const rt_kusochki_t*);
|
||||
|
||||
struct vk_render_geometry_s;
|
||||
qboolean RT_KusochkiUpload(const rt_kusochki_t *kusochki, const struct vk_render_geometry_s *geoms, int geoms_count, int override_texture_id);
|
||||
|
||||
// Update animated materials
|
||||
void RT_KusochkiUploadSubset(rt_kusochki_t *kusochki, const struct vk_render_geometry_s *geoms, const int *geoms_indices, int geoms_indices_count);
|
||||
|
||||
typedef struct {
|
||||
const struct rt_blas_s* blas;
|
||||
uint32_t kusochki_offset;
|
||||
int render_type; // TODO material_mode
|
||||
const matrix3x4 *transform, *prev_transform;
|
||||
const vec4_t *color;
|
||||
} rt_blas_frame_args_t;
|
||||
|
||||
void RT_BlasAddToFrame( rt_blas_frame_args_t args );
|
||||
|
||||
struct rt_model_s;
|
||||
|
||||
typedef struct {
|
||||
const char *debug_name; // Must remain alive until RT_ModelDestroy
|
||||
const struct vk_render_geometry_s *geometries;
|
||||
|
@ -116,6 +76,7 @@ typedef struct {
|
|||
int render_type; // TODO material_mode
|
||||
const matrix3x4 *transform, *prev_transform;
|
||||
const vec4_t *color;
|
||||
int textures_override; // Override kusochki/material textures if > 0
|
||||
} rt_frame_add_model_t;
|
||||
|
||||
void RT_FrameAddModel( struct rt_model_s *model, rt_frame_add_model_t args );
|
||||
|
|
Loading…
Reference in New Issue