public void RenderToDepth(System.Numerics.Vector3 LightPos) { GL.Viewport(0, 0, SHADOW_WIDTH, SHADOW_HEIGHT); var aspect = (float)SHADOW_WIDTH / SHADOW_HEIGHT; GL.BindFramebuffer(FramebufferTarget.Framebuffer, DepthMapFBO); GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); var near = 1.0f; var far = 25.0f; Matrix4 shadProj = Matrix4.CreatePerspectiveFieldOfView( GLHelper.DegRad(90.0f), aspect, near, far); // THIS NEEDS TO BE 90! I might make it a var anyway for shits and giggles List <Matrix4> Transforms = new(); Vector3 right = new(1.0f, 0.0f, 0.0f); Vector3 left = new(-1.0f, 0.0f, 0.0f); Vector3 up = new(0.0f, 1.0f, 0.0f); Vector3 down = new(0.0f, -1.0f, 0.0f); Vector3 forward = new(0.0f, 0.0f, 1.0f); Vector3 back = new(0.0f, 0.0f, -1.0f); var lptk = LightPos.ToOpenTK(); Transforms.Add( shadProj * Matrix4.LookAt( lptk, lptk + right, down)); Transforms.Add( shadProj * Matrix4.LookAt( lptk, lptk + left, down)); Transforms.Add( shadProj * Matrix4.LookAt( lptk, lptk + up, forward)); Transforms.Add( shadProj * Matrix4.LookAt( lptk, lptk + down, back)); Transforms.Add( shadProj * Matrix4.LookAt( lptk, lptk + forward, down)); Transforms.Add( shadProj * Matrix4.LookAt( lptk, lptk + back, down)); GL.BindTexture(TextureTarget.TextureCubeMap, Cubemap); ECSScene.ExplicitRender(); GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0); }
public Matrix4 Projection() { return(Matrix4.CreatePerspectiveFieldOfView(GLHelper.DegRad(FieldOfView), Engine.Width / Engine.Height, 0.1f, 1000f)); }