vk: remove old dynamic model implementation too
Breaks dynamic model RT rendering, as it is not implemented yet
This commit is contained in:
parent
c105d45265
commit
8e0a9ac4d4
|
@ -701,24 +701,35 @@ static void uboComputeAndSetMVPFromModel( const matrix4x4 model ) {
|
||||||
Matrix4x4_ToArrayFloatGL(mvp, (float*)g_render_state.dirty_uniform_data.mvp);
|
Matrix4x4_ToArrayFloatGL(mvp, (float*)g_render_state.dirty_uniform_data.mvp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void submitToTraditionalRender( const vk_render_model_t *model, const matrix4x4 transform, const vec4_t color, int render_type, int textures_override ) {
|
typedef struct {
|
||||||
int current_texture = textures_override;
|
const char *debug_name;
|
||||||
|
int lightmap; // TODO per-geometry
|
||||||
|
const vk_render_geometry_t *geometries;
|
||||||
|
int geometries_count;
|
||||||
|
const matrix4x4 *transform;
|
||||||
|
const vec4_t *color;
|
||||||
|
int render_type;
|
||||||
|
int textures_override;
|
||||||
|
} trad_submit_t;
|
||||||
|
|
||||||
|
static void submitToTraditionalRender( trad_submit_t args ) {
|
||||||
|
int current_texture = args.textures_override;
|
||||||
int element_count = 0;
|
int element_count = 0;
|
||||||
int index_offset = -1;
|
int index_offset = -1;
|
||||||
int vertex_offset = 0;
|
int vertex_offset = 0;
|
||||||
|
|
||||||
uboComputeAndSetMVPFromModel( transform );
|
uboComputeAndSetMVPFromModel( *args.transform );
|
||||||
|
|
||||||
// TODO get rid of this dirty ubo thing
|
// TODO get rid of this dirty ubo thing
|
||||||
Vector4Copy(color, g_render_state.dirty_uniform_data.color);
|
Vector4Copy(*args.color, g_render_state.dirty_uniform_data.color);
|
||||||
ASSERT(model->lightmap <= MAX_LIGHTMAPS);
|
ASSERT(args.lightmap <= MAX_LIGHTMAPS);
|
||||||
const int lightmap = model->lightmap > 0 ? tglob.lightmapTextures[model->lightmap - 1] : tglob.whiteTexture;
|
const int lightmap = args.lightmap > 0 ? tglob.lightmapTextures[args.lightmap - 1] : tglob.whiteTexture;
|
||||||
|
|
||||||
drawCmdPushDebugLabelBegin( model->debug_name );
|
drawCmdPushDebugLabelBegin( args.debug_name );
|
||||||
|
|
||||||
for (int i = 0; i < model->num_geometries; ++i) {
|
for (int i = 0; i < args.geometries_count; ++i) {
|
||||||
const vk_render_geometry_t *geom = model->geometries + i;
|
const vk_render_geometry_t *geom = args.geometries + i;
|
||||||
const int tex = textures_override > 0 ? textures_override : geom->texture;
|
const int tex = args.textures_override > 0 ? args.textures_override : geom->texture;
|
||||||
const qboolean split = current_texture != tex
|
const qboolean split = current_texture != tex
|
||||||
|| vertex_offset != geom->vertex_offset
|
|| vertex_offset != geom->vertex_offset
|
||||||
|| (index_offset + element_count) != geom->index_offset;
|
|| (index_offset + element_count) != geom->index_offset;
|
||||||
|
@ -734,7 +745,7 @@ static void submitToTraditionalRender( const vk_render_model_t *model, const mat
|
||||||
render_draw_t draw = {
|
render_draw_t draw = {
|
||||||
.lightmap = lightmap,
|
.lightmap = lightmap,
|
||||||
.texture = current_texture,
|
.texture = current_texture,
|
||||||
.pipeline_index = render_type,
|
.pipeline_index = args.render_type,
|
||||||
.element_count = element_count,
|
.element_count = element_count,
|
||||||
.vertex_offset = vertex_offset,
|
.vertex_offset = vertex_offset,
|
||||||
.index_offset = index_offset,
|
.index_offset = index_offset,
|
||||||
|
@ -758,7 +769,7 @@ static void submitToTraditionalRender( const vk_render_model_t *model, const mat
|
||||||
const render_draw_t draw = {
|
const render_draw_t draw = {
|
||||||
.lightmap = lightmap,
|
.lightmap = lightmap,
|
||||||
.texture = current_texture,
|
.texture = current_texture,
|
||||||
.pipeline_index = render_type,
|
.pipeline_index = args.render_type,
|
||||||
.element_count = element_count,
|
.element_count = element_count,
|
||||||
.vertex_offset = vertex_offset,
|
.vertex_offset = vertex_offset,
|
||||||
.index_offset = index_offset,
|
.index_offset = index_offset,
|
||||||
|
@ -770,6 +781,7 @@ static void submitToTraditionalRender( const vk_render_model_t *model, const mat
|
||||||
drawCmdPushDebugLabelEnd();
|
drawCmdPushDebugLabelEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
void VK_RenderModelDraw_old( vk_render_model_t* model, int ent_index_prev_frame__toremove ) {
|
void VK_RenderModelDraw_old( vk_render_model_t* model, int ent_index_prev_frame__toremove ) {
|
||||||
++g_render.stats.models_count;
|
++g_render.stats.models_count;
|
||||||
|
|
||||||
|
@ -798,6 +810,7 @@ void VK_RenderModelDraw_old( vk_render_model_t* model, int ent_index_prev_frame_
|
||||||
|
|
||||||
submitToTraditionalRender( model, model->deprecate.transform, model->deprecate.color, model->deprecate.render_type, -1 );
|
submitToTraditionalRender( model, model->deprecate.transform, model->deprecate.color, model->deprecate.render_type, -1 );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void R_RenderModelDraw(const vk_render_model_t *model, r_model_draw_t args) {
|
void R_RenderModelDraw(const vk_render_model_t *model, r_model_draw_t args) {
|
||||||
++g_render.stats.models_count;
|
++g_render.stats.models_count;
|
||||||
|
@ -816,58 +829,19 @@ void R_RenderModelDraw(const vk_render_model_t *model, r_model_draw_t args) {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
submitToTraditionalRender(model, *args.transform, *args.color, args.render_type, args.textures_override);
|
submitToTraditionalRender((trad_submit_t){
|
||||||
|
.debug_name = model->debug_name,
|
||||||
|
.lightmap = model->lightmap,
|
||||||
|
.geometries = model->geometries,
|
||||||
|
.geometries_count = model->num_geometries,
|
||||||
|
.transform = args.transform,
|
||||||
|
.color = args.color,
|
||||||
|
.render_type = args.render_type,
|
||||||
|
.textures_override = args.textures_override
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MAX_DYNAMIC_GEOMETRY 256
|
|
||||||
|
|
||||||
static struct {
|
|
||||||
vk_render_model_t model;
|
|
||||||
matrix4x4 transform;
|
|
||||||
vk_render_geometry_t geometries[MAX_DYNAMIC_GEOMETRY];
|
|
||||||
} g_dynamic_model = {0};
|
|
||||||
|
|
||||||
static void VK_RenderModelDynamicBegin( vk_render_type_e render_type, const vec4_t color, const matrix3x4 transform, const char *debug_name_fmt, ... ) {
|
|
||||||
va_list argptr;
|
|
||||||
va_start( argptr, debug_name_fmt );
|
|
||||||
vsnprintf(g_dynamic_model.model.debug_name, sizeof(g_dynamic_model.model.debug_name), debug_name_fmt, argptr );
|
|
||||||
va_end( argptr );
|
|
||||||
|
|
||||||
ASSERT(!g_dynamic_model.model.geometries);
|
|
||||||
g_dynamic_model.model.geometries = g_dynamic_model.geometries;
|
|
||||||
g_dynamic_model.model.num_geometries = 0;
|
|
||||||
g_dynamic_model.model.deprecate.render_type = render_type;
|
|
||||||
g_dynamic_model.model.lightmap = 0;
|
|
||||||
Vector4Copy(color, g_dynamic_model.model.deprecate.color);
|
|
||||||
Matrix4x4_LoadIdentity(g_dynamic_model.transform);
|
|
||||||
if (transform)
|
|
||||||
Matrix3x4_Copy(g_dynamic_model.transform, transform);
|
|
||||||
}
|
|
||||||
static void VK_RenderModelDynamicAddGeometry( const vk_render_geometry_t *geom ) {
|
|
||||||
ASSERT(g_dynamic_model.model.geometries);
|
|
||||||
if (g_dynamic_model.model.num_geometries == MAX_DYNAMIC_GEOMETRY) {
|
|
||||||
ERROR_THROTTLED(10, "Ran out of dynamic model geometry slots for model %s", g_dynamic_model.model.debug_name);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_dynamic_model.geometries[g_dynamic_model.model.num_geometries++] = *geom;
|
|
||||||
}
|
|
||||||
static void VK_RenderModelDynamicCommit( void ) {
|
|
||||||
ASSERT(g_dynamic_model.model.geometries);
|
|
||||||
|
|
||||||
if (g_dynamic_model.model.num_geometries > 0) {
|
|
||||||
g_render.stats.dynamic_model_count++;
|
|
||||||
g_dynamic_model.model.dynamic = true;
|
|
||||||
VK_RenderModelInit_old( &g_dynamic_model.model );
|
|
||||||
Matrix4x4_Copy(g_dynamic_model.model.deprecate.transform, g_dynamic_model.transform);
|
|
||||||
VK_RenderModelDraw_old( &g_dynamic_model.model, -1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
g_dynamic_model.model.debug_name[0] = '\0';
|
|
||||||
g_dynamic_model.model.geometries = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void R_RenderDrawOnce(r_draw_once_t args) {
|
void R_RenderDrawOnce(r_draw_once_t args) {
|
||||||
r_geometry_buffer_lock_t buffer;
|
r_geometry_buffer_lock_t buffer;
|
||||||
if (!R_GeometryBufferAllocOnceAndLock( &buffer, args.vertices_count, args.indices_count)) {
|
if (!R_GeometryBufferAllocOnceAndLock( &buffer, args.vertices_count, args.indices_count)) {
|
||||||
|
@ -880,7 +854,6 @@ void R_RenderDrawOnce(r_draw_once_t args) {
|
||||||
|
|
||||||
R_GeometryBufferUnlock( &buffer );
|
R_GeometryBufferUnlock( &buffer );
|
||||||
|
|
||||||
{
|
|
||||||
const vk_render_geometry_t geometry = {
|
const vk_render_geometry_t geometry = {
|
||||||
.texture = args.texture,
|
.texture = args.texture,
|
||||||
.material = kXVkMaterialRegular,
|
.material = kXVkMaterialRegular,
|
||||||
|
@ -894,8 +867,32 @@ void R_RenderDrawOnce(r_draw_once_t args) {
|
||||||
.emissive = { (*args.color)[0], (*args.color)[1], (*args.color)[2] },
|
.emissive = { (*args.color)[0], (*args.color)[1], (*args.color)[2] },
|
||||||
};
|
};
|
||||||
|
|
||||||
VK_RenderModelDynamicBegin( args.render_type, *args.color, m_matrix4x4_identity, args.name );
|
if (g_render_state.current_frame_is_ray_traced) {
|
||||||
VK_RenderModelDynamicAddGeometry( &geometry );
|
// FIXME
|
||||||
VK_RenderModelDynamicCommit();
|
/* ASSERT(model->rt_model); */
|
||||||
|
/* RT_FrameAddModel(model->rt_model, (rt_frame_add_model_t){ */
|
||||||
|
/* .render_type = args.render_type, */
|
||||||
|
/* .transform = (const matrix3x4*)args.transform, */
|
||||||
|
/* .prev_transform = (const matrix3x4*)args.prev_transform, */
|
||||||
|
/* .color = args.color, */
|
||||||
|
/* .override = { */
|
||||||
|
/* .textures = args.textures_override, */
|
||||||
|
/* .geoms = model->geometries, */
|
||||||
|
/* .geoms_count = model->num_geometries, */
|
||||||
|
/* }, */
|
||||||
|
/* }); */
|
||||||
|
} else {
|
||||||
|
submitToTraditionalRender((trad_submit_t){
|
||||||
|
.debug_name = args.name,
|
||||||
|
.lightmap = 0,
|
||||||
|
.geometries = &geometry,
|
||||||
|
.geometries_count = 1,
|
||||||
|
.transform = &m_matrix4x4_identity,
|
||||||
|
.color = args.color,
|
||||||
|
.render_type = args.render_type,
|
||||||
|
.textures_override = -1,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_render.stats.dynamic_model_count++;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue