]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/OpenGL/FixedPipelineRenderer.h
4a9bb95be1073da108f8fe80129a8eae4463f09d
[irrlicht.git] / source / Irrlicht / OpenGL / FixedPipelineRenderer.h
1 // Copyright (C) 2014 Patryk Nadrowski\r
2 // This file is part of the "Irrlicht Engine".\r
3 // For conditions of distribution and use, see copyright notice in Irrlicht.h\r
4 \r
5 #pragma once\r
6 \r
7 #include "IShaderConstantSetCallBack.h"\r
8 #include "IMaterialRendererServices.h"\r
9 \r
10 namespace irr\r
11 {\r
12 namespace video\r
13 {\r
14 \r
15 class COpenGL3MaterialBaseCB : public IShaderConstantSetCallBack\r
16 {\r
17 public:\r
18         COpenGL3MaterialBaseCB();\r
19 \r
20         virtual void OnSetMaterial(const SMaterial& material);\r
21         virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);\r
22 \r
23 protected:\r
24         bool FirstUpdateBase;\r
25 \r
26         s32 WVPMatrixID;\r
27         s32 WVMatrixID;\r
28         s32 NMatrixID;\r
29 \r
30         s32 GlobalAmbientID;\r
31         s32 MaterialAmbientID;\r
32         s32 MaterialDiffuseID;\r
33         s32 MaterialEmissiveID;\r
34         s32 MaterialSpecularID;\r
35         s32 MaterialShininessID;\r
36 \r
37         s32 FogEnableID;\r
38         s32 FogTypeID;\r
39         s32 FogColorID;\r
40         s32 FogStartID;\r
41         s32 FogEndID;\r
42         s32 FogDensityID;\r
43 \r
44         s32 ThicknessID;\r
45 \r
46         bool LightEnable;\r
47         SColorf GlobalAmbient;\r
48         SColorf MaterialAmbient;\r
49         SColorf MaterialDiffuse;\r
50         SColorf MaterialEmissive;\r
51         SColorf MaterialSpecular;\r
52         f32 MaterialShininess;\r
53 \r
54         s32 FogEnable;\r
55         s32 FogType;\r
56         SColorf FogColor;\r
57         f32 FogStart;\r
58         f32 FogEnd;\r
59         f32 FogDensity;\r
60 \r
61         f32 Thickness;\r
62 };\r
63 \r
64 class COpenGL3MaterialSolidCB : public COpenGL3MaterialBaseCB\r
65 {\r
66 public:\r
67         COpenGL3MaterialSolidCB();\r
68 \r
69         virtual void OnSetMaterial(const SMaterial& material);\r
70         virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);\r
71 \r
72 protected:\r
73         bool FirstUpdate;\r
74 \r
75         s32 TMatrix0ID;\r
76         s32 AlphaRefID;\r
77         s32 TextureUsage0ID;\r
78         s32 TextureUnit0ID;\r
79 \r
80         f32 AlphaRef;\r
81         s32 TextureUsage0;\r
82         s32 TextureUnit0;\r
83 };\r
84 \r
85 class COpenGL3MaterialSolid2CB : public COpenGL3MaterialBaseCB\r
86 {\r
87 public:\r
88         COpenGL3MaterialSolid2CB();\r
89 \r
90         virtual void OnSetMaterial(const SMaterial& material);\r
91         virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);\r
92 \r
93 protected:\r
94         bool FirstUpdate;\r
95 \r
96         s32 TMatrix0ID;\r
97         s32 TMatrix1ID;\r
98         s32 TextureUsage0ID;\r
99         s32 TextureUsage1ID;\r
100         s32 TextureUnit0ID;\r
101         s32 TextureUnit1ID;\r
102 \r
103         s32 TextureUsage0;\r
104         s32 TextureUsage1;\r
105         s32 TextureUnit0;\r
106         s32 TextureUnit1;\r
107 };\r
108 \r
109 class COpenGL3MaterialLightmapCB : public COpenGL3MaterialBaseCB\r
110 {\r
111 public:\r
112         COpenGL3MaterialLightmapCB(float modulate);\r
113 \r
114         virtual void OnSetMaterial(const SMaterial& material);\r
115         virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);\r
116 \r
117 protected:\r
118         bool FirstUpdate;\r
119 \r
120         s32 TMatrix0ID;\r
121         s32 TMatrix1ID;\r
122         s32 ModulateID;\r
123         s32 TextureUsage0ID;\r
124         s32 TextureUsage1ID;\r
125         s32 TextureUnit0ID;\r
126         s32 TextureUnit1ID;\r
127 \r
128         f32 Modulate;\r
129         s32 TextureUsage0;\r
130         s32 TextureUsage1;\r
131         s32 TextureUnit0;\r
132         s32 TextureUnit1;\r
133 };\r
134 \r
135 class COpenGL3MaterialReflectionCB : public COpenGL3MaterialBaseCB\r
136 {\r
137 public:\r
138         COpenGL3MaterialReflectionCB();\r
139 \r
140         virtual void OnSetMaterial(const SMaterial& material);\r
141         virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);\r
142 \r
143 protected:\r
144         bool FirstUpdate;\r
145 \r
146         s32 TMatrix0ID;\r
147         s32 TextureUsage0ID;\r
148         s32 TextureUsage1ID;\r
149         s32 TextureUnit0ID;\r
150         s32 TextureUnit1ID;\r
151 \r
152         s32 TextureUsage0;\r
153         s32 TextureUsage1;\r
154         s32 TextureUnit0;\r
155         s32 TextureUnit1;\r
156 };\r
157 \r
158 class COpenGL3MaterialOneTextureBlendCB : public COpenGL3MaterialBaseCB\r
159 {\r
160 public:\r
161         COpenGL3MaterialOneTextureBlendCB();\r
162 \r
163         virtual void OnSetMaterial(const SMaterial& material);\r
164         virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);\r
165 \r
166 protected:\r
167         bool FirstUpdate;\r
168 \r
169         s32 TMatrix0ID;\r
170         s32 BlendTypeID;\r
171         s32 TextureUsage0ID;\r
172         s32 TextureUnit0ID;\r
173 \r
174         s32 BlendType;\r
175         s32 TextureUsage0;\r
176         s32 TextureUnit0;\r
177 };\r
178 \r
179 }\r
180 }\r