static ShaderProject CreateProjectFromDirectory(string path, bool recursive = true) { var shaderProject = new ShaderProject(); LoadProjectDirectory(path, shaderProject, recursive); return(shaderProject); }
public CoreShaderLibrary(FrontEndTranslator translator) { translator.mCurrentLibrary = this; // Create core primitive times first translator.CreatePrimitive(typeof(void), OpType.Void); translator.CreatePrimitive(typeof(bool), OpType.Bool); // Unsigned int must be first CreateIntType(translator, typeof(uint), 32, 0); CreateIntType(translator, typeof(int), 32, 1); var floatType = CreateFloatType(translator, typeof(float), 32); // @JoshD: Double requires special capabilities, re-add later. //CreateFloatType(frontEnd, typeof(double), 64); // Add some custom intrinsics for built-int types that AddPrimitiveIntrinsics(translator); AddPrimitiveOps(translator); AddCastIntrinsics(translator); // Compile the custom data types and functions we're adding // @JoshD: Fix path lookup var path = Path.Combine("..", "Shader"); var extensions = new HashSet <string> { ".cs" }; var project = new ShaderProject(); project.LoadProjectDirectory(path, extensions); var trees = new List <SyntaxTree>(); SourceCompilation = project.Compile("Core", null, translator, out trees); project.Translate(SourceCompilation, trees, null, translator, this); }
static void LoadProjectDirectory(string path, ShaderProject shaderProject, bool recursive = true) { var extensions = new HashSet <string>() { ".csshader" }; shaderProject.LoadProjectDirectory(path, extensions, recursive); }
public void ClearShaderProject() { this.ShaderProject = new ShaderProject(); this.ShaderLibrary = new ShaderLibrary(); this.ShaderProject.ErrorHandlers.Add(this.OnTranslationError); }
ShaderLibrary LoadAndCompileProject(string projectName, string directory, ShaderModule dependencies, out ShaderProject shaderProject) { shaderProject = CreateProjectFromDirectory(directory); shaderProject.ErrorHandlers.Add(this.OnTranslationError); var shaderLibrary = shaderProject.CompileAndTranslate(projectName, dependencies, this.FrontEnd); return(shaderLibrary); }