From 201d606b3d348c3287f3d57d25e6eced298c2df5 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Thu, 25 Jun 2020 10:33:28 -0300 Subject: Addition of SDFGI for open world global illumination Move GI to a deferred pass --- core/local_vector.h | 8 ++++++++ core/math/basis.cpp | 2 +- core/math/geometry_3d.cpp | 2 ++ core/math/geometry_3d.h | 10 ++++++++++ core/variant_op.cpp | 1 + 5 files changed, 22 insertions(+), 1 deletion(-) (limited to 'core') diff --git a/core/local_vector.h b/core/local_vector.h index 7f96b25f8b..d97f3330dc 100644 --- a/core/local_vector.h +++ b/core/local_vector.h @@ -45,6 +45,14 @@ private: T *data = nullptr; public: + T *ptr() { + return data; + } + + const T *ptr() const { + return data; + } + _FORCE_INLINE_ void push_back(T p_elem) { if (unlikely(count == capacity)) { if (capacity == 0) { diff --git a/core/math/basis.cpp b/core/math/basis.cpp index df5199b0f9..dd38e25bb1 100644 --- a/core/math/basis.cpp +++ b/core/math/basis.cpp @@ -773,7 +773,7 @@ Basis::operator String() const { mtx += ", "; } - mtx += rtos(elements[i][j]); + mtx += rtos(elements[j][i]); //matrix is stored transposed for performance, so print it transposed } } diff --git a/core/math/geometry_3d.cpp b/core/math/geometry_3d.cpp index 7eef94c269..7807ab19a7 100644 --- a/core/math/geometry_3d.cpp +++ b/core/math/geometry_3d.cpp @@ -993,6 +993,8 @@ Vector Geometry3D::generate_edf(const Vector &p_voxels, const Ve } } + memdelete_arr(work_memory); + return ret; } diff --git a/core/math/geometry_3d.h b/core/math/geometry_3d.h index 64cd34892e..6bbf518141 100644 --- a/core/math/geometry_3d.h +++ b/core/math/geometry_3d.h @@ -945,6 +945,16 @@ public: return Color(va6 * v6, vb6 * v6, vc6 * v6, vd6 * v6); #undef STP } + + _FORCE_INLINE_ static Vector3 octahedron_map_decode(const Vector2 &p_uv) { + // https://twitter.com/Stubbesaurus/status/937994790553227264 + Vector2 f = p_uv * 2.0 - Vector2(1.0, 1.0); + Vector3 n = Vector3(f.x, f.y, 1.0f - Math::abs(f.x) - Math::abs(f.y)); + float t = CLAMP(-n.z, 0.0, 1.0); + n.x += n.x >= 0 ? -t : t; + n.y += n.y >= 0 ? -t : t; + return n.normalized(); + } }; #endif // GEOMETRY_3D_H diff --git a/core/variant_op.cpp b/core/variant_op.cpp index 2c79e2029e..0c9a4a992a 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -1786,6 +1786,7 @@ Variant Variant::get_named(const StringName &p_index, bool *r_valid) const { if (r_valid) { *r_valid = true; } + switch (type) { case VECTOR2: { const Vector2 *v = reinterpret_cast(_data._mem); -- cgit v1.2.3