Some small changes

This commit is contained in:
korenkonder
2024-11-22 01:33:27 +03:00
parent 3868240661
commit 8158c35f62
9 changed files with 130 additions and 128 deletions
+3 -3
View File
@@ -444,10 +444,10 @@ void light_set::data_set(face& face, light_set_id id) {
static void light_get_direction_from_position(vec4* pos_dir, light_data* light, bool force) {
if (force || light->get_type() == LIGHT_PARALLEL) {
float_t length = vec3::length(*(vec3*)pos_dir);
if (length <= 0.000001)
*(vec3*)pos_dir = vec3(0.0f, 1.0f, 0.0f);
else
if (length > 0.000001f)
*(vec3*)pos_dir *= 1.0f / length;
else
*(vec3*)pos_dir = { 0.0f, 1.0f, 0.0f };
pos_dir->w = 0.0f;
}
}
+101 -92
View File
@@ -259,7 +259,12 @@ namespace mdl {
args->emission = emission;
args->chara_color = disp_manager->chara_color;
args->self_shadow = !!(disp_manager->obj_flags & (mdl::OBJ_8 | mdl::OBJ_4));
if (disp_manager->obj_flags & OBJ_4)
args->self_shadow = 1;
else if (disp_manager->obj_flags & mdl::OBJ_8)
args->self_shadow = 2;
else
args->self_shadow = 0;
args->shadow = disp_manager->shadow_type;
args->texture_color_coefficients = disp_manager->texture_color_coefficients;
args->texture_color_coefficients.w = disp_manager->wet_param;
@@ -2267,7 +2272,7 @@ namespace mdl {
}
static int32_t obj_axis_aligned_bounding_box_check_visibility(
obj_axis_aligned_bounding_box* aabb, camera* cam, const mat4* mat) {
const obj_axis_aligned_bounding_box* aabb, camera* cam, const mat4* mat) {
vec3 points[8];
points[0] = aabb->center + (aabb->size ^ vec3( 0.0f, 0.0f, 0.0f));
points[1] = aabb->center + (aabb->size ^ vec3(-0.0f, -0.0f, -0.0f));
@@ -2346,29 +2351,29 @@ namespace mdl {
return 2;
}
bool DispManager::entry_obj(const ::obj* object, obj_mesh_vertex_buffer* obj_vertex_buf,
bool DispManager::entry_obj(const ::obj* obj, obj_mesh_vertex_buffer* obj_vertex_buf,
obj_mesh_index_buffer* obj_index_buf, const mat4* mat, const std::vector<GLuint>* textures,
const vec4* blend_color, const mat4* bone_mat, const ::obj* object_morph,
obj_mesh_vertex_buffer* obj_morph_vertex_buf, int32_t instances_count, const mat4* instances_mat,
void(*func)(const ObjSubMeshArgs*), const ObjSubMeshArgs* func_data, bool enable_bone_mat, bool local) {
if (!obj_vertex_buf || !obj_index_buf) {
printf_debug("mdl::DispManager::entry_obj: no vertex or index object buffer to draw;\n");
printf_debug(" Object: %s\n", object->name);
printf_debug(" Object: %s\n", obj->name);
return false;
}
::camera* cam = rctx_ptr->camera;
if (!local && object_culling && !instances_count && !bone_mat && (!object
if (!local && object_culling && !instances_count && !bone_mat && (!obj
|| !obj_bounding_sphere_check_visibility(
&object->bounding_sphere, &culling, cam, mat))) {
&obj->bounding_sphere, &culling, cam, mat))) {
culling.culled.objects++;
return false;
}
culling.passed.objects++;
for (int32_t i = 0; i < object->num_mesh; i++) {
obj_mesh* mesh = &object->mesh_array[i];
for (int32_t i = 0; i < obj->num_mesh; i++) {
obj_mesh* mesh = &obj->mesh_array[i];
obj_mesh* mesh_morph = 0;
if (obj_vertex_buf && obj_morph_vertex_buf) {
if (obj_vertex_buf[i].get_size() != obj_morph_vertex_buf[i].get_size())
@@ -2421,7 +2426,7 @@ namespace mdl {
continue;
}
v32 = obj_bounding_sphere_check_visibility(
int32_t v32 = obj_bounding_sphere_check_visibility(
&sub_mesh_morph->bounding_sphere, &culling, cam, mat);
if (v32 == 2) {
if (culling.func)
@@ -2441,7 +2446,7 @@ namespace mdl {
culling.passed.submesh_array++;
int32_t num_bone_index = sub_mesh->num_bone_index;
uint16_t* bone_index = sub_mesh->bone_index_array;
const uint16_t* bone_index = sub_mesh->bone_index_array;
mat4* mats;
if (num_bone_index && enable_bone_mat) {
@@ -2458,7 +2463,7 @@ namespace mdl {
num_bone_index = 0;
}
obj_material_data* material = &object->material_array[sub_mesh->material_index];
obj_material_data* material = &obj->material_array[sub_mesh->material_index];
ObjData* data = alloc_obj_data(OBJ_KIND_NORMAL);
if (!data)
continue;
@@ -2483,13 +2488,13 @@ namespace mdl {
if (!vertex_buffer || !index_buffer || obj_morph_vertex_buf && !morph_vertex_buffer) {
printf_debug("mdl::DispManager::entry_obj: no vertex or index mesh buffer to draw;\n");
printf_debug(" Object: %s; Mesh: %s; Sub Mesh: %d\n", object->name, mesh->name, j);
printf_debug(" Object: %s; Mesh: %s; Sub Mesh: %d\n", obj->name, mesh->name, j);
continue;
}
uint32_t material_hash = hash_utf8_murmurhash(material->material.name);
const uint32_t material_hash = hash_utf8_murmurhash(material->material.name);
material_list_struct* mat_list = 0;
const material_list_struct* mat_list = 0;
for (int32_t k = 0; k < material_list_count; k++)
if (material_list_array[k].hash == material_hash) {
mat_list = &material_list_array[k];
@@ -2558,7 +2563,7 @@ namespace mdl {
_emission = material->material.color.emission;
}
data->init_sub_mesh(this, mat, object->bounding_sphere.radius, sub_mesh, mesh, material, textures,
data->init_sub_mesh(this, mat, obj->bounding_sphere.radius, sub_mesh, mesh, material, textures,
num_bone_index, mats, vertex_buffer, vertex_buffer_offset, index_buffer, _blend_color, _emission,
morph_vertex_buffer, morph_vertex_buffer_offset, instances_count, instances_mat, func, func_data);
@@ -2570,13 +2575,26 @@ namespace mdl {
continue;
}
obj_material_attrib_member attrib = material->material.attrib.m;
const obj_material_attrib_member attrib = material->material.attrib.m;
if (obj_flags & (mdl::OBJ_ALPHA_ORDER_1 | mdl::OBJ_ALPHA_ORDER_2 | mdl::OBJ_ALPHA_ORDER_3)
&& data->args.sub_mesh.blend_color.w < 1.0f) {
if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY)) {
if (attrib.flag_28 || (attrib.punch_through
|| !(attrib.alpha_texture | attrib.alpha_material))
&& !sub_mesh->attrib.m.transparent) {
bool translucent = false;
if (!attrib.flag_28 && (!attrib.punch_through
&& (attrib.alpha_texture || attrib.alpha_material)
|| sub_mesh->attrib.m.transparent))
translucent = true;
if (translucent) {
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(local ? OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2_LOCAL
: OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2, data);
else
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3, data);
}
else {
if (!attrib.punch_through) {
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_OPAQUE_ALPHA_ORDER_1, data);
@@ -2599,63 +2617,12 @@ namespace mdl {
if (obj_flags & mdl::OBJ_SSS)
entry_list(OBJ_TYPE_SSS, data);
}
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(local ? OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2_LOCAL
: OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2, data);
else
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3, data);
}
}
else {
if (attrib.flag_28 || data->args.sub_mesh.blend_color.w >= 1.0f
&& (attrib.punch_through || !(attrib.alpha_texture | attrib.alpha_material))
&& !sub_mesh->attrib.m.transparent) {
if (obj_flags & mdl::OBJ_SHADOW)
entry_list((ObjType)(OBJ_TYPE_SHADOW_CHARA + shadow_type), data);
if (obj_flags & mdl::OBJ_SSS)
entry_list(OBJ_TYPE_SSS, data);
if (attrib.punch_through) {
if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY))
entry_list(local ? OBJ_TYPE_TRANSPARENT_LOCAL
: OBJ_TYPE_TRANSPARENT, data);
if (obj_flags & mdl::OBJ_CHARA_REFLECT)
entry_list(OBJ_TYPE_REFLECT_CHARA_OPAQUE, data);
if (obj_flags & mdl::OBJ_REFLECT)
entry_list(OBJ_TYPE_REFLECT_OPAQUE, data);
if (obj_flags & mdl::OBJ_REFRACT)
entry_list(OBJ_TYPE_REFRACT_TRANSPARENT, data);
}
else {
if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY))
entry_list(local ? OBJ_TYPE_OPAQUE_LOCAL
: OBJ_TYPE_OPAQUE, data);
if (obj_flags & mdl::OBJ_20)
entry_list(OBJ_TYPE_TYPE_6, data);
if (obj_flags & mdl::OBJ_CHARA_REFLECT)
entry_list(OBJ_TYPE_REFLECT_CHARA_OPAQUE, data);
if (obj_flags & mdl::OBJ_REFLECT)
entry_list(OBJ_TYPE_REFLECT_OPAQUE, data);
if (obj_flags & mdl::OBJ_REFRACT)
entry_list(OBJ_TYPE_REFRACT_OPAQUE, data);
}
if (obj_flags & mdl::OBJ_USER)
entry_list(OBJ_TYPE_USER, data);
continue;
}
else if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY)) {
else if (!attrib.flag_28 && (data->args.sub_mesh.blend_color.w < 1.0f
|| !attrib.punch_through && attrib.alpha_texture | attrib.alpha_material
|| sub_mesh->attrib.m.transparent)) {
if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY)) {
if (!attrib.translucent_priority)
if (local)
entry_list(OBJ_TYPE_TRANSLUCENT_LOCAL, data);
@@ -2669,6 +2636,49 @@ namespace mdl {
translucent_priority[translucent_priority_count++] = &data->args.sub_mesh;
}
}
else {
if (obj_flags & mdl::OBJ_SHADOW)
entry_list((ObjType)(OBJ_TYPE_SHADOW_CHARA + shadow_type), data);
if (obj_flags & mdl::OBJ_SSS)
entry_list(OBJ_TYPE_SSS, data);
if (attrib.punch_through) {
if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY))
entry_list(local ? OBJ_TYPE_TRANSPARENT_LOCAL
: OBJ_TYPE_TRANSPARENT, data);
if (obj_flags & mdl::OBJ_CHARA_REFLECT)
entry_list(OBJ_TYPE_REFLECT_CHARA_OPAQUE, data);
if (obj_flags & mdl::OBJ_REFLECT)
entry_list(OBJ_TYPE_REFLECT_OPAQUE, data);
if (obj_flags & mdl::OBJ_REFRACT)
entry_list(OBJ_TYPE_REFRACT_TRANSPARENT, data);
}
else {
if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY))
entry_list(local ? OBJ_TYPE_OPAQUE_LOCAL
: OBJ_TYPE_OPAQUE, data);
if (obj_flags & mdl::OBJ_20)
entry_list(OBJ_TYPE_TYPE_6, data);
if (obj_flags & mdl::OBJ_CHARA_REFLECT)
entry_list(OBJ_TYPE_REFLECT_CHARA_OPAQUE, data);
if (obj_flags & mdl::OBJ_REFLECT)
entry_list(OBJ_TYPE_REFLECT_OPAQUE, data);
if (obj_flags & mdl::OBJ_REFRACT)
entry_list(OBJ_TYPE_REFRACT_OPAQUE, data);
}
if (obj_flags & mdl::OBJ_USER)
entry_list(OBJ_TYPE_USER, data);
continue;
}
if (obj_flags & mdl::OBJ_SHADOW)
entry_list((ObjType)(OBJ_TYPE_SHADOW_CHARA
@@ -2689,7 +2699,7 @@ namespace mdl {
entry_list(OBJ_TYPE_USER, data);
}
if (!translucent_priority_count)
if (translucent_priority_count <= 0)
continue;
ObjTranslucentArgs translucent_args;
@@ -2705,20 +2715,19 @@ namespace mdl {
}
ObjData* data = alloc_obj_data(OBJ_KIND_TRANSLUCENT);
if (!data)
continue;
data->init_translucent(mat, &translucent_args);
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(local ? OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2_LOCAL
: OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_3)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3, data);
else
entry_list(local ? OBJ_TYPE_TRANSLUCENT_LOCAL
: OBJ_TYPE_TRANSLUCENT, data);
if (data) {
data->init_translucent(mat, &translucent_args);
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(local ? OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2_LOCAL
: OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_3)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3, data);
else
entry_list(local ? OBJ_TYPE_TRANSLUCENT_LOCAL
: OBJ_TYPE_TRANSLUCENT, data);
}
}
return true;
}
@@ -2751,8 +2760,8 @@ namespace mdl {
if (obj_info.id == -1 && obj_info.set_id == -1)
return false;
::obj* object = objset_info_storage_get_obj(obj_info);
if (!object)
::obj* obj = objset_info_storage_get_obj(obj_info);
if (!obj)
return false;
std::vector<GLuint>* textures = objset_info_storage_get_obj_set_gentex(obj_info.set_id);
@@ -2766,7 +2775,7 @@ namespace mdl {
obj_morph_vertex_buffer = objset_info_storage_get_obj_mesh_vertex_buffer(morph.object);
}
return entry_obj(object, obj_vertex_buffer, obj_index_buffer,
return entry_obj(obj, obj_vertex_buffer, obj_index_buffer,
mat, textures, blend_color, bone_mat, obj_morph, obj_morph_vertex_buffer,
instances_count, instances_mat, func, func_data, enable_bone_mat, local);
}
+1 -1
View File
@@ -178,7 +178,7 @@ namespace mdl {
bool chara_color;
vec4 blend_color;
vec4 emission;
bool self_shadow;
int32_t self_shadow;
shadow_type_enum shadow;
GLuint morph_vertex_buffer;
size_t morph_vertex_buffer_offset;
+6 -3
View File
@@ -638,10 +638,13 @@ static void draw_object_material_set_default(render_context* rctx, const mdl::Ob
draw_object_material_set_uniform(material, false);
if (!rctx->draw_state->shadow)
uniform_value[U_STAGE_SHADOW] = 0;
else if (args->self_shadow)
uniform_value[U_STAGE_SHADOW] = 1;
else
else if (!args->self_shadow)
uniform_value[U_STAGE_SHADOW] = args->sub_mesh->attrib.m.recieve_shadow ? 1 : 0;
else if (args->self_shadow != 1)
uniform_value[U_STAGE_SHADOW] = 0;
else
uniform_value[U_STAGE_SHADOW] = 1;
uniform_value[U_CHARA_SHADOW2] = args->shadow > SHADOW_CHARA ? 1 : 0;
uniform_value[U_CHARA_SHADOW] = rctx->draw_state->self_shadow ? 1 : 0;
+3 -3
View File
@@ -738,7 +738,7 @@ void object_material_msgpack_read(const char* path, const char* set_name,
for (int32_t i = 0; i < obj_set->obj_num; i++) {
obj* obj = obj_set->obj_data[i];
if (name_hash != hash_string_murmurhash(obj->name))
if (name_hash != hash_utf8_murmurhash(obj->name))
continue;
msgpack* materials = object.read_array("material");
@@ -753,7 +753,7 @@ void object_material_msgpack_read(const char* path, const char* set_name,
for (size_t k = 0; k < obj->num_material; k++) {
obj_material& mat = obj->material_array[k].material;
if (name_hash != hash_string_murmurhash(mat.name))
if (name_hash != hash_utf8_murmurhash(mat.name))
continue;
msgpack* shader_compo = material.read("shader_compo");
@@ -1020,7 +1020,7 @@ void object_material_msgpack_read(const char* path, const char* set_name,
for (size_t k = 0; k < obj->num_mesh; k++) {
obj_mesh& mesh = obj->mesh_array[k];
if (name_hash != hash_string_murmurhash(mesh.name))
if (name_hash != hash_utf8_murmurhash(mesh.name))
continue;
msgpack* color_mult = _mesh.read("color_mult");
+4 -2
View File
@@ -185,6 +185,7 @@ namespace rndr {
if (taa_blend < 0.0f || taa_blend >= 1.0f)
taa_texture = taa_texture_selector;
else {
gl_state_begin_event("taa_or_blur");
bool blur;
GLuint sampler;
if (taa_blend > 0.99f) {
@@ -234,6 +235,7 @@ namespace rndr {
draw_quad(render_post_width[0], render_post_height[0],
render_post_width_scale, render_post_height_scale,
0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, taa_blend);
gl_state_end_event();
}
if (taa) {
@@ -427,8 +429,8 @@ namespace rndr {
s0 -= s1;
t0 -= t1;
float_t w = (float_t)max_def(width, 1);
float_t h = (float_t)max_def(height, 1);
const float_t w = (float_t)max_def(width, 1);
const float_t h = (float_t)max_def(height, 1);
quad_shader_data quad = {};
quad.g_texcoord_modifier = { 0.5f * s0, 0.5f * t0, 0.5f * s0 + s1, 0.5f * t0 + t1 }; // x * 0.5 * y0 + 0.5 * y0 + y1
quad.g_texel_size = { scale / w, scale / h, w, h };
+4 -16
View File
@@ -1080,9 +1080,6 @@ namespace rndr {
star_catalog_draw();
draw_pass_3d_translucent(rctx,
draw_pass_3d[DRAW_PASS_3D_OPAQUE],
draw_pass_3d[DRAW_PASS_3D_TRANSPARENT],
draw_pass_3d[DRAW_PASS_3D_TRANSLUCENT],
mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_3,
mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_3,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3);
@@ -1121,9 +1118,6 @@ namespace rndr {
gl_state_set_depth_mask(GL_TRUE);
draw_pass_3d_translucent(rctx,
draw_pass_3d[DRAW_PASS_3D_OPAQUE],
draw_pass_3d[DRAW_PASS_3D_TRANSPARENT],
draw_pass_3d[DRAW_PASS_3D_TRANSLUCENT],
mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_2,
mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_2,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2);
@@ -1136,9 +1130,6 @@ namespace rndr {
gl_state_enable_depth_test();
gl_state_set_depth_mask(GL_TRUE);
draw_pass_3d_translucent(rctx,
draw_pass_3d[DRAW_PASS_3D_OPAQUE],
draw_pass_3d[DRAW_PASS_3D_TRANSPARENT],
draw_pass_3d[DRAW_PASS_3D_TRANSLUCENT],
mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_1,
mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_1,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1);
@@ -1156,9 +1147,6 @@ namespace rndr {
gl_state_disable_blend();
draw_pass_3d_translucent(rctx,
draw_pass_3d[DRAW_PASS_3D_OPAQUE],
draw_pass_3d[DRAW_PASS_3D_TRANSPARENT],
draw_pass_3d[DRAW_PASS_3D_TRANSLUCENT],
mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_2_LOCAL,
mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_2_LOCAL,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2_LOCAL);
@@ -1987,11 +1975,11 @@ static void draw_pass_3d_translucent(render_context* rctx, bool opaque_enable,
for (int32_t i = 0; i < count; i++) {
int32_t alpha = alpha_array[i];
rend->transparency_copy();
if (opaque_enable && rctx->disp_manager->get_obj_count(opaque))
if (rctx->render_manager->draw_pass_3d[DRAW_PASS_3D_OPAQUE] && rctx->disp_manager->get_obj_count(opaque))
rctx->disp_manager->draw(opaque, 0, true, alpha);
if (transparent_enable && rctx->disp_manager->get_obj_count(transparent))
if (rctx->render_manager->draw_pass_3d[DRAW_PASS_3D_TRANSPARENT] && rctx->disp_manager->get_obj_count(transparent))
rctx->disp_manager->draw(transparent, 0, true, alpha);
if (translucent_enable && rctx->disp_manager->get_obj_count(translucent)) {
if (rctx->render_manager->draw_pass_3d[DRAW_PASS_3D_TRANSLUCENT] && rctx->disp_manager->get_obj_count(translucent)) {
gl_state_enable_blend();
rctx->disp_manager->draw(translucent, 0, true, alpha);
gl_state_disable_blend();
@@ -2003,7 +1991,7 @@ static void draw_pass_3d_translucent(render_context* rctx, bool opaque_enable,
static int32_t draw_pass_3d_translucent_count_layers(render_context* rctx,
int32_t* alpha_array, mdl::ObjType opaque,
mdl::ObjType transparent, mdl::ObjType translucent) {
bool arr[256] = { 0 };
bool arr[0x100] = { false };
draw_pass_3d_translucent_has_objects(rctx, arr, opaque);
draw_pass_3d_translucent_has_objects(rctx, arr, transparent);
+8
View File
@@ -10,6 +10,14 @@
#include "../KKdLib/vec.hpp"
#include "static_var.hpp"
enum blur_filter_mode {
BLUR_FILTER_4 = 0x00,
BLUR_FILTER_9 = 0x01,
BLUR_FILTER_16 = 0x02,
BLUR_FILTER_32 = 0x03,
BLUR_FILTER_MAX = 0x04,
};
extern void fbo_blit(GLuint src_fbo, GLuint dst_fbo,
GLint src_x, GLint src_y, GLint src_width, GLint src_height,
GLint dst_x, GLint dst_y, GLint dst_width, GLint dst_height, GLbitfield mask, GLenum filter);
-8
View File
@@ -12,14 +12,6 @@
#include "../KKdLib/vec.hpp"
#include "gl.hpp"
enum blur_filter_mode {
BLUR_FILTER_4 = 0,
BLUR_FILTER_9,
BLUR_FILTER_16,
BLUR_FILTER_32,
BLUR_FILTER_MAX,
};
enum draw_pass_3d_type {
DRAW_PASS_3D_OPAQUE = 0,
DRAW_PASS_3D_TRANSLUCENT,