Graphics: Rework shadowing (add cascaded shadow mapping)

- Add support for per-viewer shadows
- Add cascaded shadow mapping for directional lights (wip)
- Rework the way lights are sent to the shaders (they are now selected once per viewer)
- Fixes PointLight shadow mapping (using a dedicated pass)
- Lights out of frustum for every viewers are no longer processed (wip)
This commit is contained in:
SirLynix
2023-09-06 13:20:52 +02:00
committed by Jérôme Leclercq
parent a08850946a
commit 9aebb4f745
41 changed files with 1320 additions and 576 deletions

View File

@@ -56,6 +56,11 @@ namespace Nz
constexpr IntersectionSide Intersect(const Sphere<T>& sphere) const;
constexpr IntersectionSide Intersect(const Vector3<T>* points, std::size_t pointCount) const;
constexpr Frustum<T> Reduce(T nearFactor, T farFactor) const;
template<typename F> constexpr void Split(std::initializer_list<T> splitFactors, F&& callback) const;
template<typename F> constexpr void Split(const T* splitFactors, std::size_t factorCount, F&& callback) const;
std::string ToString() const;
constexpr Frustum& operator=(const Frustum&) = default;