Пример #1
0
        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());
        }
Пример #2
0
 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);
     }
 }
Пример #3
0
 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);
     }
 }
Пример #4
0
        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;
        }