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 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); }