From 04db6b0ccd81d988cfe3a1d09e4eb00eeea77273 Mon Sep 17 00:00:00 2001 From: quou Date: Sat, 22 Feb 2025 17:01:35 +1100 Subject: basic shadows --- camera.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'camera.cpp') diff --git a/camera.cpp b/camera.cpp index 59a604e..a224fb3 100644 --- a/camera.cpp +++ b/camera.cpp @@ -9,6 +9,30 @@ void Camera::init(float vfov, const v3f& f, const v3f& p) { asp = 1.0f; } +void Camera::init_shadow( + const v3f& dir, + const v3f& mic, + const v3f& mac +) { + v3f up(0.0f, 1.0f, 0.0f); + AABB aabb = { mic, mac }; + init(0.0f, dir, v3f(0.0f)); + view = m4f::lookat( + dir, + v3f(0.0f), + up + ); + aabb = m4f::transform(view, aabb); + proj = m4f::orth( + aabb.min.x, + aabb.max.x, + aabb.max.y, + aabb.min.y, + aabb.min.z, + aabb.max.z + ); +} + void Camera::update() { v3f up(0.0f, 1.0f, 0.0f); view = m4f::lookat(position, position + forward, up); -- cgit v1.2.3-54-g00ecf