Moved some stuff a bit. Added const specifier

This commit is contained in:
korenkonder
2023-12-23 14:58:39 +03:00
parent 89b139a3cb
commit 5cf3d9ddba
3 changed files with 19 additions and 18 deletions
+1 -2
View File
@@ -1440,8 +1440,7 @@ namespace mdl {
draw_sub_mesh(&i->args.sub_mesh, &i->mat, func);
} break;
case OBJ_KIND_ETC: {
draw_object_model_mat_load(i->mat);
draw_etc_obj(&i->args.etc);
draw_etc_obj(&i->args.etc, &i->mat);
} break;
case OBJ_KIND_USER: {
i->args.user.func(i->args.user.data, &i->mat);
+16 -13
View File
@@ -22,6 +22,7 @@ static void draw_object_material_set_parameter(
const obj_material_data* mat_data);
static void draw_object_material_set_reflect(const mdl::ObjSubMeshArgs* args);
static void draw_object_material_set_uniform(const obj_material_data* mat_data, bool disable_color_l);
static void draw_object_model_mat_load(const mat4& mat);
static void draw_object_vertex_attrib_reset_default(const mdl::ObjSubMeshArgs* args);
static void draw_object_vertex_attrib_reset_reflect(const mdl::ObjSubMeshArgs* args);
static void draw_object_vertex_attrib_set_default(const mdl::ObjSubMeshArgs* args);
@@ -66,7 +67,7 @@ namespace mdl {
draw_state->stats.draw_triangle_count += count - 2;
}
void draw_etc_obj(mdl::EtcObj* etc) {
void draw_etc_obj(const mdl::EtcObj* etc, const mat4* mat) {
switch (etc->type) {
case mdl::ETC_OBJ_TEAPOT:
case mdl::ETC_OBJ_GRID:
@@ -88,6 +89,8 @@ namespace mdl {
if (!vao)
return;
draw_object_model_mat_load(*mat);
vec4 g_material_state_diffuse = rctx->obj_batch.g_material_state_diffuse;
vec4 g_material_state_ambient = rctx->obj_batch.g_material_state_ambient;
vec4 g_material_state_specular = rctx->obj_batch.g_material_state_specular;
@@ -159,7 +162,7 @@ namespace mdl {
rctx->obj_batch.g_blend_color = 1.0f;
}
void draw_sub_mesh(const ObjSubMeshArgs* args, const mat4* model,
void draw_sub_mesh(const ObjSubMeshArgs* args, const mat4* mat,
void(*func)(const ObjSubMeshArgs* args)) {
GLuint vao = disp_manager->get_vertex_array(args);
if (!vao)
@@ -189,22 +192,22 @@ namespace mdl {
uniform->arr[U_BONE_MAT] = 0;
}
else {
mat4 mat;
mat4 _mat;
if (args->mesh->attrib.m.billboard)
model_mat_face_camera_view(&rctx->view_mat, model, &mat);
model_mat_face_camera_view(&rctx->view_mat, mat, &_mat);
else if (args->mesh->attrib.m.billboard_y_axis)
model_mat_face_camera_position(&rctx->view_mat, model, &mat);
model_mat_face_camera_position(&rctx->view_mat, mat, &_mat);
else
mat = *model;
_mat = *mat;
uniform->arr[U_BONE_MAT] = 0;
gl_state_bind_vertex_array(vao);
if (func != draw_sub_mesh_default || !args->instances_count) {
draw_object_model_mat_load(mat);
draw_object_model_mat_load(_mat);
func(args);
}
else
draw_sub_mesh_default_instanced(args, &mat);
draw_sub_mesh_default_instanced(args, &_mat);
uniform->arr[U_BONE_MAT] = 0;
}
}
@@ -490,11 +493,6 @@ namespace mdl {
}
}
inline void draw_object_model_mat_load(const mat4& mat) {
rctx->obj_batch.set_transforms(mat, rctx->view_mat, rctx->proj_mat);
rctx->obj_batch.set_g_joint(mat);
}
inline void model_mat_face_camera_position(const mat4* view, const mat4* src, mat4* dst) {
mat4 mat;
mat4_invert_fast(view, &mat);
@@ -1009,6 +1007,11 @@ static void draw_object_material_set_uniform(const obj_material_data* mat_data,
uniform->arr[U45] = 1;
}
static void draw_object_model_mat_load(const mat4& mat) {
rctx->obj_batch.set_transforms(mat, rctx->view_mat, rctx->proj_mat);
rctx->obj_batch.set_g_joint(mat);
}
static void draw_object_vertex_attrib_reset_default(const mdl::ObjSubMeshArgs* args) {
const obj_mesh* mesh = args->mesh;
obj_vertex_format vertex_format = mesh->vertex_format;
+2 -3
View File
@@ -14,8 +14,8 @@
namespace mdl {
extern void draw(obj_primitive_type primitive_type, uint32_t count,
uint16_t start, uint16_t end, obj_index_format index_format, size_t indices);
extern void draw_etc_obj(mdl::EtcObj* etc);
extern void draw_sub_mesh(const ObjSubMeshArgs* args, const mat4* model,
extern void draw_etc_obj(const mdl::EtcObj* etc, const mat4* mat);
extern void draw_sub_mesh(const ObjSubMeshArgs* args, const mat4* mat,
void(*func)(const ObjSubMeshArgs* args));
//extern void draw_sub_mesh_show_vector(const ObjSubMeshArgs* args, const mat4* model, int32_t show_vector);
extern void draw_sub_mesh_default(const ObjSubMeshArgs* args);
@@ -27,6 +27,5 @@ namespace mdl {
extern void draw_sub_mesh_translucent(const ObjSubMeshArgs* args);
};
extern void draw_object_model_mat_load(const mat4& mat);
extern void model_mat_face_camera_position(const mat4* view, const mat4* src, mat4* dst);
extern void model_mat_face_camera_view(const mat4* view, const mat4* src, mat4* dst);