Ejemplo n.º 1
0
        public override void SetParameter(BillboardRenderParameter p)
        {
            var param = p as ToneMappingRenderParameter;
            if (param == null)
            {
                return;
            }

            RenderParam = param;
        }
Ejemplo n.º 2
0
        void InitRender()
        {
            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.ShadowMap0,
                GameProperty.resolutionWidth,
                GameProperty.resolutionHeight,
                SurfaceType.R32F,
                true, true);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.DiffuseLightMap,
                GameProperty.resolutionWidth,
                GameProperty.resolutionHeight,
                SurfaceType.A8R8G8B8,
                true, true);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.SpecularLightMap,
                GameProperty.resolutionWidth,
                GameProperty.resolutionHeight,
                SurfaceType.A8R8G8B8,
                false, false);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.GBuffer0,
                GameProperty.resolutionWidth,
                GameProperty.resolutionHeight,
                SurfaceType.A8R8G8B8,
                false, false);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.GBuffer1,
                GameProperty.resolutionWidth,
                GameProperty.resolutionHeight,
                SurfaceType.R32F,
                false, false);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.HDRBuffer,
                GameProperty.resolutionWidth,
                GameProperty.resolutionHeight,
                SurfaceType.A8R8G8B8,
                true, true);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.ScaledBuffer,
                GameProperty.resolutionWidth / 4,
                GameProperty.resolutionHeight / 4,
                SurfaceType.A8R8G8B8,
                false, false);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.LuminanceBuffer64,
                64,
                64,
                SurfaceType.R16F,
                false, false);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.LuminanceBuffer16,
                16,
                16,
                SurfaceType.R16F,
                false, false);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.LuminanceBuffer4,
                4,
                4,
                SurfaceType.R16F,
                false, false);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.LuminanceBuffer1,
                1,
                1,
                SurfaceType.R16F,
                false, false);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.AdaptedLuminanceBuffer0,
                1,
                1,
                SurfaceType.R16F,
                false, false);

            RenderTargetManager.Instance.AddRenderTarget(
                (int)RenderTargetType.AdaptedLuminanceBuffer1,
                1,
                1,
                SurfaceType.R16F,
                false, false);

            RenderManagerAccessor.Instance.AddPath(
                (int)RenderPathType.SHADOW,
                new ShadowMapRenderPath()
                {
                    //Enabled = false,
                    Name = "ShadowMap",
                    RenderDevice = RenderDeviceFactory.Instance.Create(),
                    RenderTargetIndex = (int)RenderTargetType.ShadowMap0,
                });

            RenderManagerAccessor.Instance.AddPath(
                (int)RenderPathType.GBUFFER,
                new GBufferRenderPath()
                {
                    //Enabled = false,
                    Name = "GBuffer",
                    RenderDevice = RenderDeviceFactory.Instance.Create(),
                    RenderTargetIndices = new int[]
                    {
                        (int)RenderTargetType.DiffuseLightMap,
                        (int)RenderTargetType.GBuffer0,
                        (int)RenderTargetType.GBuffer1,
                    }
                });

            RenderManagerAccessor.Instance.AddPath(
                (int)RenderPathType.LIGHTBUFFER,
                new LightBufferRenderPath()
                {
                    //Enabled = false,
                    Name = "LightBuffer",
                    RenderDevice = RenderDeviceFactory.Instance.Create(),
                    RenderTargetIndices = new int[]
                    {
                        (int)RenderTargetType.DiffuseLightMap,
                        (int)RenderTargetType.SpecularLightMap,
                    },
                    SphereModel = ModelFactory.Instance.Create("PointLightSphere"),
                    Billboard = BillboardFactory.Instance.Create(),
                    NormalMap = TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.GBuffer0),
                    DepthMap = TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.GBuffer1),
                    //ClearColor = Color.Gray,
                });

            RenderManagerAccessor.Instance.AddPath(
                (int)RenderPathType.DEFERRED,
                new DeferredRenderPath()
                {
                    Enabled = false,
                    Name = "Deferred",
                    RenderDevice = RenderDeviceFactory.Instance.Create(),
                    RenderTargetIndex = (int)RenderTargetType.BackBuffer,
                    Billboard = BillboardFactory.Instance.Create(),
                    AlbedoMap = TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.GBuffer0),
                    PositionMap = TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.GBuffer1),
                    NormalDepthMap = TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.GBuffer2),
                    ClearColor = Color.Gray,
                });

            RenderManagerAccessor.Instance.AddPath(
                (int)RenderPathType.OPAQUE,
                new OpaqueRenderPath()
                {
                    //Enabled = false,
                    Name = "Opaque",
                    RenderDevice = RenderDeviceFactory.Instance.Create(),
                    RenderTargetIndex = (int)RenderTargetType.HDRBuffer,
                    ShadowMap = TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.ShadowMap0),
                    DiffuseLightMap = TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.DiffuseLightMap),
                    SpecularLightMap = TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.SpecularLightMap),
                });

            RenderManagerAccessor.Instance.AddPath(
                (int)RenderPathType.DEBUG,
                new DebugRenderPath()
                {
                    //Enabled = false,
                    Name = "Debug",
                    RenderDevice = RenderDeviceFactory.Instance.Create(),
                    RenderTargetIndex = (int)RenderTargetType.HDRBuffer,
                });

            ToneMappingRenderParameter = new ToneMappingRenderParameter()
            {
                HDRScene = TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.HDRBuffer),
                ScaledBufferIndex = (int)RenderTargetType.ScaledBuffer,
                ScaledBuffer = TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.ScaledBuffer),
                LuminanceBufferIndices = new int[]
                {
                    (int)RenderTargetType.LuminanceBuffer64,
                    (int)RenderTargetType.LuminanceBuffer16,
                    (int)RenderTargetType.LuminanceBuffer4,
                    (int)RenderTargetType.LuminanceBuffer1,
                },
                LuminanceBuffers = new ITexture[]
                {
                    TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.LuminanceBuffer64),
                    TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.LuminanceBuffer16),
                    TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.LuminanceBuffer4),
                    TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.LuminanceBuffer1),
                },
                AdaptedLuminanceBufferIndices = new int[]
                {
                    (int)RenderTargetType.AdaptedLuminanceBuffer0,
                    (int)RenderTargetType.AdaptedLuminanceBuffer1,
                },
                AdaptedLuminanceBuffers = new ITexture[]
                {
                    TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.AdaptedLuminanceBuffer0),
                    TextureFactory.Instance.CreateRenderTarget((int)RenderTargetType.AdaptedLuminanceBuffer1),
                },
                RenderTargetIndex = (int)RenderTargetType.BackBuffer,
                Exposure = 0.8f,
            };

            RenderManagerAccessor.Instance.AddPath(
                (int)RenderPathType.TONEMAPPING,
                new ToneMappingRenderPath()
                {
                    //Enabled = false,
                    Name = "ToneMapping",
                    RenderDevice = RenderDeviceFactory.Instance.Create(),
                    RenderTargetIndex = (int)RenderTargetType.BackBuffer,
                    Billboard = BillboardFactory.Instance.Create(),
                    RenderParam = ToneMappingRenderParameter,
                });

            RenderManagerAccessor.Instance.AddPath(
                (int)RenderPathType.TRANSLUCENT,
                new TranslucentRenderPath()
                {
                    //Enabled = false,
                    Name = "Translucent",
                    RenderDevice = RenderDeviceFactory.Instance.Create(),
                    RenderTargetIndex = (int)RenderTargetType.BackBuffer,
                });

            RenderManagerAccessor.Instance.AddPath(
                (int)RenderPathType.HUD,
                new HudRenderPath()
                {
                    //Enabled = false,
                    Name = "HUD",
                    RenderDevice = RenderDeviceFactory.Instance.Create(),
                    RenderTargetIndex = (int)RenderTargetType.BackBuffer,
                });

            RenderManagerAccessor.Instance.AddPath(
                (int)RenderPathType.DEBUGFONT,
                new FontRenderPath()
                {
                    //Enabled = false,
                    Name = "DebugFont",
                    RenderDevice = RenderDeviceFactory.Instance.Create(),
                    RenderTargetIndex = (int)RenderTargetType.BackBuffer,
                });

            FrameCacheData.Create();
        }