From 8cb760171745a7bc75ff56d88f0773dc55e2f2e3 Mon Sep 17 00:00:00 2001 From: cosmonaut Date: Sat, 19 Sep 2020 01:06:08 -0700 Subject: [PATCH] clean up renderer a bit + README --- README.md | 24 ++++++++++++++++++++++++ Renderer.cs | 25 ------------------------- 2 files changed, 24 insertions(+), 25 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..c5dff2d --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# Kav + +A 3D renderer built on top of FNA. + +## Roadmap + +Essential + +- [x] PBR shading +- [x] Deferred rendering +- [x] Point lighting +- [x] Directional lighting +- [x] Directional shadow maps +- [x] Cascading shadow maps +- [ ] Frustum culling +- [ ] Shadow-casting point lights +- [ ] Parabolic lights +- [ ] Skyboxes +- [ ] Screen-space reflection + +Nice-To-Haves + +- [ ] Volumetric lighting +- [ ] Volumetric smoke diff --git a/Renderer.cs b/Renderer.cs index b16a3b7..b99fe02 100644 --- a/Renderer.cs +++ b/Renderer.cs @@ -210,32 +210,7 @@ namespace Kav IEnumerable<(Model, Matrix)> modelTransforms, DirectionalLight directionalLight ) { - // set up global light matrix - - var right = Vector3.Cross(Vector3.Up, directionalLight.Direction); - var up = Vector3.Cross(directionalLight.Direction, right); - var cameraBoundingFrustum = new BoundingFrustum(camera.View * camera.Projection); - Vector3[] frustumCorners = cameraBoundingFrustum.GetCorners(); - - Vector3 frustumCenter = Vector3.Zero; - for (var i = 0; i < frustumCorners.Length; i++) - { - frustumCenter += frustumCorners[i]; - } - frustumCenter /= 8f; - - var lightView = Matrix.CreateLookAt(frustumCenter, frustumCenter - directionalLight.Direction, camera.View.Right); - - for (var i = 0; i < frustumCorners.Length; i++) - { - frustumCorners[i] = Vector3.Transform(frustumCorners[i], lightView); - } - - BoundingBox lightBox = BoundingBox.CreateFromPoints(frustumCorners); - Vector3 lightPosition = frustumCenter + directionalLight.Direction * -lightBox.Min.Z; - // render the individual shadow maps - var previousFarPlane = camera.NearPlane; for (var i = 0; i < NumShadowCascades; i++) {