protected override void InitializeCore() { base.InitializeCore(); // TODO: Make this pluggable if (Context.GraphicsDevice.Features.RequestedProfile >= GraphicsProfile.Level_10_0) { // Note: this renderer supports both Point and Spot lights var clusteredLightRenderer = new LightClusteredPointGroupRenderer(); RegisterLightGroupRenderer(typeof(LightPoint), clusteredLightRenderer); RegisterLightGroupRenderer(typeof(LightSpot), new LightSpotGroupRenderer { NonShadowRenderer = clusteredLightRenderer.SpotRenderer }); } else { RegisterLightGroupRenderer(typeof(LightPoint), new LightPointGroupRenderer()); RegisterLightGroupRenderer(typeof(LightSpot), new LightSpotGroupRenderer()); } RegisterLightGroupRenderer(typeof(LightDirectional), new LightDirectionalGroupRenderer()); RegisterLightGroupRenderer(typeof(LightAmbient), new LightAmbientRenderer()); RegisterLightGroupRenderer(typeof(LightSkybox), new LightSkyboxRenderer()); renderEffectKey = ((RootEffectRenderFeature)RootRenderFeature).RenderEffectKey; viewLightingKey = ((RootEffectRenderFeature)RootRenderFeature).CreateViewLogicalGroup("Lighting"); drawLightingKey = ((RootEffectRenderFeature)RootRenderFeature).CreateDrawLogicalGroup("Lighting"); }
protected override void InitializeCore() { base.InitializeCore(); _skyViewLutTexture = Texture.New2D(Context.GraphicsDevice, SkyViewLutSettings.Width, SkyViewLutSettings.Height, SkyViewLutSettings.Format, TextureFlags.RenderTarget | TextureFlags.ShaderResource); _atmosphereCameraScatteringVolumeTexture = Texture.New3D(Context.GraphicsDevice, AtmosphereCameraScatteringVolumeSettings.Size, AtmosphereCameraScatteringVolumeSettings.Size, AtmosphereCameraScatteringVolumeSettings.Slices, AtmosphereCameraScatteringVolumeSettings.Format, TextureFlags.RenderTarget | TextureFlags.ShaderResource); _multiScatteringTexture = Texture.New2D(Context.GraphicsDevice, MultiScatteringTextureSettings.Size, MultiScatteringTextureSettings.Size, MultiScatteringTextureSettings.Format, TextureFlags.UnorderedAccess | TextureFlags.ShaderResource); TransmittanceLutTexture = Texture.New2D(Context.GraphicsDevice, TransmittanceLutSettings.Width, TransmittanceLutSettings.Height, TransmittanceLutSettings.Format, TextureFlags.UnorderedAccess | TextureFlags.RenderTarget | TextureFlags.ShaderResource); _atmosphereCubeMapRenderTarget = Texture.New2D(Context.GraphicsDevice, 64, 64, PixelFormat.R16G16B16A16_Float, TextureFlags.RenderTarget | TextureFlags.ShaderResource); _atmosphereCubeMap = Texture.NewCube(Context.GraphicsDevice, 64, PixelFormat.R16G16B16A16_Float, TextureFlags.ShaderResource); _atmosphereCubeMapSpecular = Texture.NewCube(Context.GraphicsDevice, 64, MipMapCount.Auto, PixelFormat.R16G16B16A16_Float, TextureFlags.ShaderResource | TextureFlags.UnorderedAccess); _transmittanceLutEffect = new ImageEffectShader("AtmosphereRenderTransmittanceLutEffect"); _skyViewLutEffect = new ImageEffectShader("AtmosphereRenderSkyViewLutEffect"); _renderMultipleScatteringTextureEffect = new ComputeEffectShader(Context) { ShaderSourceName = "AtmosphereMultipleScatteringTextureEffect" }; _renderAtmosphereScatteringVolumeEffect = new DynamicEffectInstance("AtmosphereRenderScatteringCameraVolumeEffect"); _renderAtmosphereScatteringVolumeEffect.Initialize(Context.Services); _renderAtmosphereScatteringVolumePipelineState = new MutablePipelineState(Context.GraphicsDevice); _renderAtmosphereScatteringVolumePipelineState.State.SetDefaults(); _renderAtmosphereScatteringVolumePipelineState.State.PrimitiveType = PrimitiveType.TriangleList; _atmosphereLogicalGroupKey = CreateDrawLogicalGroup("Atmosphere"); _spriteBatch = new SpriteBatch(Context.GraphicsDevice); }
protected override void InitializeCore() { base.InitializeCore(); renderEffectKey = ((RootEffectRenderFeature)RootRenderFeature).RenderEffectKey; VoxelizerStorerCasterKey = ((RootEffectRenderFeature)RootRenderFeature).CreateViewLogicalGroup("VoxelizerStorer"); }
protected override void InitializeCore() { base.InitializeCore(); // Initialize light renderers foreach (var lightRenderer in lightRenderers) { lightRenderer.Initialize(Context); } EvaluateLightTypes(); // Track changes lightRenderers.CollectionChanged += LightRenderers_CollectionChanged; renderEffectKey = ((RootEffectRenderFeature)RootRenderFeature).RenderEffectKey; viewLightingKey = ((RootEffectRenderFeature)RootRenderFeature).CreateViewLogicalGroup("Lighting"); drawLightingKey = ((RootEffectRenderFeature)RootRenderFeature).CreateDrawLogicalGroup("Lighting"); }
protected override void InitializeCore() { base.InitializeCore(); shadowCasterKey = ((RootEffectRenderFeature)rootRenderFeature).CreateViewLogicalGroup("ShadowCaster"); }
protected override void InitializeCore() { base.InitializeCore(); _atmosphereLogicalGroupKey = ((RootEffectRenderFeature)RootRenderFeature).CreateViewLogicalGroup("Atmosphere"); }