/// <summary> /// A fallthrough shader, copies all inputs to outputs (the same name). /// </summary> /// <param name="inputPinComponents">Input components that must be provided.</param> /// <param name="outputPinComponents">Output components of shader.</param> /// <remarks> /// All output compononents must have inputs, if too many inputs are provided, they are simply discarded. /// </remarks> /// <returns>The ShaderCode matching description.</returns> public static ShaderCode FallTroughShader(BindingStage stage, PinComponent inputPinComponents, PinComponent outputPinComponents) { if ((outputPinComponents & inputPinComponents) != outputPinComponents) { throw new ArgumentException("Invalid bindings, some output pins do not have input components."); } // TODO: return(null); }
/// <summary> /// Creates ShaderCode using stage. /// </summary> /// <param name="stage">The stage.</param> public ShaderCode(BindingStage dagStage) { stage = dagStage; immutable = false; input = new InputOperation(this); if (dagStage == BindingStage.PixelShader) { output = new PixelOutputOperation(this); } else { output = new OutputOperation(this); } }
public IShader CompileFromFile(BindingStage stage, String filename, FixedShaderParameters parameters) { Driver.IShaderBase b = compiler.Compile(stage, filename); // We now terminate it. switch (stage) { case BindingStage.VertexShader: return(new VShader(parameters, (Driver.IVShader)b)); case BindingStage.PixelShader: return(new PShader(parameters, (Driver.IPShader)b)); case BindingStage.GeometryShader: default: throw new NotImplementedException(); } }
/// <summary> /// Creates a code generator. /// </summary> public CodeGenerator(BindingStage stage) { dag = new ShaderCode(stage); }
/// <summary> /// Begins description. /// </summary> /// <param name="s">The stage.</param> public void Begin(BindingStage s) { counter = 0; stage = s; compiler.Begin(stage); }