Esempio n. 1
0
        static ShaderProject CreateProjectFromDirectory(string path, bool recursive = true)
        {
            var shaderProject = new ShaderProject();

            LoadProjectDirectory(path, shaderProject, recursive);
            return(shaderProject);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        static void LoadProjectDirectory(string path, ShaderProject shaderProject, bool recursive = true)
        {
            var extensions = new HashSet <string>()
            {
                ".csshader"
            };

            shaderProject.LoadProjectDirectory(path, extensions, recursive);
        }
Esempio n. 4
0
 public void ClearShaderProject()
 {
     this.ShaderProject = new ShaderProject();
     this.ShaderLibrary = new ShaderLibrary();
     this.ShaderProject.ErrorHandlers.Add(this.OnTranslationError);
 }
Esempio n. 5
0
        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);
        }