Duckcpp 2.1.0
Duckcpp is a high-performance c++ graphics engine.
Loading...
Searching...
No Matches
IGPUProgrammingServices.hpp
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 duckcpp/duckcpp.hpp
4
5#ifndef DCPP_I_GPU_PROGRAMMING_SERVICES_HPP_INCLUDED
6#define DCPP_I_GPU_PROGRAMMING_SERVICES_HPP_INCLUDED
7
8#include <duckcpp/core/engine/EShaderTypes.hpp>
9#include <duckcpp/core/engine/EMaterialTypes.hpp>
10#include <duckcpp/core/engine/EPrimitiveTypes.hpp>
11#include <duckcpp/core/engine/path.hpp>
12
13namespace dcpp
14{
15
16namespace io
17{
18 class IReadFile;
19} // end namespace io
20
21namespace video
22{
23
24class IVideoDriver;
25class IShaderConstantSetCallBack;
26
29{
30public:
31
34
36
77 const dcpp::char_kt* vertexShaderProgram,
78 const dcpp::char_kt* vertexShaderEntryPointName,
79 E_VERTEX_SHADER_TYPE vsCompileTarget,
80 const dcpp::char_kt* pixelShaderProgram,
81 const dcpp::char_kt* pixelShaderEntryPointName,
82 E_PIXEL_SHADER_TYPE psCompileTarget,
83 const dcpp::char_kt* geometryShaderProgram,
84 const dcpp::char_kt* geometryShaderEntryPointName = "main",
85 E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
88 dcpp::uint32_kt verticesOut = 0,
89 IShaderConstantSetCallBack* callback = 0,
91 dcpp::int32_kt userData = 0) = 0;
92
95 const dcpp::char_kt* vertexShaderProgram,
96 const dcpp::char_kt* vertexShaderEntryPointName="main",
97 E_VERTEX_SHADER_TYPE vsCompileTarget=EVST_VS_1_1,
98 const dcpp::char_kt* pixelShaderProgram=0,
99 const dcpp::char_kt* pixelShaderEntryPointName="main",
100 E_PIXEL_SHADER_TYPE psCompileTarget=EPST_PS_1_1,
101 IShaderConstantSetCallBack* callback=0,
103 dcpp::int32_kt userData=0)
104 {
106 vertexShaderProgram, vertexShaderEntryPointName,
107 vsCompileTarget, pixelShaderProgram,
108 pixelShaderEntryPointName, psCompileTarget,
109 0, "main", EGST_GS_4_0,
111 callback, baseMaterial, userData);
112 }
113
115
119 const dcpp::char_kt* vertexShaderProgram,
120 const dcpp::char_kt* pixelShaderProgram=0,
121 IShaderConstantSetCallBack* callback=0,
123 dcpp::int32_kt userData=0)
124 {
126 vertexShaderProgram, "main",
127 EVST_VS_1_1, pixelShaderProgram,
128 "main", EPST_PS_1_1,
129 0, "main", EGST_GS_4_0,
131 callback, baseMaterial, userData);
132 }
133
135
139 const dcpp::char_kt* vertexShaderProgram,
140 const dcpp::char_kt* pixelShaderProgram = 0,
141 const dcpp::char_kt* geometryShaderProgram = 0,
144 dcpp::uint32_kt verticesOut = 0,
145 IShaderConstantSetCallBack* callback = 0,
147 dcpp::int32_kt userData = 0 )
148 {
150 vertexShaderProgram, "main",
151 EVST_VS_1_1, pixelShaderProgram,
152 "main", EPST_PS_1_1,
153 geometryShaderProgram, "main", EGST_GS_4_0,
154 inType, outType, verticesOut,
155 callback, baseMaterial, userData);
156 }
157
159
201 const dcpp::io::path& vertexShaderProgramFileName,
202 const dcpp::char_kt* vertexShaderEntryPointName,
203 E_VERTEX_SHADER_TYPE vsCompileTarget,
204 const dcpp::io::path& pixelShaderProgramFileName,
205 const dcpp::char_kt* pixelShaderEntryPointName,
206 E_PIXEL_SHADER_TYPE psCompileTarget,
207 const dcpp::io::path& geometryShaderProgramFileName,
208 const dcpp::char_kt* geometryShaderEntryPointName = "main",
209 E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
212 dcpp::uint32_kt verticesOut = 0,
213 IShaderConstantSetCallBack* callback = 0,
215 dcpp::int32_kt userData = 0) = 0;
216
219 const dcpp::io::path& vertexShaderProgramFileName,
220 const dcpp::char_kt* vertexShaderEntryPointName = "main",
221 E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
222 const dcpp::io::path& pixelShaderProgramFileName = "",
223 const dcpp::char_kt* pixelShaderEntryPointName = "main",
224 E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
225 IShaderConstantSetCallBack* callback = 0,
227 dcpp::int32_kt userData = 0)
228 {
230 vertexShaderProgramFileName, vertexShaderEntryPointName,
231 vsCompileTarget, pixelShaderProgramFileName,
232 pixelShaderEntryPointName, psCompileTarget,
233 "", "main", EGST_GS_4_0,
235 callback, baseMaterial, userData);
236 }
237
239
243 const dcpp::io::path& vertexShaderProgramFileName,
244 const dcpp::io::path& pixelShaderProgramFileName = "",
245 IShaderConstantSetCallBack* callback = 0,
247 dcpp::int32_kt userData = 0 )
248 {
250 vertexShaderProgramFileName, "main",
251 EVST_VS_1_1, pixelShaderProgramFileName,
252 "main", EPST_PS_1_1,
253 "", "main", EGST_GS_4_0,
255 callback, baseMaterial, userData);
256 }
257
259
263 const dcpp::io::path& vertexShaderProgramFileName,
264 const dcpp::io::path& pixelShaderProgramFileName = "",
265 const dcpp::io::path& geometryShaderProgramFileName = "",
268 dcpp::uint32_kt verticesOut = 0,
269 IShaderConstantSetCallBack* callback = 0,
271 dcpp::int32_kt userData = 0 )
272 {
274 vertexShaderProgramFileName, "main",
275 EVST_VS_1_1, pixelShaderProgramFileName,
276 "main", EPST_PS_1_1,
277 geometryShaderProgramFileName, "main", EGST_GS_4_0,
278 inType, outType, verticesOut,
279 callback, baseMaterial, userData);
280 }
281
283
323 dcpp::io::IReadFile* vertexShaderProgram,
324 const dcpp::char_kt* vertexShaderEntryPointName,
325 E_VERTEX_SHADER_TYPE vsCompileTarget,
326 dcpp::io::IReadFile* pixelShaderProgram,
327 const dcpp::char_kt* pixelShaderEntryPointName,
328 E_PIXEL_SHADER_TYPE psCompileTarget,
329 dcpp::io::IReadFile* geometryShaderProgram,
330 const dcpp::char_kt* geometryShaderEntryPointName = "main",
331 E_GEOMETRY_SHADER_TYPE gsCompileTarget = EGST_GS_4_0,
334 dcpp::uint32_kt verticesOut = 0,
335 IShaderConstantSetCallBack* callback = 0,
337 dcpp::int32_kt userData = 0) = 0;
338
341 dcpp::io::IReadFile* vertexShaderProgram,
342 const dcpp::char_kt* vertexShaderEntryPointName = "main",
343 E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
344 dcpp::io::IReadFile* pixelShaderProgram = 0,
345 const dcpp::char_kt* pixelShaderEntryPointName = "main",
346 E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
347 IShaderConstantSetCallBack* callback = 0,
349 dcpp::int32_kt userData = 0)
350 {
352 vertexShaderProgram, vertexShaderEntryPointName,
353 vsCompileTarget, pixelShaderProgram,
354 pixelShaderEntryPointName, psCompileTarget,
355 0, "main", EGST_GS_4_0,
357 callback, baseMaterial, userData);
358 }
359
361
394 virtual dcpp::int32_kt addShaderMaterial(const dcpp::char_kt* vertexShaderProgram = 0,
395 const dcpp::char_kt* pixelShaderProgram = 0,
396 IShaderConstantSetCallBack* callback = 0,
398 dcpp::int32_kt userData = 0) = 0;
399
401
419 dcpp::io::IReadFile* pixelShaderProgram,
420 IShaderConstantSetCallBack* callback = 0,
422 dcpp::int32_kt userData = 0) = 0;
423
425
443 virtual dcpp::int32_kt addShaderMaterialFromFiles(const dcpp::io::path& vertexShaderProgramFileName,
444 const dcpp::io::path& pixelShaderProgramFileName,
445 IShaderConstantSetCallBack* callback = 0,
447 dcpp::int32_kt userData = 0) = 0;
448};
449
450
451} // end namespace video
452} // end namespace dcpp
453
454#endif
Interface providing read access to a file.
Definition IReadFile.hpp:19
Interface making it possible to create and use programs running on the GPU.
Definition IGPUProgrammingServices.hpp:29
dcpp::int32_kt addHighLevelShaderMaterial(const dcpp::char_kt *vertexShaderProgram, const dcpp::char_kt *vertexShaderEntryPointName="main", E_VERTEX_SHADER_TYPE vsCompileTarget=EVST_VS_1_1, const dcpp::char_kt *pixelShaderProgram=0, const dcpp::char_kt *pixelShaderEntryPointName="main", E_PIXEL_SHADER_TYPE psCompileTarget=EPST_PS_1_1, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)
convenience function for use without geometry shaders
Definition IGPUProgrammingServices.hpp:94
virtual dcpp::int32_kt addShaderMaterial(const dcpp::char_kt *vertexShaderProgram=0, const dcpp::char_kt *pixelShaderProgram=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)=0
Adds a new ASM shader material renderer to the VideoDriver.
virtual dcpp::int32_kt addShaderMaterialFromFiles(dcpp::io::IReadFile *vertexShaderProgram, dcpp::io::IReadFile *pixelShaderProgram, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)=0
Like IGPUProgrammingServices::addShaderMaterial(), but loads from files.
dcpp::int32_kt addHighLevelShaderMaterialFromFiles(dcpp::io::IReadFile *vertexShaderProgram, const dcpp::char_kt *vertexShaderEntryPointName="main", E_VERTEX_SHADER_TYPE vsCompileTarget=EVST_VS_1_1, dcpp::io::IReadFile *pixelShaderProgram=0, const dcpp::char_kt *pixelShaderEntryPointName="main", E_PIXEL_SHADER_TYPE psCompileTarget=EPST_PS_1_1, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)
convenience function for use without geometry shaders
Definition IGPUProgrammingServices.hpp:340
virtual ~IGPUProgrammingServices()
Destructor.
Definition IGPUProgrammingServices.hpp:33
virtual dcpp::int32_kt addShaderMaterialFromFiles(const dcpp::io::path &vertexShaderProgramFileName, const dcpp::io::path &pixelShaderProgramFileName, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)=0
Like IGPUProgrammingServices::addShaderMaterial(), but loads from files.
virtual dcpp::int32_kt addHighLevelShaderMaterialFromFiles(dcpp::io::IReadFile *vertexShaderProgram, const dcpp::char_kt *vertexShaderEntryPointName, E_VERTEX_SHADER_TYPE vsCompileTarget, dcpp::io::IReadFile *pixelShaderProgram, const dcpp::char_kt *pixelShaderEntryPointName, E_PIXEL_SHADER_TYPE psCompileTarget, dcpp::io::IReadFile *geometryShaderProgram, const dcpp::char_kt *geometryShaderEntryPointName="main", E_GEOMETRY_SHADER_TYPE gsCompileTarget=EGST_GS_4_0, dcpp::scene::E_PRIMITIVE_TYPE inType=dcpp::scene::EPT_TRIANGLES, dcpp::scene::E_PRIMITIVE_TYPE outType=dcpp::scene::EPT_TRIANGLE_STRIP, dcpp::uint32_kt verticesOut=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)=0
Like IGPUProgrammingServices::addShaderMaterial(), but loads from files.
dcpp::int32_kt addHighLevelShaderMaterialFromFiles(const dcpp::io::path &vertexShaderProgramFileName, const dcpp::io::path &pixelShaderProgramFileName="", IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)
convenience function for use with many defaults, without geometry shader
Definition IGPUProgrammingServices.hpp:242
virtual dcpp::int32_kt addHighLevelShaderMaterial(const dcpp::char_kt *vertexShaderProgram, const dcpp::char_kt *vertexShaderEntryPointName, E_VERTEX_SHADER_TYPE vsCompileTarget, const dcpp::char_kt *pixelShaderProgram, const dcpp::char_kt *pixelShaderEntryPointName, E_PIXEL_SHADER_TYPE psCompileTarget, const dcpp::char_kt *geometryShaderProgram, const dcpp::char_kt *geometryShaderEntryPointName="main", E_GEOMETRY_SHADER_TYPE gsCompileTarget=EGST_GS_4_0, dcpp::scene::E_PRIMITIVE_TYPE inType=dcpp::scene::EPT_TRIANGLES, dcpp::scene::E_PRIMITIVE_TYPE outType=dcpp::scene::EPT_TRIANGLE_STRIP, dcpp::uint32_kt verticesOut=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)=0
Adds a new high-level shading material renderer to the VideoDriver.
dcpp::int32_kt addHighLevelShaderMaterial(const dcpp::char_kt *vertexShaderProgram, const dcpp::char_kt *pixelShaderProgram=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)
convenience function for use with many defaults, without geometry shader
Definition IGPUProgrammingServices.hpp:118
dcpp::int32_kt addHighLevelShaderMaterial(const dcpp::char_kt *vertexShaderProgram, const dcpp::char_kt *pixelShaderProgram=0, const dcpp::char_kt *geometryShaderProgram=0, dcpp::scene::E_PRIMITIVE_TYPE inType=dcpp::scene::EPT_TRIANGLES, dcpp::scene::E_PRIMITIVE_TYPE outType=dcpp::scene::EPT_TRIANGLE_STRIP, dcpp::uint32_kt verticesOut=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)
convenience function for use with many defaults, with geometry shader
Definition IGPUProgrammingServices.hpp:138
dcpp::int32_kt addHighLevelShaderMaterialFromFiles(const dcpp::io::path &vertexShaderProgramFileName, const dcpp::char_kt *vertexShaderEntryPointName="main", E_VERTEX_SHADER_TYPE vsCompileTarget=EVST_VS_1_1, const dcpp::io::path &pixelShaderProgramFileName="", const dcpp::char_kt *pixelShaderEntryPointName="main", E_PIXEL_SHADER_TYPE psCompileTarget=EPST_PS_1_1, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)
convenience function for use without geometry shaders
Definition IGPUProgrammingServices.hpp:218
dcpp::int32_kt addHighLevelShaderMaterialFromFiles(const dcpp::io::path &vertexShaderProgramFileName, const dcpp::io::path &pixelShaderProgramFileName="", const dcpp::io::path &geometryShaderProgramFileName="", dcpp::scene::E_PRIMITIVE_TYPE inType=dcpp::scene::EPT_TRIANGLES, dcpp::scene::E_PRIMITIVE_TYPE outType=dcpp::scene::EPT_TRIANGLE_STRIP, dcpp::uint32_kt verticesOut=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)
convenience function for use with many defaults, with geometry shader
Definition IGPUProgrammingServices.hpp:262
virtual dcpp::int32_kt addHighLevelShaderMaterialFromFiles(const dcpp::io::path &vertexShaderProgramFileName, const dcpp::char_kt *vertexShaderEntryPointName, E_VERTEX_SHADER_TYPE vsCompileTarget, const dcpp::io::path &pixelShaderProgramFileName, const dcpp::char_kt *pixelShaderEntryPointName, E_PIXEL_SHADER_TYPE psCompileTarget, const dcpp::io::path &geometryShaderProgramFileName, const dcpp::char_kt *geometryShaderEntryPointName="main", E_GEOMETRY_SHADER_TYPE gsCompileTarget=EGST_GS_4_0, dcpp::scene::E_PRIMITIVE_TYPE inType=dcpp::scene::EPT_TRIANGLES, dcpp::scene::E_PRIMITIVE_TYPE outType=dcpp::scene::EPT_TRIANGLE_STRIP, dcpp::uint32_kt verticesOut=0, IShaderConstantSetCallBack *callback=0, E_MATERIAL_TYPE baseMaterial=dcpp::video::EMT_SOLID, dcpp::int32_kt userData=0)=0
Like IGPUProgrammingServices::addShaderMaterial(), but loads from files.
Interface making it possible to set constants for gpu programs every frame.
Definition IShaderConstantSetCallBack.hpp:22
E_PRIMITIVE_TYPE
Enumeration for all primitive types there are.
Definition EPrimitiveTypes.hpp:15
@ EPT_TRIANGLE_STRIP
Definition EPrimitiveTypes.hpp:30
@ EPT_TRIANGLES
Explicitly set all vertices for each triangle.
Definition EPrimitiveTypes.hpp:37
E_GEOMETRY_SHADER_TYPE
Enum for supported geometry shader types.
Definition EShaderTypes.hpp:73
E_VERTEX_SHADER_TYPE
Compile target enumeration for the addHighLevelShaderMaterial() method.
Definition EShaderTypes.hpp:13
E_MATERIAL_TYPE
Abstracted and easy to use fixed function/programmable pipeline material modes.
Definition EMaterialTypes.hpp:15
@ EMT_SOLID
Standard solid material.
Definition EMaterialTypes.hpp:19
E_PIXEL_SHADER_TYPE
Compile target enumeration for the addHighLevelShaderMaterial() method.
Definition EShaderTypes.hpp:39
As of Duckcpp 1.6, position2d is a synonym for vector2d.
Definition shared_device.hpp:34
char char_kt
8 bit character variable.
Definition irrTypes.hpp:37
unsigned int uint32_kt
32 bit unsigned variable.
Definition irrTypes.hpp:64
signed int int32_kt
32 bit signed variable.
Definition irrTypes.hpp:72

Duckcpp    @cppfx.xyz