コード例 #1
0
ファイル: DeferredTransparency.cs プロジェクト: xoxota99/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            _quad = new Quad(renderer.Device);

            //Create geometry management objects
            _geometryProviders = renderer.Scene.FindManagers<IGeometryProvider>();
            _depthPeeler = new DepthPeel();

            var settings = renderer.Settings;

            // 1 - Min
            // 5 - Default
            // 10 - Extreme
            settings.Add("transparency_deferred_layers", "the max number of depth peeled layers to use for deferred transparency", 5);

            //Make sure deferred lighting is enabled
            LightingComponent.SetupScene(renderer.Scene, out _directLights, out _indirectLights);

            // define inputs
            context.DefineInput("gbuffer_depth");
            context.DefineInput("gbuffer_normals");
            context.DefineInput("gbuffer_diffuse");
            context.DefineInput("lightbuffer");

            //define outputs
            context.DefineOutput("gbuffer_depth");
            context.DefineOutput("lightbuffer", isLeftSet: true, surfaceFormat: SurfaceFormat.HdrBlendable, depthFormat: DepthFormat.Depth24Stencil8);

            base.Initialise(renderer, context);
        }
コード例 #2
0
ファイル: Ssao.cs プロジェクト: ylyking/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define settings
            var settings = renderer.Settings;
            //settings.Add("ssao_enabled", "Determines if Screen Space Ambient Occlusion is enabled.", true);
            //settings.Add("ssao_halfres", "Determines if SSAO will run at full of half screen resolution.", true);
            settings.Add("ssao_radius", "SSAO sample radius", 1f);
            settings.Add("ssao_intensity", "SSAO intensity", 2.5f);
            settings.Add("ssao_scale", "Scales distance between occluders and occludee.", 1f);
            //settings.Add("ssao_detailradius", "SSAO sample radius", 2.3f);
            //settings.Add("ssao_detailintensity", "SSAO intensity", 15f);
            //settings.Add("ssao_detailscale", "Scales distance between occluders and occludee.", 1.5f);
            settings.Add("ssao_blur", "The amount to blur SSAO.", 1f);
            //settings.Add("ssao_radiosityintensity", "The intensity of local radiosity colour transfer.", 0.0f);
            settings.Add("ssao_highquality", "Switches between high and low quality SSAO sampling pattern.", false);

            // define inputs
            context.DefineInput("gbuffer_depth_downsample");
            context.DefineInput("gbuffer_normals");
            context.DefineInput("gbuffer_diffuse");

            if (context.AvailableResources.Any(r => r.Name == "edges"))
                context.DefineInput("edges");

            // define outputs
            context.DefineOutput("ssao");

            base.Initialise(renderer, context);
        }
コード例 #3
0
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define settings
            var settings = renderer.Settings;

            //settings.Add("ssao_enabled", "Determines if Screen Space Ambient Occlusion is enabled.", true);
            //settings.Add("ssao_halfres", "Determines if SSAO will run at full of half screen resolution.", true);
            settings.Add("ssao_radius", "SSAO sample radius", 6f);
            settings.Add("ssao_intensity", "SSAO intensity", 20f);
            settings.Add("ssao_scale", "Scales distance between occluders and occludee.", 1f);
            //settings.Add("ssao_detailradius", "SSAO sample radius", 2.3f);
            //settings.Add("ssao_detailintensity", "SSAO intensity", 15f);
            //settings.Add("ssao_detailscale", "Scales distance between occluders and occludee.", 1.5f);
            settings.Add("ssao_blur", "The amount to blur SSAO.", 1f);
            //settings.Add("ssao_radiosityintensity", "The intensity of local radiosity colour transfer.", 0.0f);
            settings.Add("ssao_highquality", "Switches between high and low quality SSAO sampling pattern.", false);

            // define inputs
            context.DefineInput("gbuffer_depth_downsample");
            context.DefineInput("gbuffer_normals");
            context.DefineInput("gbuffer_diffuse");

            if (context.AvailableResources.Any(r => r.Name == "edges"))
            {
                context.DefineInput("edges");
            }

            // define outputs
            context.DefineOutput("ssao");

            base.Initialise(renderer, context);
        }
コード例 #4
0
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // create debug settings
            var settings = renderer.Settings;

            // define inputs
            context.DefineInput("gbuffer_depth");
            context.DefineInput("gbuffer_normals");
            context.DefineInput("gbuffer_diffuse");
            //context.DefineInput("gbuffer_depth_downsample");

            if (context.AvailableResources.Any(r => r.Name == "ssao"))
            {
                context.DefineInput("ssao");
            }

            // define outputs
            context.DefineOutput("lightbuffer", isLeftSet: true, surfaceFormat: SurfaceFormat.HdrBlendable, depthFormat: DepthFormat.Depth24Stencil8);
            context.DefineOutput("directlighting", isLeftSet: false, surfaceFormat: SurfaceFormat.HdrBlendable, depthFormat: DepthFormat.Depth24Stencil8);

            // define default light managers
            var scene = renderer.Scene;

            scene.GetManager <DeferredAmbientLightManager>();
            scene.GetManager <DeferredPointLightManager>();
            scene.GetManager <DeferredSkyboxManager>();
            scene.GetManager <DeferredSpotLightManager>();
            scene.GetManager <DeferredSunLightManager>();

            // get lights
            directLights   = scene.FindManagers <IDirectLight>();
            indirectLights = scene.FindManagers <IIndirectLight>();

            base.Initialise(renderer, context);
        }
コード例 #5
0
            //protected override void SpecifyResources(IList<Input> inputs, IList<RendererComponent.Resource> outputs, out RenderTargetInfo? outputTarget)
            //{
            //    inputs.Add(new Input() { Name = "a" });
            //    inputs.Add(new Input() { Name = "b" });
            //    outputs.Add(new Resource() { Name = "c", IsLeftSet = true });

            //    outputTarget = new RenderTargetInfo();
            //}

            //protected override bool ValidateInput(RenderTargetInfo? previousRenderTarget)
            //{
            //    return true;
            //}

            public override void Initialise(Renderer renderer, ResourceContext context)
            {
                // define inputs
                context.DefineInput("a");
                context.DefineInput("b");

                // define outputs
                context.DefineOutput("c");

                base.Initialise(renderer, context);
            }
コード例 #6
0
            //protected override void SpecifyResources(IList<Input> inputs, IList<RendererComponent.Resource> outputs, out RenderTargetInfo? outputTarget)
            //{
            //    inputs.Add(new Input() { Name = "gbuffer_depth" });
            //    inputs.Add(new Input() { Name = "gbuffer_normals" });
            //    inputs.Add(new Input() { Name = "gbuffer_diffuse" });
            //    inputs.Add(new Input() { Name = "lightbuffer" });
            //    outputs.Add(new Resource() { Name = "scene", IsLeftSet = true });

            //    outputTarget = new RenderTargetInfo();
            //}

            //protected override bool ValidateInput(RenderTargetInfo? previousRenderTarget)
            //{
            //    return true;
            //}

            public override void Initialise(Renderer renderer, ResourceContext context)
            {
                // define inputs
                context.DefineInput("gbuffer_depth");
                context.DefineInput("gbuffer_normals");
                context.DefineInput("gbuffer_diffuse");
                context.DefineInput("lightbuffer");

                // define outputs
                context.DefineOutput("scene");

                base.Initialise(renderer, context);
            }
コード例 #7
0
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define inputs
            if (inputResource == null)
                inputResource = context.SetRenderTargets[0].Name;

            context.DefineInput(inputResource);
            context.DefineInput("edges");

            // define outputs
            context.DefineOutput("antialiased", isLeftSet: true, surfaceFormat: SurfaceFormat.Color);

            base.Initialise(renderer, context);
        }
コード例 #8
0
ファイル: RestoreDepthPhase.cs プロジェクト: ylyking/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define inputs
            context.DefineInput("gbuffer_depth");   //used implicitly with GBUFFER_DEPTH semantic

            base.Initialise(renderer, context);
        }
コード例 #9
0
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define inputs
            if (inputResource == null)
            {
                inputResource = context.SetRenderTargets[0].Name;
            }

            context.DefineInput(inputResource);
            context.DefineInput("edges");

            // define outputs
            context.DefineOutput("antialiased", isLeftSet: true, surfaceFormat: SurfaceFormat.Color);

            base.Initialise(renderer, context);
        }
コード例 #10
0
ファイル: DecalMixComponent.cs プロジェクト: xoxota99/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            _mixDecalMaterial = new Material(Content.Load<Effect>("DecalBufferMix").Clone(), "MixDecalBuffers");
            _quad = new Quad(renderer.Device);

            // define inputs
            context.DefineInput("gbuffer_normals");
            context.DefineInput("gbuffer_diffuse");
            context.DefineInput("decal_normals");
            context.DefineInput("decal_diffuse");

            // define outputs
            context.DefineOutput("gbuffer_normals");
            context.DefineOutput("gbuffer_diffuse");

            base.Initialise(renderer, context);
        }
コード例 #11
0
ファイル: EdgeDetectComponent.cs プロジェクト: ylyking/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define inputs
            context.DefineInput("gbuffer_depth");
            context.DefineInput("gbuffer_normals");

            // define outputs
            context.DefineOutput("edges", isLeftSet: true, surfaceFormat: SurfaceFormat.Color);

            // define settings
            var settings = renderer.Settings;
            settings.Add("edge_normalthreshold", "Threshold used to decide between an edge and a non-edge by normal.", 0.5f);
            settings.Add("edge_depththreshold", "Threshold used to decide between an edge and a non-edge by depth.", 0.01f);
            settings.Add("edge_normalweight", "Weighting used for edges detected via normals in the output.", 0.15f);
            settings.Add("edge_depthweight", "Weighting used for edges detected via depth in the output.", 0.2f);

            base.Initialise(renderer, context);
        }
コード例 #12
0
ファイル: EdgeDetectComponent.cs プロジェクト: sachgits/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define inputs
            context.DefineInput("gbuffer_depth");
            context.DefineInput("gbuffer_normals");

            // define outputs
            context.DefineOutput("edges", isLeftSet: true, surfaceFormat: SurfaceFormat.Color);

            // define settings
            var settings = renderer.Settings;

            settings.Add("edge_normalthreshold", "Threshold used to decide between an edge and a non-edge by normal.", 0.7f);
            settings.Add("edge_depththreshold", "Threshold used to decide between an edge and a non-edge by depth.", 0.001f);
            settings.Add("edge_normalweight", "Weighting used for edges detected via normals in the output.", 0.15f);
            settings.Add("edge_depthweight", "Weighting used for edges detected via depth in the output.", 0.2f);

            base.Initialise(renderer, context);
        }
コード例 #13
0
ファイル: LightingComponent.cs プロジェクト: xoxota99/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define inputs
            context.DefineInput("gbuffer_depth");
            context.DefineInput("gbuffer_normals");
            context.DefineInput("gbuffer_diffuse");

            if (context.AvailableResources.Any(r => r.Name == "ssao"))
                context.DefineInput("ssao");

            // define outputs
            context.DefineOutput("lightbuffer", isLeftSet:true, surfaceFormat:SurfaceFormat.HdrBlendable, depthFormat:DepthFormat.Depth24Stencil8);
            context.DefineOutput("directlighting", isLeftSet:false, surfaceFormat: SurfaceFormat.HdrBlendable, depthFormat: DepthFormat.Depth24Stencil8);

            // Setup light managers and find lists of all lights
            SetupScene(renderer.Scene, out _directLights, out _indirectLights);

            base.Initialise(renderer, context);
        }
コード例 #14
0
ファイル: RestoreDepthPhase.cs プロジェクト: TomGillen/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define inputs
            context.DefineInput("gbuffer_depth");

            // define outputs
            foreach (var resource in context.SetRenderTargets)
                context.DefineOutput(resource);

            base.Initialise(renderer, context);
        }
コード例 #15
0
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            _inputs = Inputs(context).ToArray();
            foreach (var input in _inputs)
                context.DefineInput(input.ResourceName);

            _output = Output();
            context.DefineOutput(_output, true);

            base.Initialise(renderer, context);
        }
コード例 #16
0
ファイル: LuminanceTest.cs プロジェクト: sachgits/Myre
            //protected override void SpecifyResources(IList<Input> inputs, IList<RendererComponent.Resource> outputs, out RenderTargetInfo? outputTarget)
            //{
            //    inputs.Add(new Input() { Name = "tonemapped" });
            //    inputs.Add(new Input() { Name = "luminancemap" });
            //    outputs.Add(new Resource() { Name = "scene", IsLeftSet = true });
            //    outputTarget = new RenderTargetInfo() { SurfaceFormat = SurfaceFormat.Rgba64, DepthFormat = DepthFormat.Depth24Stencil8 };
            //}

            //protected override bool ValidateInput(RenderTargetInfo? previousRenderTarget)
            //{
            //    return true;
            //}

            public override void Initialise(Renderer renderer, ResourceContext context)
            {
                // define inputs
                context.DefineInput("tonemapped");
                //context.DefineInput("luminancemap");

                // define outputs
                context.DefineOutput("scene", surfaceFormat: SurfaceFormat.Rgba64, depthFormat: DepthFormat.Depth24Stencil8);

                base.Initialise(renderer, context);
            }
コード例 #17
0
ファイル: Ssao.cs プロジェクト: martindevans/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define settings
            var settings = renderer.Settings;
            settings.Add("ssao_radius", "SSAO sample radius", 1f);
            settings.Add("ssao_intensity", "SSAO intensity", 2.5f);
            settings.Add("ssao_scale", "Scales distance between occluders and occludee.", 1f);
            settings.Add("ssao_blur", "The amount to blur SSAO.", 1f);

            // define inputs
            context.DefineInput("gbuffer_depth_downsample");
            context.DefineInput("gbuffer_normals");
            context.DefineInput("gbuffer_diffuse");

            if (context.AvailableResources.Any(r => r.Name == "edges"))
                context.DefineInput("edges");

            // define outputs
            context.DefineOutput("ssao");

            base.Initialise(renderer, context);
        }
コード例 #18
0
ファイル: RestoreDepthPhase.cs プロジェクト: sachgits/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define inputs
            context.DefineInput("gbuffer_depth");

            // define outputs
            foreach (var resource in context.SetRenderTargets)
            {
                context.DefineOutput(resource);
            }

            base.Initialise(renderer, context);
        }
コード例 #19
0
ファイル: DecalComponent.cs プロジェクト: ylyking/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            _decalManager = renderer.Scene.GetManager<Decal.Manager>();

            // define inputs
            context.DefineInput("gbuffer_depth");       //Used implicitly by the shader (using the GBUFFER_DEPTH semantic)

            // define outputs
            context.DefineOutput("decal_normals");
            context.DefineOutput("decal_diffuse");

            base.Initialise(renderer, context);
        }
コード例 #20
0
ファイル: TranslucentComponent.cs プロジェクト: ylyking/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            _geometryProviders = renderer.Scene.FindManagers<IGeometryProvider>();

            // define inputs
            if (context.AvailableResources.Any(r => r.Name == "gbuffer_depth"))
                context.DefineInput("gbuffer_depth");

            // define outputs
            foreach (var resource in context.SetRenderTargets)
                context.DefineOutput(resource);

            base.Initialise(renderer, context);
        }
コード例 #21
0
ファイル: ParticlePhase.cs プロジェクト: sachgits/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            managers = renderer.Scene.FindManagers <ParticleEmitter.Manager>();

            // define inputs
            if (context.AvailableResources.Any(r => r.Name == "gbuffer_depth"))
            {
                context.DefineInput("gbuffer_depth");
            }

            // define outputs
            foreach (var resource in context.SetRenderTargets)
            {
                context.DefineOutput(resource);
            }

            base.Initialise(renderer, context);
        }
コード例 #22
0
ファイル: AntiAliasComponent.cs プロジェクト: xoxota99/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            _quad = new Quad(renderer.Device);

            // define inputs
            if (_inputResource == null)
                _inputResource = context.SetRenderTargets[0].Name;
            
            context.DefineInput(_inputResource);

            // define outputs
            context.DefineOutput("antialiased", isLeftSet: true, surfaceFormat: SurfaceFormat.Color);

            // define settings
            var settings = renderer.Settings;

            //   1.00 - upper limit (softer)
            //   0.75 - default amount of filtering
            //   0.50 - lower limit (sharper, less sub-pixel aliasing removal)
            //   0.25 - almost off
            //   0.00 - completely off
            settings.Add("fxaa_subpixelaliasingremoval", "the amount of sub-pixel aliasing removal. This can effect sharpness.", 0.75f);

            //   0.333 - too little (faster)
            //   0.250 - low quality
            //   0.166 - default
            //   0.125 - high quality 
            //   0.063 - overkill (slower)
            settings.Add("fxaa_edgethreshold", "The minimum amount of local contrast required to apply algorithm.", 0.166f);

            //   0.0833 - upper limit (default, the start of visible unfiltered edges)
            //   0.0625 - high quality (faster)
            //   0.0312 - visible limit (slower)
            // Special notes when using FXAA_GREEN_AS_LUMA,
            //   Likely want to set this to zero.
            //   As colors that are mostly not-green
            //   will appear very dark in the green channel!
            //   Tune by looking at mostly non-green content,
            //   then start at zero and increase until aliasing is a problem.
            settings.Add("fxaa_edgethresholdmin", "Trims the algorithm from processing darks.", 0.0f);

            base.Initialise(renderer, context);
        }
コード例 #23
0
ファイル: ToneMapComponent.cs プロジェクト: xoxota99/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define settings
            var settings = renderer.Settings;
            settings.Add("hdr_adaptionrate", "The rate at which the cameras' exposure adapts to changes in the scene luminance.", 1f);
            settings.Add("hdr_bloomthreshold", "The under-exposure applied during bloom thresholding.", 6f);
            settings.Add("hdr_bloommagnitude", "The overall brightness of the bloom effect.", 3f);
            settings.Add("hdr_bloomblurammount", "The amount to blur the bloom target.", 2.2f);
            settings.Add("hdr_minexposure", "The minimum exposure the camera can adapt to.", -1.1f);
            settings.Add("hdr_maxexposure", "The maximum exposure the camera can adapt to.", 1.1f);

            // define inputs
            context.DefineInput("lightbuffer");

            // define outputs
            //context.DefineOutput("luminancemap", isLeftSet: false, width: 1024, height: 1024, surfaceFormat: SurfaceFormat.Single);
            context.DefineOutput("luminance", isLeftSet: false, width: 1, height: 1, surfaceFormat: SurfaceFormat.Single);
            context.DefineOutput("bloom", isLeftSet: false, surfaceFormat: SurfaceFormat.Rgba64);
            context.DefineOutput("tonemapped", isLeftSet: true, surfaceFormat: SurfaceFormat.Color, depthFormat: DepthFormat.Depth24Stencil8);
            
            base.Initialise(renderer, context);
        }
コード例 #24
0
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define settings
            var settings = renderer.Settings;

            settings.Add("hdr_adaptionrate", "The rate at which the cameras' exposure adapts to changes in the scene luminance.", 1f);
            settings.Add("hdr_bloomthreshold", "The under-exposure applied during bloom thresholding.", 6f);
            settings.Add("hdr_bloommagnitude", "The overall brightness of the bloom effect.", 3f);
            settings.Add("hdr_bloomblurammount", "The amount to blur the bloom target.", 2.2f);
            settings.Add("hdr_minexposure", "The minimum exposure the camera can adapt to.", -1.1f);
            settings.Add("hdr_maxexposure", "The maximum exposure the camera can adapt to.", 1.1f);

            // define inputs
            context.DefineInput("lightbuffer");

            // define outputs
            //context.DefineOutput("luminancemap", isLeftSet: false, width: 1024, height: 1024, surfaceFormat: SurfaceFormat.Single);
            context.DefineOutput("luminance", isLeftSet: false, width: 1, height: 1, surfaceFormat: SurfaceFormat.Single);
            context.DefineOutput("bloom", isLeftSet: false, surfaceFormat: SurfaceFormat.Rgba64);
            context.DefineOutput("tonemapped", isLeftSet: true, surfaceFormat: SurfaceFormat.Color, depthFormat: DepthFormat.Depth24Stencil8);

            base.Initialise(renderer, context);
        }
コード例 #25
0
ファイル: LightingComponent.cs プロジェクト: ylyking/Myre
        public override void Initialise(Renderer renderer, ResourceContext context)
        {
            // define inputs
            context.DefineInput("gbuffer_depth");
            context.DefineInput("gbuffer_normals");
            context.DefineInput("gbuffer_diffuse");
            //context.DefineInput("gbuffer_depth_downsample");

            if (context.AvailableResources.Any(r => r.Name == "ssao"))
                context.DefineInput("ssao");

            // define outputs
            context.DefineOutput("lightbuffer", isLeftSet:true, surfaceFormat:SurfaceFormat.HdrBlendable, depthFormat:DepthFormat.Depth24Stencil8);
            context.DefineOutput("directlighting", isLeftSet:false, surfaceFormat: SurfaceFormat.HdrBlendable, depthFormat: DepthFormat.Depth24Stencil8);

            // define default light managers
            var scene = renderer.Scene;
            scene.GetManager<DeferredAmbientLightManager>();
            scene.GetManager<DeferredPointLightManager>();
            scene.GetManager<DeferredSkyboxManager>();
            scene.GetManager<DeferredSpotLightManager>();
            scene.GetManager<DeferredSunLightManager>();

            // get lights
            _directLights = scene.FindManagers<IDirectLight>();
            _indirectLights = scene.FindManagers<IIndirectLight>();

            base.Initialise(renderer, context);
        }