aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics/Shader/je_jsl_compiler.h
blob: 29129e13bf10266672433998bc3bef01b1749714 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef __JE_JSL_COMPILER_H
#define __JE_JSL_COMPILER_H

#include "../../core/je_configuration.h"
#if defined(jin_graphics) && (jin_graphics & jin_graphics_shader)

#include <string>

#include "../../common/je_singleton.hpp"

namespace JinEngine
{
    namespace Graphics
    {

        ///
        /// Compile JSL into GLSL.
        ///
        class JSLCompiler : public Singleton<JSLCompiler>
        {
        public:
            ///
            /// Compile JSL shader source into GLSL. 
            /// 
            /// @param jsl JSL shader source. 
            /// @param glsl_vertex Output of vertex glsl shader source. 
            /// @param glsl_fragment Output of fragment glsl shader source.
            /// @return True if compile successful, otherwise return false.
            ///
            bool compile(const std::string& jsl, std::string* glsl_vertex, std::string* glsl_fragment);
        
        private:
            singleton(JSLCompiler);

        };

    } // namespace Graphics
} // namespace JinEngine

#endif // (jin_graphics) && (jin_graphics & jin_graphics_shader)

#endif // __JE_JSL_COMPILER_H