Irrlicht 3D Engine
IGPUProgrammingServices.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
2 // This file is part of the "Irrlicht Engine".
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
4 
5 #ifndef __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__
6 #define __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__
7 
8 #include "EShaderTypes.h"
9 #include "EMaterialTypes.h"
10 #include "EPrimitiveTypes.h"
11 #include "path.h"
12 
13 namespace irr
14 {
15 
16 namespace io
17 {
18  class IReadFile;
19 } // end namespace io
20 
21 namespace video
22 {
23 
24 class IVideoDriver;
25 class IShaderConstantSetCallBack;
26 
29 {
32 
35 };
36 
39 {
40 public:
41 
44 
46 
88  const c8* vertexShaderProgram,
89  const c8* vertexShaderEntryPointName,
90  E_VERTEX_SHADER_TYPE vsCompileTarget,
91  const c8* pixelShaderProgram,
92  const c8* pixelShaderEntryPointName,
93  E_PIXEL_SHADER_TYPE psCompileTarget,
94  const c8* geometryShaderProgram,
95  const c8* geometryShaderEntryPointName = "main",
96  E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
99  u32 verticesOut = 0,
100  IShaderConstantSetCallBack* callback = 0,
101  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
102  s32 userData = 0,
103  E_GPU_SHADING_LANGUAGE shadingLang = EGSL_DEFAULT) = 0;
104 
107  const c8* vertexShaderProgram,
108  const c8* vertexShaderEntryPointName="main",
109  E_VERTEX_SHADER_TYPE vsCompileTarget=EVST_VS_1_1,
110  const c8* pixelShaderProgram=0,
111  const c8* pixelShaderEntryPointName="main",
112  E_PIXEL_SHADER_TYPE psCompileTarget=EPST_PS_1_1,
113  IShaderConstantSetCallBack* callback=0,
114  E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID,
115  s32 userData=0,
117  {
119  vertexShaderProgram, vertexShaderEntryPointName,
120  vsCompileTarget, pixelShaderProgram,
121  pixelShaderEntryPointName, psCompileTarget,
122  0, "main", EGST_GS_4_0,
124  callback, baseMaterial, userData, shadingLang);
125  }
126 
128 
132  const c8* vertexShaderProgram,
133  const c8* pixelShaderProgram=0,
134  IShaderConstantSetCallBack* callback=0,
135  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
136  s32 userData=0)
137  {
139  vertexShaderProgram, "main",
140  EVST_VS_1_1, pixelShaderProgram,
141  "main", EPST_PS_1_1,
142  0, "main", EGST_GS_4_0,
144  callback, baseMaterial, userData);
145  }
146 
148 
152  const c8* vertexShaderProgram,
153  const c8* pixelShaderProgram = 0,
154  const c8* geometryShaderProgram = 0,
157  u32 verticesOut = 0,
158  IShaderConstantSetCallBack* callback = 0,
159  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
160  s32 userData = 0 )
161  {
163  vertexShaderProgram, "main",
164  EVST_VS_1_1, pixelShaderProgram,
165  "main", EPST_PS_1_1,
166  geometryShaderProgram, "main", EGST_GS_4_0,
167  inType, outType, verticesOut,
168  callback, baseMaterial, userData);
169  }
170 
172 
215  const io::path& vertexShaderProgramFileName,
216  const c8* vertexShaderEntryPointName,
217  E_VERTEX_SHADER_TYPE vsCompileTarget,
218  const io::path& pixelShaderProgramFileName,
219  const c8* pixelShaderEntryPointName,
220  E_PIXEL_SHADER_TYPE psCompileTarget,
221  const io::path& geometryShaderProgramFileName,
222  const c8* geometryShaderEntryPointName = "main",
223  E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
226  u32 verticesOut = 0,
227  IShaderConstantSetCallBack* callback = 0,
228  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
229  s32 userData = 0,
230  E_GPU_SHADING_LANGUAGE shadingLang = EGSL_DEFAULT) = 0;
231 
234  const io::path& vertexShaderProgramFileName,
235  const c8* vertexShaderEntryPointName = "main",
236  E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
237  const io::path& pixelShaderProgramFileName = "",
238  const c8* pixelShaderEntryPointName = "main",
239  E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
240  IShaderConstantSetCallBack* callback = 0,
241  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
242  s32 userData = 0,
243  E_GPU_SHADING_LANGUAGE shadingLang = EGSL_DEFAULT)
244  {
246  vertexShaderProgramFileName, vertexShaderEntryPointName,
247  vsCompileTarget, pixelShaderProgramFileName,
248  pixelShaderEntryPointName, psCompileTarget,
249  "", "main", EGST_GS_4_0,
251  callback, baseMaterial, userData, shadingLang);
252  }
253 
255 
259  const io::path& vertexShaderProgramFileName,
260  const io::path& pixelShaderProgramFileName = "",
261  IShaderConstantSetCallBack* callback = 0,
262  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
263  s32 userData = 0 )
264  {
266  vertexShaderProgramFileName, "main",
267  EVST_VS_1_1, pixelShaderProgramFileName,
268  "main", EPST_PS_1_1,
269  "", "main", EGST_GS_4_0,
271  callback, baseMaterial, userData);
272  }
273 
275 
279  const io::path& vertexShaderProgramFileName,
280  const io::path& pixelShaderProgramFileName = "",
281  const io::path& geometryShaderProgramFileName = "",
284  u32 verticesOut = 0,
285  IShaderConstantSetCallBack* callback = 0,
286  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
287  s32 userData = 0 )
288  {
290  vertexShaderProgramFileName, "main",
291  EVST_VS_1_1, pixelShaderProgramFileName,
292  "main", EPST_PS_1_1,
293  geometryShaderProgramFileName, "main", EGST_GS_4_0,
294  inType, outType, verticesOut,
295  callback, baseMaterial, userData);
296  }
297 
299 
340  io::IReadFile* vertexShaderProgram,
341  const c8* vertexShaderEntryPointName,
342  E_VERTEX_SHADER_TYPE vsCompileTarget,
343  io::IReadFile* pixelShaderProgram,
344  const c8* pixelShaderEntryPointName,
345  E_PIXEL_SHADER_TYPE psCompileTarget,
346  io::IReadFile* geometryShaderProgram,
347  const c8* geometryShaderEntryPointName = "main",
348  E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
351  u32 verticesOut = 0,
352  IShaderConstantSetCallBack* callback = 0,
353  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
354  s32 userData = 0,
355  E_GPU_SHADING_LANGUAGE shadingLang = EGSL_DEFAULT) = 0;
356 
359  io::IReadFile* vertexShaderProgram,
360  const c8* vertexShaderEntryPointName = "main",
361  E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
362  io::IReadFile* pixelShaderProgram = 0,
363  const c8* pixelShaderEntryPointName = "main",
364  E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
365  IShaderConstantSetCallBack* callback = 0,
366  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
367  s32 userData = 0,
368  E_GPU_SHADING_LANGUAGE shadingLang = EGSL_DEFAULT)
369  {
371  vertexShaderProgram, vertexShaderEntryPointName,
372  vsCompileTarget, pixelShaderProgram,
373  pixelShaderEntryPointName, psCompileTarget,
374  0, "main", EGST_GS_4_0,
376  callback, baseMaterial, userData, shadingLang);
377  }
378 
380 
413  virtual s32 addShaderMaterial(const c8* vertexShaderProgram = 0,
414  const c8* pixelShaderProgram = 0,
415  IShaderConstantSetCallBack* callback = 0,
416  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
417  s32 userData = 0) = 0;
418 
420 
437  virtual s32 addShaderMaterialFromFiles(io::IReadFile* vertexShaderProgram,
438  io::IReadFile* pixelShaderProgram,
439  IShaderConstantSetCallBack* callback = 0,
440  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
441  s32 userData = 0) = 0;
442 
444 
462  virtual s32 addShaderMaterialFromFiles(const io::path& vertexShaderProgramFileName,
463  const io::path& pixelShaderProgramFileName,
464  IShaderConstantSetCallBack* callback = 0,
465  E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
466  s32 userData = 0) = 0;
467 };
468 
469 
470 } // end namespace video
471 } // end namespace irr
472 
473 #endif
474 
irr::video::IGPUProgrammingServices::addShaderMaterialFromFiles
virtual s32 addShaderMaterialFromFiles(io::IReadFile *vertexShaderProgram, io::IReadFile *pixelShaderProgram, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0)=0
Like IGPUProgrammingServices::addShaderMaterial(), but loads from files.
path.h
irr::video::IGPUProgrammingServices::addHighLevelShaderMaterial
s32 addHighLevelShaderMaterial(const c8 *vertexShaderProgram, const c8 *pixelShaderProgram=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0)
convenience function for use with many defaults, without geometry shader
Definition: IGPUProgrammingServices.h:131
irr::video::E_VERTEX_SHADER_TYPE
E_VERTEX_SHADER_TYPE
Compile target enumeration for the addHighLevelShaderMaterial() method.
Definition: EShaderTypes.h:12
irr::c8
char c8
8 bit character variable.
Definition: irrTypes.h:31
irr::video::EMT_SOLID
@ EMT_SOLID
Standard solid material.
Definition: EMaterialTypes.h:19
irr::video::IGPUProgrammingServices::addHighLevelShaderMaterialFromFiles
s32 addHighLevelShaderMaterialFromFiles(const io::path &vertexShaderProgramFileName, const c8 *vertexShaderEntryPointName="main", E_VERTEX_SHADER_TYPE vsCompileTarget=EVST_VS_1_1, const io::path &pixelShaderProgramFileName="", const c8 *pixelShaderEntryPointName="main", E_PIXEL_SHADER_TYPE psCompileTarget=EPST_PS_1_1, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0, E_GPU_SHADING_LANGUAGE shadingLang=EGSL_DEFAULT)
convenience function for use without geometry shaders
Definition: IGPUProgrammingServices.h:233
irr::scene::E_PRIMITIVE_TYPE
E_PRIMITIVE_TYPE
Enumeration for all primitive types there are.
Definition: EPrimitiveTypes.h:14
irr::video::IGPUProgrammingServices::addShaderMaterial
virtual s32 addShaderMaterial(const c8 *vertexShaderProgram=0, const c8 *pixelShaderProgram=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0)=0
Adds a new ASM shader material renderer to the VideoDriver.
irr::video::IGPUProgrammingServices::~IGPUProgrammingServices
virtual ~IGPUProgrammingServices()
Destructor.
Definition: IGPUProgrammingServices.h:43
irr::io::IReadFile
Interface providing read acess to a file.
Definition: IReadFile.h:17
irr::scene::EPT_TRIANGLES
@ EPT_TRIANGLES
Explicitly set all vertices for each triangle.
Definition: EPrimitiveTypes.h:37
irr::s32
signed int s32
32 bit signed variable.
Definition: irrTypes.h:66
irr::video::IGPUProgrammingServices::addHighLevelShaderMaterialFromFiles
s32 addHighLevelShaderMaterialFromFiles(io::IReadFile *vertexShaderProgram, const c8 *vertexShaderEntryPointName="main", E_VERTEX_SHADER_TYPE vsCompileTarget=EVST_VS_1_1, io::IReadFile *pixelShaderProgram=0, const c8 *pixelShaderEntryPointName="main", E_PIXEL_SHADER_TYPE psCompileTarget=EPST_PS_1_1, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0, E_GPU_SHADING_LANGUAGE shadingLang=EGSL_DEFAULT)
convenience function for use without geometry shaders
Definition: IGPUProgrammingServices.h:358
irr::video::IGPUProgrammingServices::addHighLevelShaderMaterialFromFiles
s32 addHighLevelShaderMaterialFromFiles(const io::path &vertexShaderProgramFileName, const io::path &pixelShaderProgramFileName="", IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0)
convenience function for use with many defaults, without geometry shader
Definition: IGPUProgrammingServices.h:258
irr::video::IGPUProgrammingServices
Interface making it possible to create and use programs running on the GPU.
Definition: IGPUProgrammingServices.h:38
irr::video::IGPUProgrammingServices::addHighLevelShaderMaterialFromFiles
virtual s32 addHighLevelShaderMaterialFromFiles(const io::path &vertexShaderProgramFileName, const c8 *vertexShaderEntryPointName, E_VERTEX_SHADER_TYPE vsCompileTarget, const io::path &pixelShaderProgramFileName, const c8 *pixelShaderEntryPointName, E_PIXEL_SHADER_TYPE psCompileTarget, const io::path &geometryShaderProgramFileName, const c8 *geometryShaderEntryPointName="main", E_GEOMETRY_SHADER_TYPE gsCompileTarget=EGST_GS_4_0, scene::E_PRIMITIVE_TYPE inType=scene::EPT_TRIANGLES, scene::E_PRIMITIVE_TYPE outType=scene::EPT_TRIANGLE_STRIP, u32 verticesOut=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0, E_GPU_SHADING_LANGUAGE shadingLang=EGSL_DEFAULT)=0
Like IGPUProgrammingServices::addShaderMaterial(), but loads from files.
irr::video::E_GPU_SHADING_LANGUAGE
E_GPU_SHADING_LANGUAGE
Enumeration for different types of shading languages.
Definition: IGPUProgrammingServices.h:28
irr::video::EGSL_CG
@ EGSL_CG
Cg shading language.*‍/.
Definition: IGPUProgrammingServices.h:34
irr::video::IGPUProgrammingServices::addHighLevelShaderMaterial
virtual s32 addHighLevelShaderMaterial(const c8 *vertexShaderProgram, const c8 *vertexShaderEntryPointName, E_VERTEX_SHADER_TYPE vsCompileTarget, const c8 *pixelShaderProgram, const c8 *pixelShaderEntryPointName, E_PIXEL_SHADER_TYPE psCompileTarget, const c8 *geometryShaderProgram, const c8 *geometryShaderEntryPointName="main", E_GEOMETRY_SHADER_TYPE gsCompileTarget=EGST_GS_4_0, scene::E_PRIMITIVE_TYPE inType=scene::EPT_TRIANGLES, scene::E_PRIMITIVE_TYPE outType=scene::EPT_TRIANGLE_STRIP, u32 verticesOut=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0, E_GPU_SHADING_LANGUAGE shadingLang=EGSL_DEFAULT)=0
Adds a new high-level shading material renderer to the VideoDriver.
irr::video::EVST_VS_1_1
@ EVST_VS_1_1
Definition: EShaderTypes.h:14
irr::video::E_MATERIAL_TYPE
E_MATERIAL_TYPE
Abstracted and easy to use fixed function/programmable pipeline material modes.
Definition: EMaterialTypes.h:14
EMaterialTypes.h
irr::video::EGST_GS_4_0
@ EGST_GS_4_0
Definition: EShaderTypes.h:74
irr::video::IGPUProgrammingServices::addHighLevelShaderMaterialFromFiles
s32 addHighLevelShaderMaterialFromFiles(const io::path &vertexShaderProgramFileName, const io::path &pixelShaderProgramFileName="", const io::path &geometryShaderProgramFileName="", scene::E_PRIMITIVE_TYPE inType=scene::EPT_TRIANGLES, scene::E_PRIMITIVE_TYPE outType=scene::EPT_TRIANGLE_STRIP, u32 verticesOut=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0)
convenience function for use with many defaults, with geometry shader
Definition: IGPUProgrammingServices.h:278
irr::video::E_PIXEL_SHADER_TYPE
E_PIXEL_SHADER_TYPE
Compile target enumeration for the addHighLevelShaderMaterial() method.
Definition: EShaderTypes.h:38
irr::core::string< fschar_t >
irr
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
irr::scene::EPT_TRIANGLE_STRIP
@ EPT_TRIANGLE_STRIP
Definition: EPrimitiveTypes.h:30
EShaderTypes.h
irr::u32
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
EPrimitiveTypes.h
irr::video::EPST_PS_1_1
@ EPST_PS_1_1
Definition: EShaderTypes.h:40
irr::video::IGPUProgrammingServices::addHighLevelShaderMaterial
s32 addHighLevelShaderMaterial(const c8 *vertexShaderProgram, const c8 *vertexShaderEntryPointName="main", E_VERTEX_SHADER_TYPE vsCompileTarget=EVST_VS_1_1, const c8 *pixelShaderProgram=0, const c8 *pixelShaderEntryPointName="main", E_PIXEL_SHADER_TYPE psCompileTarget=EPST_PS_1_1, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0, E_GPU_SHADING_LANGUAGE shadingLang=EGSL_DEFAULT)
convenience function for use without geometry shaders
Definition: IGPUProgrammingServices.h:106
irr::video::EGSL_DEFAULT
@ EGSL_DEFAULT
The default language, so HLSL for Direct3D and GLSL for OpenGL.
Definition: IGPUProgrammingServices.h:31
irr::video::IGPUProgrammingServices::addHighLevelShaderMaterial
s32 addHighLevelShaderMaterial(const c8 *vertexShaderProgram, const c8 *pixelShaderProgram=0, const c8 *geometryShaderProgram=0, scene::E_PRIMITIVE_TYPE inType=scene::EPT_TRIANGLES, scene::E_PRIMITIVE_TYPE outType=scene::EPT_TRIANGLE_STRIP, u32 verticesOut=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0)
convenience function for use with many defaults, with geometry shader
Definition: IGPUProgrammingServices.h:151
irr::video::E_GEOMETRY_SHADER_TYPE
E_GEOMETRY_SHADER_TYPE
Enum for supported geometry shader types.
Definition: EShaderTypes.h:72
irr::video::IShaderConstantSetCallBack
Interface making it possible to set constants for gpu programs every frame.
Definition: IShaderConstantSetCallBack.h:21