@@ -816,6 +816,7 @@ Vector<int> Voxelizer::get_voxel_gi_level_cell_count() const {
816816// https://prideout.net/blog/distance_fields/
817817
818818#define square (m_s ) ((m_s) * (m_s))
819+ #define BIG_VAL 1e20
819820
820821/* dt of 1d function using squared distance */
821822static void edt (float *f, int stride, int n) {
@@ -825,8 +826,8 @@ static void edt(float *f, int stride, int n) {
825826
826827 int k = 0 ;
827828 v[0 ] = 0 ;
828- z[0 ] = -Math::INF ;
829- z[1 ] = +Math::INF ;
829+ z[0 ] = -BIG_VAL ;
830+ z[1 ] = +BIG_VAL ;
830831 for (int q = 1 ; q <= n - 1 ; q++) {
831832 float s = ((f[q * stride] + square (q)) - (f[v[k] * stride] + square (v[k]))) / (2 * q - 2 * v[k]);
832833 while (s <= z[k]) {
@@ -837,7 +838,7 @@ static void edt(float *f, int stride, int n) {
837838 v[k] = q;
838839
839840 z[k] = s;
840- z[k + 1 ] = +Math::INF ;
841+ z[k + 1 ] = +BIG_VAL ;
841842 }
842843
843844 k = 0 ;
@@ -861,7 +862,7 @@ Voxelizer::BakeResult Voxelizer::get_sdf_3d_image(Vector<uint8_t> &r_image, Bake
861862 uint32_t float_count = octree_size.x * octree_size.y * octree_size.z ;
862863 float *work_memory = memnew_arr (float , float_count);
863864 for (uint32_t i = 0 ; i < float_count; i++) {
864- work_memory[i] = Math::INF ;
865+ work_memory[i] = BIG_VAL ;
865866 }
866867
867868 uint32_t y_mult = octree_size.x ;
@@ -944,6 +945,8 @@ Voxelizer::BakeResult Voxelizer::get_sdf_3d_image(Vector<uint8_t> &r_image, Bake
944945 return BAKE_RESULT_OK;
945946}
946947
948+ #undef BIG_VAL
949+
947950void Voxelizer::_debug_mesh (int p_idx, int p_level, const AABB &p_aabb, Ref<MultiMesh> &p_multimesh, int &idx) {
948951 if (p_level == cell_subdiv - 1 ) {
949952 Vector3 center = p_aabb.get_center ();
0 commit comments