5 #ifndef __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__ 6 #define __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__ 25 class IShaderConstantSetCallBack;
77 const c8* vertexShaderProgram,
78 const c8* vertexShaderEntryPointName,
80 const c8* pixelShaderProgram,
81 const c8* pixelShaderEntryPointName,
83 const c8* geometryShaderProgram,
84 const c8* geometryShaderEntryPointName =
"main",
91 s32 userData = 0) = 0;
95 const c8* vertexShaderProgram,
96 const c8* vertexShaderEntryPointName=
"main",
98 const c8* pixelShaderProgram=0,
99 const c8* pixelShaderEntryPointName=
"main",
106 vertexShaderProgram, vertexShaderEntryPointName,
107 vsCompileTarget, pixelShaderProgram,
108 pixelShaderEntryPointName, psCompileTarget,
111 callback, baseMaterial, userData);
119 const c8* vertexShaderProgram,
120 const c8* pixelShaderProgram=0,
126 vertexShaderProgram,
"main",
131 callback, baseMaterial, userData);
139 const c8* vertexShaderProgram,
140 const c8* pixelShaderProgram = 0,
141 const c8* geometryShaderProgram = 0,
150 vertexShaderProgram,
"main",
154 inType, outType, verticesOut,
155 callback, baseMaterial, userData);
201 const io::path& vertexShaderProgramFileName,
202 const c8* vertexShaderEntryPointName,
204 const io::path& pixelShaderProgramFileName,
205 const c8* pixelShaderEntryPointName,
207 const io::path& geometryShaderProgramFileName,
208 const c8* geometryShaderEntryPointName =
"main",
215 s32 userData = 0) = 0;
219 const io::path& vertexShaderProgramFileName,
220 const c8* vertexShaderEntryPointName =
"main",
222 const io::path& pixelShaderProgramFileName =
"",
223 const c8* pixelShaderEntryPointName =
"main",
230 vertexShaderProgramFileName, vertexShaderEntryPointName,
231 vsCompileTarget, pixelShaderProgramFileName,
232 pixelShaderEntryPointName, psCompileTarget,
235 callback, baseMaterial, userData);
243 const io::path& vertexShaderProgramFileName,
244 const io::path& pixelShaderProgramFileName =
"",
250 vertexShaderProgramFileName,
"main",
255 callback, baseMaterial, userData);
263 const io::path& vertexShaderProgramFileName,
264 const io::path& pixelShaderProgramFileName =
"",
265 const io::path& geometryShaderProgramFileName =
"",
274 vertexShaderProgramFileName,
"main",
277 geometryShaderProgramFileName,
"main",
EGST_GS_4_0,
278 inType, outType, verticesOut,
279 callback, baseMaterial, userData);
324 const c8* vertexShaderEntryPointName,
327 const c8* pixelShaderEntryPointName,
330 const c8* geometryShaderEntryPointName =
"main",
337 s32 userData = 0) = 0;
342 const c8* vertexShaderEntryPointName =
"main",
345 const c8* pixelShaderEntryPointName =
"main",
352 vertexShaderProgram, vertexShaderEntryPointName,
353 vsCompileTarget, pixelShaderProgram,
354 pixelShaderEntryPointName, psCompileTarget,
357 callback, baseMaterial, userData);
395 const c8* pixelShaderProgram = 0,
398 s32 userData = 0) = 0;
422 s32 userData = 0) = 0;
444 const io::path& pixelShaderProgramFileName,
447 s32 userData = 0) = 0;
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 access to a file.
E_PRIMITIVE_TYPE
Enumeration for all primitive types there are.
E_MATERIAL_TYPE
Abstracted and easy to use fixed function/programmable pipeline material modes.
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.
char c8
8 bit character variable.
E_PIXEL_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)
convenience function for use without geometry shaders
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.
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.
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.
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)=0
Adds a new high-level shading material renderer to the VideoDriver.
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)
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
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.
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)=0
Like IGPUProgrammingServices::addShaderMaterial(), but loads from files.
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)
convenience function for use without geometry shaders
Interface making it possible to create and use programs running on the GPU.