blob: f7aa48acc6cc71950d920333394539f0967acc44 (
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#ifndef __JE_JSL_COMPILER_H__
#define __JE_JSL_COMPILER_H__
#include "../../core/configuration.h"
#if defined(jin_graphics) && (jin_graphics & jin_graphics_shader)
#include <string>
#include "../../common/string.h"
#include "../../common/singleton.hpp"
namespace JinEngine
{
namespace Graphics
{
namespace Shaders
{
extern JinEngine::String SHADER_PROJECTION_MATRIX;
extern JinEngine::String SHADER_MODELVIEW_MATRIX;
extern JinEngine::String SHADER_MAIN_TEXTURE;
extern JinEngine::String SHADER_VERTEX_COORDS;
extern JinEngine::String SHADER_TEXTURE_COORDS;
extern JinEngine::String SHADER_VERTEX_COLOR;
extern JinEngine::String SHADER_TIME;
extern JinEngine::String SHADER_RENDERTARGET_SIZE;
///
/// 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:
JinEngine::String formatVertexShader(const JinEngine::String& vert);
JinEngine::String formatFragmentShader(const JinEngine::String& frag);
};
} // namespace Shaders
} // namespace Graphics
} // namespace JinEngine
#endif // (jin_graphics) && (jin_graphics & jin_graphics_shader)
#endif // __JE_JSL_COMPILER_H__
|