private static IBuiltPipeline GetPipeline(ITagContainer diContainer, bool isFont) { System.Func <IPipelineBuilder, IBuiltPipeline> bla = builder => builder .WithDepthTarget(PixelFormat.D24_UNorm_S8_UInt) .WithColorTarget(PixelFormat.R8_G8_B8_A8_UNorm) .WithShaderSet(isFont ? "UIFont" : "UI") .WithInstanceStepRate(1) .With("Pos", VertexElementFormat.Float2, VertexElementSemantic.Position) .With("Size", VertexElementFormat.Float2, VertexElementSemantic.TextureCoordinate) .With("UVPos", VertexElementFormat.Float2, VertexElementSemantic.TextureCoordinate) .With("UVSize", VertexElementFormat.Float2, VertexElementSemantic.TextureCoordinate) .With("TextureWeight", VertexElementFormat.Float1, VertexElementSemantic.TextureCoordinate) .With("Color", VertexElementFormat.Byte4_Norm, VertexElementSemantic.Color) .With("Texture", ResourceKind.TextureReadOnly, ShaderStages.Fragment) .With("Sampler", ResourceKind.Sampler, ShaderStages.Fragment) .With("Projection", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With(BlendStateDescription.SingleAlphaBlend) .With(PrimitiveTopology.TriangleStrip) .WithDepthWrite(false) .WithDepthTest(false) .With(FaceCullMode.None) .Build(); return(isFont ? PipelineFor <int> .Get(diContainer, bla) : PipelineFor <UIMaterial> .Get(diContainer, bla)); }
private static IBuiltPipeline GetPipeline(ITagContainer diContainer) => PipelineFor <EffectAdditiveAlphaMaterial> .Get(diContainer, builder => BuildBasePipeline(builder) .With(new BlendStateDescription(RgbaFloat.White, new BlendAttachmentDescription(true, sourceColorFactor: BlendFactor.SourceAlpha, sourceAlphaFactor: BlendFactor.SourceAlpha, destinationColorFactor: BlendFactor.One, destinationAlphaFactor: BlendFactor.One, colorFunction: BlendFunction.Add, alphaFunction: BlendFunction.Add))) .Build());
private static IBuiltPipeline GetPipeline(ITagContainer diContainer) => PipelineFor <DebugLinesMaterial> .Get(diContainer, builder => builder .WithDepthTarget(PixelFormat.D24_UNorm_S8_UInt) .WithColorTarget(PixelFormat.R8_G8_B8_A8_UNorm) .WithShaderSet("VertexColor") .With("Position", VertexElementFormat.Float3, VertexElementSemantic.Position) .With("Color", VertexElementFormat.Byte4_Norm, VertexElementSemantic.Color) .With("Projection", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("View", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("World", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With(PrimitiveTopology.LineList) .With(FaceCullMode.None) .WithDepthWrite(false) .WithDepthTest(false) .Build());
private static IBuiltPipeline GetPipeline(ITagContainer diContainer) => PipelineFor <MapUntexturedMaterial> .Get(diContainer, builder => builder .WithDepthTarget(PixelFormat.D24_UNorm_S8_UInt) .WithColorTarget(PixelFormat.R8_G8_B8_A8_UNorm) .WithShaderSet("MapUntextured") .With("Position", VertexElementFormat.Float3, VertexElementSemantic.Position) .With("TexCoords", VertexElementFormat.Float2, VertexElementSemantic.TextureCoordinate) .With("Color", VertexElementFormat.Byte4_Norm, VertexElementSemantic.Color) .With("Projection", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("View", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("World", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("MaterialBuffer", ResourceKind.UniformBuffer, ShaderStages.Fragment) .With("PixelCounter", ResourceKind.StructuredBufferReadWrite, ShaderStages.Fragment) .With(FrontFace.CounterClockwise) .Build());
private static IBuiltPipeline GetPipeline(ITagContainer diContainer) => PipelineFor <DebugMaterial> .Get(diContainer, builder => builder .WithDepthTarget(PixelFormat.D24_UNorm_S8_UInt) .WithColorTarget(PixelFormat.R8_G8_B8_A8_UNorm) .WithShaderSet("Wireframe") .With("Position", VertexElementFormat.Float3, VertexElementSemantic.Position) .With("UV", VertexElementFormat.Float4, VertexElementSemantic.Color) .With("Projection", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("View", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("World", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("Params", ResourceKind.UniformBuffer, ShaderStages.Fragment) .With(BlendStateDescription.SingleOverrideBlend) .WithDepthWrite(true) .WithDepthTest(true) .With(FaceCullMode.None) .Build());
private static IBuiltPipeline GetPipeline(ITagContainer diContainer) => PipelineFor <DebugSkinnedMaterial> .Get(diContainer, builder => builder .WithDepthTarget(PixelFormat.D24_UNorm_S8_UInt) .WithColorTarget(PixelFormat.R8_G8_B8_A8_UNorm) .WithShaderSet("VertexColorSkinned") .With("Position", VertexElementFormat.Float3, VertexElementSemantic.Position) .With("Color", VertexElementFormat.Byte4_Norm, VertexElementSemantic.Color) .NextVertexLayout() .With("Weights", VertexElementFormat.Float4, VertexElementSemantic.TextureCoordinate) .With("Indices", VertexElementFormat.Byte4, VertexElementSemantic.TextureCoordinate) .With("Projection", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("View", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("World", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("PoseBuffer", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With(FrontFace.CounterClockwise) .With(BlendStateDescription.SingleAlphaBlend) .WithDepthWrite(false) .WithDepthTest(false) .Build());
private static IBuiltPipeline GetPipeline(ITagContainer diContainer) => PipelineFor <ModelSkinnedMaterial> .Get(diContainer, builder => builder .WithDepthTarget(PixelFormat.D24_UNorm_S8_UInt) .WithColorTarget(PixelFormat.R8_G8_B8_A8_UNorm) .WithShaderSet("ModelSkinned") .With("Position", VertexElementFormat.Float3, VertexElementSemantic.Position) .With("TexCoords", VertexElementFormat.Float2, VertexElementSemantic.TextureCoordinate) .With("Color", VertexElementFormat.Byte4_Norm, VertexElementSemantic.Color) .NextVertexLayout() .With("Weights", VertexElementFormat.Float4, VertexElementSemantic.TextureCoordinate) .With("Indices", VertexElementFormat.Byte4, VertexElementSemantic.TextureCoordinate) .With("Texture", ResourceKind.TextureReadOnly, ShaderStages.Fragment) .With("Sampler", ResourceKind.Sampler, ShaderStages.Fragment) .With("Projection", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("View", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("World", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("MaterialBuffer", ResourceKind.UniformBuffer, ShaderStages.Fragment) .With("PoseBuffer", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With(FrontFace.CounterClockwise) .Build());
private static IBuiltPipeline GetPipeline(ITagContainer diContainer) => PipelineFor <DebugIconMaterial> .Get(diContainer, builder => builder .WithDepthTarget(PixelFormat.D24_UNorm_S8_UInt) .WithColorTarget(PixelFormat.R8_G8_B8_A8_UNorm) .WithShaderSet("DebugIcon") .WithInstanceStepRate(1) .With("Position", VertexElementFormat.Float3, VertexElementSemantic.Position) .With("UVCenter", VertexElementFormat.Float2, VertexElementSemantic.TextureCoordinate) .With("UVSize", VertexElementFormat.Float2, VertexElementSemantic.TextureCoordinate) .With("Size", VertexElementFormat.Float1, VertexElementSemantic.TextureCoordinate) .With("Color", VertexElementFormat.Byte4_Norm, VertexElementSemantic.Color) .With("Texture", ResourceKind.TextureReadOnly, ShaderStages.Fragment) .With("Sampler", ResourceKind.Sampler, ShaderStages.Fragment) .With("Projection", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("View", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("World", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With("Uniforms", ResourceKind.UniformBuffer, ShaderStages.Vertex) .With(BlendStateDescription.SingleAlphaBlend) .With(PrimitiveTopology.TriangleStrip) .WithDepthWrite(false) .WithDepthTest(true) .With(FaceCullMode.None) .Build());
private static IBuiltPipeline GetPipeline(ITagContainer diContainer) => PipelineFor <EffectAdditiveMaterial> .Get(diContainer, builder => BuildBasePipeline(builder) .With(BlendStateDescription.SingleAdditiveBlend) .Build());
private static IBuiltPipeline GetPipeline(ITagContainer diContainer, bool isTwoSided) => PipelineFor <SparkAdditiveMaterial> .Get(diContainer, builder => BuildBasePipeline(builder, isTwoSided) .With(BlendStateDescription.SingleAdditiveBlend) .Build());
private static IBuiltPipeline GetPipeline(ITagContainer diContainer, bool depthWrite) => PipelineFor <ModelInstancedAdditiveMaterial> .Get(diContainer, builder => BuildBasePipeline(builder) .WithDepthWrite(depthWrite) .With(BlendStateDescription.SingleAdditiveBlend) .Build());
private static IBuiltPipeline GetPipeline(ITagContainer diContainer) => PipelineFor <ModelInstancedMaterial> .Get(diContainer, builder => BuildBasePipeline(builder) .Build());