5#ifndef __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__
6#define __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__
25class IShaderConstantSetCallBack;
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",
119 vertexShaderProgram, vertexShaderEntryPointName,
120 vsCompileTarget, pixelShaderProgram,
121 pixelShaderEntryPointName, psCompileTarget,
124 callback, baseMaterial, userData, shadingLang);
132 const c8* vertexShaderProgram,
133 const c8* pixelShaderProgram=0,
139 vertexShaderProgram,
"main",
144 callback, baseMaterial, userData);
152 const c8* vertexShaderProgram,
153 const c8* pixelShaderProgram = 0,
154 const c8* geometryShaderProgram = 0,
163 vertexShaderProgram,
"main",
167 inType, outType, verticesOut,
168 callback, baseMaterial, userData);
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",
246 vertexShaderProgramFileName, vertexShaderEntryPointName,
247 vsCompileTarget, pixelShaderProgramFileName,
248 pixelShaderEntryPointName, psCompileTarget,
251 callback, baseMaterial, userData, shadingLang);
259 const io::path& vertexShaderProgramFileName,
260 const io::path& pixelShaderProgramFileName =
"",
266 vertexShaderProgramFileName,
"main",
271 callback, baseMaterial, userData);
279 const io::path& vertexShaderProgramFileName,
280 const io::path& pixelShaderProgramFileName =
"",
281 const io::path& geometryShaderProgramFileName =
"",
290 vertexShaderProgramFileName,
"main",
293 geometryShaderProgramFileName,
"main",
EGST_GS_4_0,
294 inType, outType, verticesOut,
295 callback, baseMaterial, userData);
341 const c8* vertexShaderEntryPointName,
344 const c8* pixelShaderEntryPointName,
347 const c8* geometryShaderEntryPointName =
"main",
360 const c8* vertexShaderEntryPointName =
"main",
363 const c8* pixelShaderEntryPointName =
"main",
371 vertexShaderProgram, vertexShaderEntryPointName,
372 vsCompileTarget, pixelShaderProgram,
373 pixelShaderEntryPointName, psCompileTarget,
376 callback, baseMaterial, userData, shadingLang);
414 const c8* pixelShaderProgram = 0,
417 s32 userData = 0) = 0;
441 s32 userData = 0) = 0;
463 const io::path& pixelShaderProgramFileName,
466 s32 userData = 0) = 0;
Interface providing read acess to a file.
Interface making it possible to create and use programs running on the GPU.
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
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.
virtual s32 addShaderMaterialFromFiles(const io::path &vertexShaderProgramFileName, const io::path &pixelShaderProgramFileName, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=video::EMT_SOLID, s32 userData=0)=0
Like IGPUProgrammingServices::addShaderMaterial(), but loads from files.
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.
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
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
virtual s32 addHighLevelShaderMaterialFromFiles(io::IReadFile *vertexShaderProgram, const c8 *vertexShaderEntryPointName, E_VERTEX_SHADER_TYPE vsCompileTarget, io::IReadFile *pixelShaderProgram, const c8 *pixelShaderEntryPointName, E_PIXEL_SHADER_TYPE psCompileTarget, io::IReadFile *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
Like IGPUProgrammingServices::addShaderMaterial(), but loads from files.
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 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
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.
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="", 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 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.
Interface making it possible to set constants for gpu programs every frame.
E_PRIMITIVE_TYPE
Enumeration for all primitive types there are.
@ EPT_TRIANGLES
Explicitly set all vertices for each triangle.
E_PIXEL_SHADER_TYPE
Compile target enumeration for the addHighLevelShaderMaterial() method.
E_GEOMETRY_SHADER_TYPE
Enum for supported geometry shader types.
E_GPU_SHADING_LANGUAGE
Enumeration for different types of shading languages.
@ EGSL_CG
Cg shading language.*/.
@ EGSL_DEFAULT
The default language, so HLSL for Direct3D and GLSL for OpenGL.
E_VERTEX_SHADER_TYPE
Compile target enumeration for the addHighLevelShaderMaterial() method.
E_MATERIAL_TYPE
Abstracted and easy to use fixed function/programmable pipeline material modes.
@ EMT_SOLID
Standard solid material.
Everything in the Irrlicht Engine can be found in this namespace.
unsigned int u32
32 bit unsigned variable.
char c8
8 bit character variable.
signed int s32
32 bit signed variable.