public ShaderResourceManager( GraphicsDevice graphicsDevice, StandardGraphicsResources standardGraphicsResources) { using (GameTrace.TraceDurationEvent("ShaderResourceManager()")) { Global = AddDisposable(new GlobalShaderResources(graphicsDevice, standardGraphicsResources.SolidWhiteTexture)); Mesh = AddDisposable(new MeshShaderResources(graphicsDevice)); RadiusCursor = AddDisposable(new RadiusCursorDecalShaderResources(graphicsDevice, standardGraphicsResources.Aniso4xClampSampler)); FixedFunction = AddDisposable(new FixedFunctionShaderResources(graphicsDevice, Global, Mesh)); MeshDepth = AddDisposable(new MeshDepthShaderResources(graphicsDevice, Global, Mesh)); Particle = AddDisposable(new ParticleShaderResources(graphicsDevice, Global)); Road = AddDisposable(new RoadShaderResources(graphicsDevice, Global, RadiusCursor)); Sprite = AddDisposable(new SpriteShaderResources(graphicsDevice)); Terrain = AddDisposable(new TerrainShaderResources(graphicsDevice, Global, RadiusCursor)); Water = AddDisposable(new WaterShaderResources(graphicsDevice, Global)); _shaderMaterialResources = new Dictionary <string, ShaderMaterialShaderResources> { { "NormalMapped", AddDisposable(new NormalMappedShaderResources(graphicsDevice, Global, Mesh)) }, { "Simple", AddDisposable(new SimpleShaderResources(graphicsDevice, Global, Mesh)) } }; } }
public RoadShaderResources( GraphicsDevice graphicsDevice, GlobalShaderResources globalShaderResources, RadiusCursorDecalShaderResources radiusCursorDecalShaderResources) : base( graphicsDevice, "Road", new GlobalResourceSetIndices(0u, LightingType.Terrain, 1u, 2u, 3u, null), RoadVertex.VertexDescriptor) { _materialResourceLayout = AddDisposable(graphicsDevice.ResourceFactory.CreateResourceLayout( new ResourceLayoutDescription( new ResourceLayoutElementDescription("Texture", ResourceKind.TextureReadOnly, ShaderStages.Fragment), new ResourceLayoutElementDescription("Sampler", ResourceKind.Sampler, ShaderStages.Fragment)))); var resourceLayouts = new[] { globalShaderResources.GlobalConstantsResourceLayout, globalShaderResources.GlobalLightingConstantsResourceLayout, globalShaderResources.GlobalCloudResourceLayout, globalShaderResources.GlobalShadowResourceLayout, _materialResourceLayout, radiusCursorDecalShaderResources.RadiusCursorDecalsResourceLayout, }; Pipeline = AddDisposable(graphicsDevice.ResourceFactory.CreateGraphicsPipeline( new GraphicsPipelineDescription( BlendStateDescription.SingleAlphaBlend, DepthStencilStateDescription.DepthOnlyLessEqualRead, RasterizerStateDescriptionUtility.CullNoneSolid, // TODO PrimitiveTopology.TriangleList, ShaderSet.Description, resourceLayouts, RenderPipeline.GameOutputDescription))); }
public TerrainShaderResources( GraphicsDevice graphicsDevice, GlobalShaderResources globalShaderResources, RadiusCursorDecalShaderResources radiusCursorDecalShaderResources) : base( graphicsDevice, "Terrain", new GlobalResourceSetIndices(0u, LightingType.Terrain, 1u, 2u, 3u, null), TerrainVertex.VertexDescriptor) { _materialResourceLayout = AddDisposable(graphicsDevice.ResourceFactory.CreateResourceLayout( new ResourceLayoutDescription( new ResourceLayoutElementDescription("TerrainMaterialConstants", ResourceKind.UniformBuffer, ShaderStages.Fragment), new ResourceLayoutElementDescription("TileData", ResourceKind.TextureReadOnly, ShaderStages.Fragment), new ResourceLayoutElementDescription("CliffDetails", ResourceKind.StructuredBufferReadOnly, ShaderStages.Fragment), new ResourceLayoutElementDescription("TextureDetails", ResourceKind.StructuredBufferReadOnly, ShaderStages.Fragment), new ResourceLayoutElementDescription("Textures", ResourceKind.TextureReadOnly, ShaderStages.Fragment), new ResourceLayoutElementDescription("MacroTexture", ResourceKind.TextureReadOnly, ShaderStages.Fragment), new ResourceLayoutElementDescription("CausticsTextures", ResourceKind.TextureReadOnly, ShaderStages.Fragment), new ResourceLayoutElementDescription("Sampler", ResourceKind.Sampler, ShaderStages.Fragment)))); var resourceLayouts = new[] { globalShaderResources.GlobalConstantsResourceLayout, globalShaderResources.GlobalLightingConstantsResourceLayout, globalShaderResources.GlobalCloudResourceLayout, globalShaderResources.GlobalShadowResourceLayout, _materialResourceLayout, radiusCursorDecalShaderResources.RadiusCursorDecalsResourceLayout, }; Pipeline = AddDisposable(graphicsDevice.ResourceFactory.CreateGraphicsPipeline( new GraphicsPipelineDescription( BlendStateDescription.SingleDisabled, DepthStencilStateDescription.DepthOnlyLessEqual, RasterizerStateDescriptionUtility.DefaultFrontIsCounterClockwise, PrimitiveTopology.TriangleList, // TODO: Use triangle strip ShaderSet.Description, resourceLayouts, RenderPipeline.GameOutputDescription))); }