public RenderStageModelFactory(IFrameworkMessenger frameworkMessenger, IStartupPropertiesCache startUpPropertiesCache, ISystemComponents veldridComponents, IVeldridWindowUpdater windowUpdater, IDrawQueueGroupFactory drawQueueGroupFactory, IDrawStageBatcherFactory drawStageBatcherFactory, IGpuSurfaceManager gpuSurfaceManager, IPipelineFactory pipelineFactory, IGaussianBlurWeightsAndOffsetsCache gaussianWeightsAndOffsetsCache, IQuadMeshBuilder quadMeshBuilder, IBlendStateConverter blendStateConverter, IShaderLoader shaderTools) { _frameworkMessenger = frameworkMessenger; _startUpPropertiesCache = startUpPropertiesCache; _systemComponents = veldridComponents; _windowUpdater = windowUpdater; _drawQueueGroupFactory = drawQueueGroupFactory; _drawStageBatcherFactory = drawStageBatcherFactory; _gpuSurfaceManager = gpuSurfaceManager; _pipelineFactory = pipelineFactory; _gaussianWeightsAndOffsetsCache = gaussianWeightsAndOffsetsCache; _quadMeshBuilder = quadMeshBuilder; _blendStateConverter = blendStateConverter; _shaderTools = shaderTools; }
public ApplicationWindow(ILogger logger, IShaderLoader shaderLoader, ISceneManager sceneManager) : base(1280, 720, new GraphicsMode(new ColorFormat(8, 8, 8, 8), 0, 0, 8), "") { this.logger = logger; this.shaderLoader = shaderLoader; this.sceneManager = sceneManager; }
private void InitFromFiles() { IShaderLoader loader = DefaultLoader ?? new FileSystemLoader(); foreach (var s in ShaderSourceOrFilenames) { AddShader(new Shader(Name + "_" + s.Item1.ToString(), s.Item1, loader.Load(s.Item2).Content)); } }
public DistortionHeightRenderer(IFrameworkMessenger frameworkMessenger, IShaderLoader shaderLoader, IPipelineFactory pipelineFactory, IGpuSurfaceManager surfaceManager) { _frameworkMessenger = frameworkMessenger; _shaderLoader = shaderLoader; _pipelineFactory = pipelineFactory; _surfaceManager = surfaceManager; Initialise(); }
public MeshRenderStageRenderer(IFrameworkMessenger frameworkMessenger, ISystemComponents systemComponents, IShaderLoader shaderLoader, IPipelineFactory pipelineFactory, IViewportManager viewportManager) { _frameworkMessenger = frameworkMessenger; _systemComponents = systemComponents; _shaderLoader = shaderLoader; _pipelineFactory = pipelineFactory; _viewportManager = viewportManager; Initialise(); }
private Pipeline _pipeline; //rename internal version public DistortionRenderer(ISystemComponents systemComponents, IShaderLoader shaderLoader, IPipelineFactory pipelineFactory, IFullNdcSpaceQuadVertexBuffer ndcQuadVertexBuffer, IViewportManager viewportManager) { _systemComponents = systemComponents; _shaderLoader = shaderLoader; _pipelineFactory = pipelineFactory; _ndcQuadVertexBuffer = ndcQuadVertexBuffer; _viewportManager = viewportManager; Initialise(); }
public SinglePassGaussianBlurRenderer(ISystemComponents systemComponents, IShaderLoader shaderLoader, IPipelineFactory pipelineFactory, IFullNdcSpaceQuadVertexBuffer ndcQuadVertexBuffer, IGaussianBlurWeightsAndOffsetsCache gaussianWeightsAndOffsetsCache) { _systemComponents = systemComponents; _shaderLoader = shaderLoader; _pipelineFactory = pipelineFactory; _ndcQuadVertexBuffer = ndcQuadVertexBuffer; _gaussianWeightsAndOffsetsCache = gaussianWeightsAndOffsetsCache; Initialise(); }
public ColourEffectsStageRenderer(IFrameworkMessenger frameworkMessenger, ISystemComponents systemComponents, IShaderLoader shaderLoader, IPipelineFactory pipelineFactory, IFullNdcSpaceQuadVertexBuffer ndcQuadVertexBuffer, IViewportManager viewportManager) { _frameworkMessenger = frameworkMessenger; _systemComponents = systemComponents; _shaderLoader = shaderLoader; _pipelineFactory = pipelineFactory; _ndcQuadVertexBuffer = ndcQuadVertexBuffer; _viewportManager = viewportManager; Initialise(); }
public DrawStageRenderer(IFrameworkMessenger frameworkMessenger, ISystemComponents components, IShaderLoader shaderLoader, IPipelineFactory pipelineFactory, IGpuSurfaceManager surfaceManager, IViewportManager viewportManager) { _frameworkMessenger = frameworkMessenger; _components = components; _shaderLoader = shaderLoader; _pipelineFactory = pipelineFactory; _surfaceManager = surfaceManager; _viewportManager = viewportManager; Initialise(); }
public BloomSamplingRenderer(ISystemComponents systemComponents, IShaderLoader shaderLoader, IPipelineFactory pipelineFactory, IFullNdcSpaceQuadVertexBuffer ndcQuadVertexBuffer, IDownSamplerWeightsAndOffsets downSamplerWeightsAndOffsets) { _systemComponents = systemComponents; _shaderLoader = shaderLoader; _pipelineFactory = pipelineFactory; _ndcQuadVertexBuffer = ndcQuadVertexBuffer; _downSamplerValues = downSamplerWeightsAndOffsets; Initialise(); _sampleType = null; }
private Pipeline _pipeline; //rename internal version public DistortionGradientShiftRenderer(IFrameworkMessenger frameworkMessenger, ISystemComponents systemComponents, IShaderLoader shaderLoader, IPipelineFactory pipelineFactory, IGpuSurfaceManager surfaceManager, IFullNdcSpaceQuadVertexBuffer ndcQuadVertexBuffer) { _frameworkMessenger = frameworkMessenger; _systemComponents = systemComponents; _shaderLoader = shaderLoader; _pipelineFactory = pipelineFactory; _surfaceManager = surfaceManager; _ndcQuadVertexBuffer = ndcQuadVertexBuffer; Initialise(); }
public CustomShaderStageModel(IFrameworkMessenger frameworkMessenger, ISystemComponents systemComponents, IShaderLoader shaderLoader, IPipelineFactory pipelineFactory, IBlendStateConverter blendStateConverter, string fragmentShaderFilename, AssetSourceEnum shaderFileAssetType, ShaderUniformDescription[] userUniformDescriptions, BlendState blendState, bool userSpirvCompile) { _frameworkMessenger = frameworkMessenger; _systemComponents = systemComponents; _shaderLoader = shaderLoader; _pipelineFactory = pipelineFactory; _blendStateConverter = blendStateConverter; _fragmentShaderFilename = fragmentShaderFilename; _shaderFileAssetType = shaderFileAssetType; _userUniformDescriptions = userUniformDescriptions; _blendState = blendState; _useSpirvCompile = userSpirvCompile; Initialise(); }
public static ArrayPoolStringBuilder Render(int threadsX, int threadsY, int threadsZ, IShaderLoader info) { var builder = ArrayPoolStringBuilder.Create(); // Header builder.AppendLine("// ================================================"); builder.AppendLine("// AUTO GENERATED"); builder.AppendLine("// ================================================"); builder.AppendLine("// This shader was created by ComputeSharp."); builder.AppendLine("// See: https://github.com/Sergio0694/ComputeSharp."); // Group size constants builder.AppendLine(); builder.Append("#define __GroupSize__get_X "); builder.AppendLine(threadsX.ToString()); builder.Append("#define __GroupSize__get_Y "); builder.AppendLine(threadsY.ToString()); builder.Append("#define __GroupSize__get_Z "); builder.AppendLine(threadsZ.ToString()); // Define declarations foreach (var define in info.DefinesInfo) { builder.Append("#define "); builder.Append(define.Key); builder.Append(' '); builder.AppendLine(define.Value); } // Static fields if (info.StaticFields.Count > 0) { builder.AppendLine(); foreach (var constant in info.StaticFields) { builder.Append(constant.Value.TypeDeclaration); builder.Append(' '); builder.Append(constant.Key); if (constant.Value.Assignment is string assignment) { builder.Append(" = "); builder.Append(assignment); } builder.AppendLine(";"); } } // Declared types foreach (var type in info.DeclaredTypes) { builder.AppendLine(); builder.AppendLine(type); } // Captured variables builder.AppendLine(); builder.AppendLine("cbuffer _ : register(b0)"); builder.AppendLine('{'); builder.AppendLine(" uint __x;"); builder.AppendLine(" uint __y;"); builder.AppendLine(" uint __z;"); foreach (var local in info.FieldsInfo) { builder.Append(" "); builder.Append(local.FieldType); builder.Append(' '); builder.Append(local.FieldName); builder.AppendLine(';'); } builder.AppendLine('}'); // Buffers foreach (var buffer in info.HlslResourceInfo) { builder.AppendLine(); switch (buffer) { // Constant buffer go to cbuffer fields with a dummy local case HlslResourceInfo.Constant _: builder.Append("cbuffer _"); builder.Append(buffer.FieldName); builder.Append(" : register(b"); builder.Append(buffer.BufferIndex.ToString()); builder.AppendLine(')'); builder.AppendLine('{'); builder.Append(" "); builder.Append(buffer.FieldType); builder.Append(' '); builder.Append(buffer.FieldName); builder.AppendLine("[2];"); builder.AppendLine('}'); break; // Structured buffer have the same syntax but different id case HlslResourceInfo.ReadOnly _: char registerId = 't'; goto StructuredBuffer; case HlslResourceInfo.ReadWrite _: registerId = 'u'; StructuredBuffer: builder.Append(buffer.FieldType); builder.Append(' '); builder.Append(buffer.FieldName); builder.Append(" : register("); builder.Append(registerId); builder.Append(buffer.BufferIndex.ToString()); builder.AppendLine(");"); break; } } // Shared buffers foreach (var buffer in info.SharedBuffers) { builder.AppendLine(); builder.Append("groupshared "); builder.Append(buffer.Value.Type); builder.Append(' '); builder.Append(buffer.Key); builder.Append('['); if (buffer.Value.Count is int count) { builder.Append(count.ToString()); } else { builder.Append((threadsX * threadsY * threadsZ).ToString()); } builder.AppendLine("];"); } // Forward declarations foreach (var declaration in info.ForwardDeclarations) { builder.AppendLine(); builder.AppendLine(declaration); } // Captured methods foreach (var function in info.MethodsInfo) { builder.AppendLine(); builder.AppendLine(function); } // Entry point builder.AppendLine(); builder.AppendLine("[NumThreads(__GroupSize__get_X, __GroupSize__get_Y, __GroupSize__get_Z)]"); builder.AppendLine(info.EntryPoint); return(builder); }
public ShaderProgram Init(string vertexSource, string fragmentSource, IList <Variable> variables, string[] fragDataOutputs, IShaderLoader loader) { log.Info("ShaderProgram.Init ({0}) loading", this.Name); string vsrc, fsrc; if (loader != null) { vsrc = loader.Load(vertexSource).Content; fsrc = loader.Load(fragmentSource).Content; } else // source is raw { vsrc = vertexSource; fsrc = fragmentSource; } this.AddVertexShader(vsrc); this.AddFragmentShader(fsrc); foreach (var v in variables) { this.AddVariable(v.Index, v.Name); } if (fragDataOutputs != null) { for (int i = 0; i < fragDataOutputs.Length; i++) { this.AddFragmentShaderOutput(i, fragDataOutputs[i]); } } this.Link(); return(this); }
public static SourceContent Preprocess(this SourceContent sourceContent, int levelsRemaining, IShaderLoader loader) { if (levelsRemaining < 0) { throw new InvalidOperationException("Maximum recursion levels exceeded in preprocessing."); } //string source = // find all instances of #include "x" and replace with preprocessed input var sb = new StringBuilder(); foreach (var token in sourceContent.Content.Tokens()) { switch (token.Type) { case TokenType.Text: sb.Append(token.Content); break; case TokenType.Include: sb.Append(loader.LoadRaw(token.Content, sourceContent.Name.Name).Preprocess(levelsRemaining - 1, loader).Content); break; } } var content = sb.ToString(); return(new SourceContent { Name = sourceContent.Name, Content = content }); }