5 #ifndef __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__ 6 #define __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__ 25 class IShaderConstantSetCallBack;
87 virtual s32 addHighLevelShaderMaterial(
88 const c8* vertexShaderProgram,
89 const c8* vertexShaderEntryPointName,
91 const c8* pixelShaderProgram,
92 const c8* pixelShaderEntryPointName,
94 const c8* geometryShaderProgram,
95 const c8* geometryShaderEntryPointName =
"main",
107 const c8* vertexShaderProgram,
108 const c8* vertexShaderEntryPointName=
"main",
110 const c8* pixelShaderProgram=0,
111 const c8* pixelShaderEntryPointName=
"main",
118 return addHighLevelShaderMaterial(
119 vertexShaderProgram, vertexShaderEntryPointName,
120 vsCompileTarget, pixelShaderProgram,
121 pixelShaderEntryPointName, psCompileTarget,
124 callback, baseMaterial, userData, shadingLang);
132 const c8* vertexShaderProgram,
133 const c8* pixelShaderProgram=0,
138 return addHighLevelShaderMaterial(
139 vertexShaderProgram,
"main",
144 callback, baseMaterial, userData);
152 const c8* vertexShaderProgram,
153 const c8* pixelShaderProgram = 0,
154 const c8* geometryShaderProgram = 0,
162 return addHighLevelShaderMaterial(
163 vertexShaderProgram,
"main",
167 inType, outType, verticesOut,
168 callback, baseMaterial, userData);
214 virtual s32 addHighLevelShaderMaterialFromFiles(
215 const io::path& vertexShaderProgramFileName,
216 const c8* vertexShaderEntryPointName,
218 const io::path& pixelShaderProgramFileName,
219 const c8* pixelShaderEntryPointName,
221 const io::path& geometryShaderProgramFileName,
222 const c8* geometryShaderEntryPointName =
"main",
234 const io::path& vertexShaderProgramFileName,
235 const c8* vertexShaderEntryPointName =
"main",
237 const io::path& pixelShaderProgramFileName =
"",
238 const c8* pixelShaderEntryPointName =
"main",
245 return addHighLevelShaderMaterialFromFiles(
246 vertexShaderProgramFileName, vertexShaderEntryPointName,
247 vsCompileTarget, pixelShaderProgramFileName,
248 pixelShaderEntryPointName, psCompileTarget,
251 callback, baseMaterial, userData, shadingLang);
259 const io::path& vertexShaderProgramFileName,
260 const io::path& pixelShaderProgramFileName =
"",
265 return addHighLevelShaderMaterialFromFiles(
266 vertexShaderProgramFileName,
"main",
271 callback, baseMaterial, userData);
279 const io::path& vertexShaderProgramFileName,
280 const io::path& pixelShaderProgramFileName =
"",
281 const io::path& geometryShaderProgramFileName =
"",
289 return addHighLevelShaderMaterialFromFiles(
290 vertexShaderProgramFileName,
"main",
293 geometryShaderProgramFileName,
"main",
EGST_GS_4_0,
294 inType, outType, verticesOut,
295 callback, baseMaterial, userData);
339 virtual s32 addHighLevelShaderMaterialFromFiles(
341 const c8* vertexShaderEntryPointName,
344 const c8* pixelShaderEntryPointName,
347 const c8* geometryShaderEntryPointName =
"main",
360 const c8* vertexShaderEntryPointName =
"main",
363 const c8* pixelShaderEntryPointName =
"main",
370 return addHighLevelShaderMaterialFromFiles(
371 vertexShaderProgram, vertexShaderEntryPointName,
372 vsCompileTarget, pixelShaderProgram,
373 pixelShaderEntryPointName, psCompileTarget,
376 callback, baseMaterial, userData, shadingLang);
413 virtual s32 addShaderMaterial(
const c8* vertexShaderProgram = 0,
414 const c8* pixelShaderProgram = 0,
417 s32 userData = 0) = 0;
441 s32 userData = 0) = 0;
462 virtual s32 addShaderMaterialFromFiles(
const io::path& vertexShaderProgramFileName,
463 const io::path& pixelShaderProgramFileName,
466 s32 userData = 0) = 0;
E_GPU_SHADING_LANGUAGE
Enumeration for different types of shading languages.
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
Interface providing read acess to a file.
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
E_PRIMITIVE_TYPE
Enumeration for all primitive types there are.
E_MATERIAL_TYPE
Abstracted and easy to use fixed function/programmable pipeline material modes.
char c8
8 bit character variable.
E_PIXEL_SHADER_TYPE
Compile target enumeration for the addHighLevelShaderMaterial() method.
Everything in the Irrlicht Engine can be found in this namespace.
signed int s32
32 bit signed variable.
Interface making it possible to set constants for gpu programs every frame.
E_GEOMETRY_SHADER_TYPE
Enum for supported geometry shader types.
unsigned int u32
32 bit unsigned variable.
Explicitly set all vertices for each triangle.
E_VERTEX_SHADER_TYPE
Compile target enumeration for the addHighLevelShaderMaterial() method.
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
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
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
The default language, so HLSL for Direct3D and GLSL for OpenGL.
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
virtual ~IGPUProgrammingServices()
Destructor.
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
Interface making it possible to create and use programs running on the GPU.