Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        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();
            }
        }
Пример #4
0
 /// <summary>
 /// Creates a code generator.
 /// </summary>
 public CodeGenerator(BindingStage stage)
 {
     dag = new ShaderCode(stage);
 }
Пример #5
0
 /// <summary>
 /// Begins description.
 /// </summary>
 /// <param name="s">The stage.</param>
 public void Begin(BindingStage s)
 {
     counter = 0;
     stage   = s;
     compiler.Begin(stage);
 }