static void SamplersProcessor(StringBuilder stringBuilder, PixelShaderMetadata metadata) { if (metadata.Samplers == null) { return; } foreach (var expression in metadata.Samplers) { // Write type if (expression.Type.EndsWith("2D", StringComparison.InvariantCulture) || expression.Type.EndsWith("Cube", StringComparison.InvariantCulture)) { stringBuilder.Append("SamplerState"); } // Write name stringBuilder.Append(" "); stringBuilder.Append(expression.Name); // Finalize stringBuilder.Append(";"); stringBuilder.Append(Environment.NewLine); } }
static void ResourcesProcessor(StringBuilder stringBuilder, PixelShaderMetadata metadata) { if (metadata.Resources == null) { return; } foreach (var expression in metadata.Resources) { // Write type stringBuilder.Append(expression.Type.Replace("texture", "Texture")); // Write name stringBuilder.Append(" "); stringBuilder.Append(expression.Name); // Finalize stringBuilder.Append(";"); stringBuilder.Append(Environment.NewLine); } }
protected override void OnPixelProcess(PixelShaderMetadata metadata, out string output) { StringBuilder builder = new StringBuilder(); ConstantsProcessor(builder, metadata); builder.Append(Environment.NewLine); ResourcesProcessor(builder, metadata); builder.Append(Environment.NewLine); SamplersProcessor(builder, metadata); builder.Append(Environment.NewLine); SemanticsProcessor(builder, metadata); builder.Append(Environment.NewLine); if (metadata.ExtendedFunctions != null && metadata.ExtendedFunctions.Count > 0) { ExtendedFunctionsProcessor(builder, metadata); builder.Append(Environment.NewLine); builder.Append(Environment.NewLine); } EntryPointProcessor(builder, metadata); output = builder.ToString(); }