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); }
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); }
public override void Initialise(Renderer renderer, ResourceContext context) { // define outputs context.DefineOutput("gbuffer_depth", isLeftSet: false, surfaceFormat: SurfaceFormat.Single, depthFormat: DepthFormat.Depth24Stencil8); context.DefineOutput("gbuffer_normals", isLeftSet: false, surfaceFormat: SurfaceFormat.Rgba1010102); context.DefineOutput("gbuffer_diffuse", isLeftSet: false, surfaceFormat: SurfaceFormat.Color); context.DefineOutput("gbuffer_depth_downsample", isLeftSet: true, surfaceFormat: SurfaceFormat.Single); base.Initialise(renderer, context); }
public override void Initialise(Renderer renderer, ResourceContext context) { _geometry = new GeometryRenderer(renderer.Scene.FindManagers<IGeometryProvider>()); // define outputs context.DefineOutput("gbuffer_depth", isLeftSet: false, surfaceFormat: SurfaceFormat.Single, depthFormat: DepthFormat.Depth24Stencil8); context.DefineOutput("gbuffer_normals", isLeftSet: false, surfaceFormat: SurfaceFormat.Rgba1010102); context.DefineOutput("gbuffer_diffuse", isLeftSet: false, surfaceFormat: SurfaceFormat.Color); context.DefineOutput("gbuffer_depth_downsample", isLeftSet: true, surfaceFormat: SurfaceFormat.Single); base.Initialise(renderer, context); }
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); }
//protected override void SpecifyResources(IList<Input> inputs, IList<RendererComponent.Resource> outputs, out RenderTargetInfo? outputTarget) //{ // outputs.Add(new Resource() { Name = "b", IsLeftSet = true }); // outputTarget = new RenderTargetInfo(); //} //protected override bool ValidateInput(RenderTargetInfo? previousRenderTarget) //{ // return true; //} public override void Initialise(Renderer renderer, ResourceContext context) { // define outputs context.DefineOutput("b"); base.Initialise(renderer, context); }
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); }
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); }
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); }
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); }
//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); }
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); }
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); }
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); }
//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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }