public Matrix4 MapSingle(ShadowMapQuality quality, TransformationManager transformation, float angle, float cutoff) { Camera last = Camera.Current; SingleCamera.UpdatePerspective(1, angle, 0.01f, cutoff); SingleCamera.Transformation = transformation; SingleCamera.Update(); SingleCamera.Transformation.ClearModifiedFlag(); Camera.Current = SingleCamera; if (quality == ShadowMapQuality.High) { SpotHighQuality.Use(); } if (quality == ShadowMapQuality.Medium) { SpotMediumQuality.Use(); } if (quality == ShadowMapQuality.Low) { SpotLowQuality.Use(); } RenderWorld(); Camera.Current = last; return(SingleCamera.GetVPMatrix()); }
public void UseTextureCube(ShadowMapQuality quality, int index) { if (quality == ShadowMapQuality.High) { CubeHighQuality.UseTexture(index); } if (quality == ShadowMapQuality.Medium) { CubeMediumQuality.UseTexture(index); } if (quality == ShadowMapQuality.Low) { CubeLowQuality.UseTexture(index); } }
public void UseTextureSingle(ShadowMapQuality quality, int index) { if (quality == ShadowMapQuality.High) { SpotHighQuality.UseTexture(index); } if (quality == ShadowMapQuality.Medium) { SpotMediumQuality.UseTexture(index); } if (quality == ShadowMapQuality.Low) { SpotLowQuality.UseTexture(index); } }
public void MapCube(ShadowMapQuality quality, TransformationManager transformation, float cutoff) { Camera last = Camera.Current; CubeMapDepthFramebuffer cfb = null; if (quality == ShadowMapQuality.High) { cfb = CubeHighQuality; } if (quality == ShadowMapQuality.Medium) { cfb = CubeMediumQuality; } if (quality == ShadowMapQuality.Low) { cfb = CubeLowQuality; } cfb.UpdateFarPlane(cutoff); cfb.Use(); cfb.Clear(); cfb.SetPosition(transformation.Position); cfb.SwitchCameraAndFace(OpenTK.Graphics.OpenGL4.TextureTarget.TextureCubeMapPositiveX); RenderWorld(); cfb.SwitchCameraAndFace(OpenTK.Graphics.OpenGL4.TextureTarget.TextureCubeMapPositiveY); RenderWorld(); cfb.SwitchCameraAndFace(OpenTK.Graphics.OpenGL4.TextureTarget.TextureCubeMapPositiveZ); RenderWorld(); cfb.SwitchCameraAndFace(OpenTK.Graphics.OpenGL4.TextureTarget.TextureCubeMapNegativeX); RenderWorld(); cfb.SwitchCameraAndFace(OpenTK.Graphics.OpenGL4.TextureTarget.TextureCubeMapNegativeY); RenderWorld(); cfb.SwitchCameraAndFace(OpenTK.Graphics.OpenGL4.TextureTarget.TextureCubeMapNegativeZ); RenderWorld(); Camera.Current = last; }