feat: modules moved and engine moved to submodule
This commit is contained in:
parent
dfb5e645cd
commit
c33d2130cc
5136 changed files with 225275 additions and 64485 deletions
|
|
@ -86,7 +86,7 @@ void Voxelizer::_plot_face(int p_idx, int p_level, int p_x, int p_y, int p_z, co
|
|||
for (int i = 0; i < 3; i++) {
|
||||
Vector3 axis;
|
||||
axis[i] = 1.0;
|
||||
real_t dot = ABS(normal.dot(axis));
|
||||
real_t dot = Math::abs(normal.dot(axis));
|
||||
if (i == 0 || dot > closest_dot) {
|
||||
closest_axis = i;
|
||||
closest_dot = dot;
|
||||
|
|
@ -136,7 +136,7 @@ void Voxelizer::_plot_face(int p_idx, int p_level, int p_x, int p_y, int p_z, co
|
|||
Vector3 intersection;
|
||||
|
||||
if (!plane.intersects_segment(ray_from, ray_to, &intersection)) {
|
||||
if (ABS(plane.distance_to(ray_from)) < ABS(plane.distance_to(ray_to))) {
|
||||
if (Math::abs(plane.distance_to(ray_from)) < Math::abs(plane.distance_to(ray_to))) {
|
||||
intersection = plane.project(ray_from);
|
||||
} else {
|
||||
intersection = plane.project(ray_to);
|
||||
|
|
@ -399,6 +399,9 @@ int Voxelizer::get_bake_steps(Ref<Mesh> &p_mesh) const {
|
|||
Voxelizer::BakeResult Voxelizer::plot_mesh(const Transform3D &p_xform, Ref<Mesh> &p_mesh, const Vector<Ref<Material>> &p_materials, const Ref<Material> &p_override_material, BakeStepFunc p_bake_step_func) {
|
||||
ERR_FAIL_COND_V_MSG(!p_xform.is_finite(), BAKE_RESULT_INVALID_PARAMETER, "Invalid mesh bake transform.");
|
||||
|
||||
// Precalculate for transforming vertex normals
|
||||
Basis normal_xform = p_xform.basis.inverse().transposed();
|
||||
|
||||
int bake_total = get_bake_steps(p_mesh), bake_current = 0;
|
||||
|
||||
for (int i = 0; i < p_mesh->get_surface_count(); i++) {
|
||||
|
|
@ -463,7 +466,7 @@ Voxelizer::BakeResult Voxelizer::plot_mesh(const Transform3D &p_xform, Ref<Mesh>
|
|||
|
||||
if (nr) {
|
||||
for (int k = 0; k < 3; k++) {
|
||||
normal[k] = nr[ir[j * 3 + k]];
|
||||
normal[k] = normal_xform.xform(nr[ir[j * 3 + k]]).normalized();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -813,7 +816,6 @@ Vector<int> Voxelizer::get_voxel_gi_level_cell_count() const {
|
|||
// https://prideout.net/blog/distance_fields/
|
||||
|
||||
#define square(m_s) ((m_s) * (m_s))
|
||||
#define INF 1e20
|
||||
|
||||
/* dt of 1d function using squared distance */
|
||||
static void edt(float *f, int stride, int n) {
|
||||
|
|
@ -823,8 +825,8 @@ static void edt(float *f, int stride, int n) {
|
|||
|
||||
int k = 0;
|
||||
v[0] = 0;
|
||||
z[0] = -INF;
|
||||
z[1] = +INF;
|
||||
z[0] = -Math::INF;
|
||||
z[1] = +Math::INF;
|
||||
for (int q = 1; q <= n - 1; q++) {
|
||||
float s = ((f[q * stride] + square(q)) - (f[v[k] * stride] + square(v[k]))) / (2 * q - 2 * v[k]);
|
||||
while (s <= z[k]) {
|
||||
|
|
@ -835,7 +837,7 @@ static void edt(float *f, int stride, int n) {
|
|||
v[k] = q;
|
||||
|
||||
z[k] = s;
|
||||
z[k + 1] = +INF;
|
||||
z[k + 1] = +Math::INF;
|
||||
}
|
||||
|
||||
k = 0;
|
||||
|
|
@ -859,7 +861,7 @@ Voxelizer::BakeResult Voxelizer::get_sdf_3d_image(Vector<uint8_t> &r_image, Bake
|
|||
uint32_t float_count = octree_size.x * octree_size.y * octree_size.z;
|
||||
float *work_memory = memnew_arr(float, float_count);
|
||||
for (uint32_t i = 0; i < float_count; i++) {
|
||||
work_memory[i] = INF;
|
||||
work_memory[i] = Math::INF;
|
||||
}
|
||||
|
||||
uint32_t y_mult = octree_size.x;
|
||||
|
|
@ -942,8 +944,6 @@ Voxelizer::BakeResult Voxelizer::get_sdf_3d_image(Vector<uint8_t> &r_image, Bake
|
|||
return BAKE_RESULT_OK;
|
||||
}
|
||||
|
||||
#undef INF
|
||||
|
||||
void Voxelizer::_debug_mesh(int p_idx, int p_level, const AABB &p_aabb, Ref<MultiMesh> &p_multimesh, int &idx) {
|
||||
if (p_level == cell_subdiv - 1) {
|
||||
Vector3 center = p_aabb.get_center();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue