diff --git a/src/DivaGL/camera.cpp b/src/DivaGL/camera.cpp index 8a44e03..81257e0 100644 --- a/src/DivaGL/camera.cpp +++ b/src/DivaGL/camera.cpp @@ -67,7 +67,7 @@ HOOK(void, FASTCALL, camera_data_update_projection, 0x00000001401F8E90) { &camera_data->view_projection_aet_3d_matrix); render->calc_projection_matrix(&camera_data->projection_matrix, - camera_data->fov, camera_data->aspect, camera_data->min_distance, camera_data->max_distance, + camera_data->fov, (float_t)camera_data->aspect, camera_data->min_distance, camera_data->max_distance, camera_data->projection_scale.x, camera_data->projection_scale.y, camera_data->projection_scale.z, camera_data->projection_scale.w); camera_data->fov_horizontal_rad = tanf(camera_data->fov * 0.5f * DEG_TO_RAD_FLOAT); diff --git a/src/DivaGL/render.cpp b/src/DivaGL/render.cpp index 4d499e5..49c1243 100644 --- a/src/DivaGL/render.cpp +++ b/src/DivaGL/render.cpp @@ -277,18 +277,18 @@ namespace rndr { gl_state_enable_cull_face(); } - void Render::calc_projection_matrix(mat4* mat, double_t fov, double_t aspect, double_t z_near, double_t z_far, - double_t left_scale, double_t right_scale, double_t bottom_scale, double_t top_scale) { - double_t tan_fov = tan(fov * DEG_TO_RAD * 0.5) * z_near; - double_t left = -tan_fov * aspect + tan_fov * aspect * left_scale; - double_t right = tan_fov * aspect + tan_fov * aspect * right_scale; - double_t bottom = -tan_fov + tan_fov * bottom_scale; - double_t top = tan_fov + tan_fov * top_scale; + void Render::calc_projection_matrix(mat4* mat, float_t fov, float_t aspect, float_t z_near, float_t z_far, + float_t left_scale, float_t right_scale, float_t bottom_scale, float_t top_scale) { + float_t tan_fov = tanf(fov * DEG_TO_RAD_FLOAT * 0.5f) * z_near; + float_t left = -tan_fov * aspect + tan_fov * aspect * left_scale; + float_t right = tan_fov * aspect + tan_fov * aspect * right_scale; + float_t bottom = -tan_fov + tan_fov * bottom_scale; + float_t top = tan_fov + tan_fov * top_scale; if (taa) { - double_t offset = taa_texture_selector == 1 ? -0.25 : 0.25; - double_t left_right_offset = (right - left) * offset / (double_t)render_width[0]; - double_t bottom_top_offset = (top - bottom) * offset / (double_t)render_height[0]; + float_t offset = taa_texture_selector == 1 ? -0.25f : 0.25f; + float_t left_right_offset = (right - left) * offset / (float_t)render_width[0]; + float_t bottom_top_offset = (top - bottom) * offset / (float_t)render_height[0]; left += left_right_offset; right += left_right_offset; bottom += bottom_top_offset; diff --git a/src/DivaGL/render.hpp b/src/DivaGL/render.hpp index e214923..d038ce0 100644 --- a/src/DivaGL/render.hpp +++ b/src/DivaGL/render.hpp @@ -176,8 +176,8 @@ namespace rndr { void apply_post_process(); void bind_render_texture(bool aet_back = false); void calc_exposure_chara_data(); - void calc_projection_matrix(mat4* mat, double_t fov, double_t aspect, double_t z_near, double_t z_far, - double_t left_scale, double_t right_scale, double_t bottom_scale, double_t top_scale); + void calc_projection_matrix(mat4* mat, float_t fov, float_t aspect, float_t z_near, float_t z_far, + float_t left_scale, float_t right_scale, float_t bottom_scale, float_t top_scale); void ctrl(); void draw_quad(int32_t width, int32_t height, float_t s0, float_t t0, float_t s1, float_t t1, float_t scale, float_t param_x, float_t param_y, float_t param_z, float_t param_w); diff --git a/src/DivaGL/sprite.cpp b/src/DivaGL/sprite.cpp index 811d0a2..1e51a05 100644 --- a/src/DivaGL/sprite.cpp +++ b/src/DivaGL/sprite.cpp @@ -277,7 +277,7 @@ namespace spr { float_t v15b = sprite_half_height * 0.2f * aet_depth_1; mat4 proj; - mat4_frustrum(-v15a, v15a, v15b, -v15b, 0.2, 3000.0, &proj); + mat4_frustrum(-v15a, v15a, v15b, -v15b, 0.2f, 3000.0f, &proj); vec3 eye = { sprite_half_width, sprite_half_height, aet_depth }; vec3 target = { sprite_half_width, sprite_half_height, 0.0f }; diff --git a/src/DivaGL/wrap.cpp b/src/DivaGL/wrap.cpp index 7779511..d54a765 100644 --- a/src/DivaGL/wrap.cpp +++ b/src/DivaGL/wrap.cpp @@ -1804,7 +1804,7 @@ void GLAPIENTRY glFrontFaceDLL(GLenum mode) { void GLAPIENTRY glFrustumDLL(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { mat4 mat; - mat4_frustrum(left, right, bottom, top, zNear, zFar, &mat); + mat4_frustrum((float_t)left, (float_t)right, (float_t)bottom, (float_t)top, (float_t)zNear, (float_t)zFar, &mat); mat4_transpose(&mat, &mat); glMultTransposeMatrixf((const GLfloat*)&mat); //((PFNGLFRUSTUMDLLPROC)wrap_addr_dll[GLFRUSTUMDLL].orig_func)(left, right, bottom, top, zNear, zFar); @@ -1899,7 +1899,7 @@ void GLAPIENTRY glNormalPointerDLL(GLenum type, GLsizei stride, const void * poi void GLAPIENTRY glOrthoDLL(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { mat4 mat; - mat4_ortho(left, right, bottom, top, zNear, zFar, &mat); + mat4_ortho((float_t)left, (float_t)right, (float_t)bottom, (float_t)top, (float_t)zNear, (float_t)zFar, &mat); mat4_transpose(&mat, &mat); glMultTransposeMatrixf((const GLfloat*)&mat); //((PFNGLORTHODLLPROC)wrap_addr_dll[GLORTHODLL].orig_func)(left, right, bottom, top, zNear, zFar); diff --git a/src/KKdLib/mat.cpp b/src/KKdLib/mat.cpp index 969b331..9e9c7d8 100644 --- a/src/KKdLib/mat.cpp +++ b/src/KKdLib/mat.cpp @@ -1933,39 +1933,39 @@ void mat4_lerp_rotation(const mat4* in_m1, const mat4* in_m2, mat4* out_m, float *(vec3*)&out_m->row2 = m2; } -inline void mat4_frustrum(double_t left, double_t right, - double_t bottom, double_t top, double_t z_near, double_t z_far, mat4* out_m) { +inline void mat4_frustrum(float_t left, float_t right, + float_t bottom, float_t top, float_t z_near, float_t z_far, mat4* out_m) { *out_m = mat4_null; - out_m->row0.x = (float_t)((2.0 * z_near) / (right - left)); - out_m->row1.y = (float_t)((2.0 * z_near) / (top - bottom)); - out_m->row2.x = (float_t)((right + left) / (right - left)); - out_m->row2.y = (float_t)((top + bottom) / (top - bottom)); - out_m->row2.z = -(float_t)((z_far + z_near) / (z_far - z_near)); + out_m->row0.x = (2.0f * z_near) / (right - left); + out_m->row1.y = (2.0f * z_near) / (top - bottom); + out_m->row2.x = (right + left) / (right - left); + out_m->row2.y = (top + bottom) / (top - bottom); + out_m->row2.z = -((z_far + z_near) / (z_far - z_near)); out_m->row2.w = -1.0f; - out_m->row3.z = -(float_t)((2.0 * z_far * z_near) / (z_far - z_near)); + out_m->row3.z = -((2.0f * z_far * z_near) / (z_far - z_near)); } -inline void mat4_ortho(double_t left, double_t right, - double_t bottom, double_t top, double_t z_near, double_t z_far, mat4* out_m) { +inline void mat4_ortho(float_t left, float_t right, + float_t bottom, float_t top, float_t z_near, float_t z_far, mat4* out_m) { *out_m = mat4_null; - out_m->row0.x = (float_t)(2.0 / (right - left)); - out_m->row1.y = (float_t)(2.0 / (top - bottom)); - out_m->row2.z = (float_t)(-2.0 / (z_far - z_near)); - out_m->row3.x = -(float_t)((right + left) / (right - left)); - out_m->row3.y = -(float_t)((top + bottom) / (top - bottom)); - out_m->row3.z = -(float_t)((z_far + z_near) / (z_far - z_near)); + out_m->row0.x = 2.0f / (right - left); + out_m->row1.y = 2.0f / (top - bottom); + out_m->row2.z = -2.0f / (z_far - z_near); + out_m->row3.x = -((right + left) / (right - left)); + out_m->row3.y = -((top + bottom) / (top - bottom)); + out_m->row3.z = -((z_far + z_near) / (z_far - z_near)); out_m->row3.w = 1.0f; } -inline void mat4_persp(double_t fov_y, double_t aspect, double_t z_near, double_t z_far, mat4* out_m) { - double_t tan_fov = tan(fov_y * 0.5); +inline void mat4_persp(float_t fov_y, float_t aspect, float_t z_near, float_t z_far, mat4* out_m) { + float_t tan_fov = tanf(fov_y * 0.5f); *out_m = mat4_null; - out_m->row0.x = (float_t)(1.0 / (aspect * tan_fov)); - out_m->row1.y = (float_t)(1.0 / tan_fov); - out_m->row2.z = -(float_t)((z_far + z_near) / (z_far - z_near)); + out_m->row0.x = 1.0f / (aspect * tan_fov); + out_m->row1.y = 1.0f / tan_fov; + out_m->row2.z = -(z_far + z_near) / (z_far - z_near); out_m->row2.w = -1.0f; - out_m->row3.z = -(float_t)((2.0 * z_far * z_near) / (z_far - z_near)); + out_m->row3.z = -((2.0f * z_far * z_near) / (z_far - z_near)); } inline void mat4_look_at(const vec3* eye, const vec3* target, const vec3* up, mat4* out_m) { diff --git a/src/KKdLib/mat.hpp b/src/KKdLib/mat.hpp index 4f0cde1..194c936 100644 --- a/src/KKdLib/mat.hpp +++ b/src/KKdLib/mat.hpp @@ -196,11 +196,11 @@ extern float_t mat4_get_max_scale(const mat4* in_m1); extern void mat4_blend(const mat4* in_m1, const mat4* in_m2, mat4* out_m, float_t blend); extern void mat4_blend_rotation(const mat4* in_m1, const mat4* in_m2, mat4* out_m, float_t blend); extern void mat4_lerp_rotation(const mat4* in_m1, const mat4* in_m2, mat4* out_m, float_t blend); -extern void mat4_frustrum(double_t left, double_t right, - double_t bottom, double_t top, double_t z_near, double_t z_far, mat4* out_m); -extern void mat4_ortho(double_t left, double_t right, - double_t bottom, double_t top, double_t z_near, double_t z_far, mat4* out_m); -extern void mat4_persp(double_t fov_y, double_t aspect, double_t z_near, double_t z_far, mat4* out_m); +extern void mat4_frustrum(float_t left, float_t right, + float_t bottom, float_t top, float_t z_near, float_t z_far, mat4* out_m); +extern void mat4_ortho(float_t left, float_t right, + float_t bottom, float_t top, float_t z_near, float_t z_far, mat4* out_m); +extern void mat4_persp(float_t fov_y, float_t aspect, float_t z_near, float_t z_far, mat4* out_m); extern void mat4_look_at(const vec3* eye, const vec3* target, const vec3* up, mat4* out_m); extern void mat4_look_at(const vec3* eye, const vec3* target, mat4* out_m);