Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members

IGPUProgrammingServices.h

Go to the documentation of this file.
00001 // Copyright (C) 2002-2008 Nikolaus Gebhardt
00002 // This file is part of the "Irrlicht Engine".
00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
00004 
00005 #ifndef __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__
00006 #define __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__
00007 
00008 #include "IReferenceCounted.h"
00009 #include "SMaterial.h"
00010 
00011 namespace irr
00012 {
00013 
00014 namespace io
00015 {
00016         class IReadFile;
00017 } // end namespace io
00018 
00019 namespace video
00020 {
00021 
00022 class IVideoDriver;
00023 class IShaderConstantSetCallBack;
00024 
00026 enum E_VERTEX_SHADER_TYPE
00027 {
00028         EVST_VS_1_1 = 0,
00029         EVST_VS_2_0,
00030         EVST_VS_2_a,
00031         EVST_VS_3_0,
00032 
00034         EVST_COUNT
00035 };
00036 
00038 const c8* const VERTEX_SHADER_TYPE_NAMES[] = {
00039         "vs_1_1",
00040         "vs_2_0",
00041         "vs_2_a",
00042         "vs_3_0",
00043         0 };
00044 
00046 enum E_PIXEL_SHADER_TYPE
00047 {
00048         EPST_PS_1_1 = 0,
00049         EPST_PS_1_2,
00050         EPST_PS_1_3,
00051         EPST_PS_1_4,
00052         EPST_PS_2_0,
00053         EPST_PS_2_a,
00054         EPST_PS_2_b,
00055         EPST_PS_3_0,
00056 
00058         EPST_COUNT
00059 };
00060 
00062 const c8* const PIXEL_SHADER_TYPE_NAMES[] = {
00063         "ps_1_1",
00064         "ps_1_2",
00065         "ps_1_3",
00066         "ps_1_4",
00067         "ps_2_0",
00068         "ps_2_a",
00069         "ps_2_b",
00070         "ps_3_0",
00071         0 };
00072 
00074 class IGPUProgrammingServices
00075 {
00076 public:
00077 
00079         virtual ~IGPUProgrammingServices() {}
00080 
00082 
00111         virtual s32 addHighLevelShaderMaterial(
00112                 const c8* vertexShaderProgram,
00113                 const c8* vertexShaderEntryPointName = "main",
00114                 E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
00115                 const c8* pixelShaderProgram = 0,
00116                 const c8* pixelShaderEntryPointName = "main",
00117                 E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
00118                 IShaderConstantSetCallBack* callback = 0,
00119                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00120                 s32 userData = 0 ) = 0;
00121 
00123 
00158         virtual s32 addHighLevelShaderMaterialFromFiles(
00159                 const c8* vertexShaderProgram,
00160                 const c8* vertexShaderEntryPointName = "main",
00161                 E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
00162                 const c8* pixelShaderProgram = 0,
00163                 const c8* pixelShaderEntryPointName = "main",
00164                 E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
00165                 IShaderConstantSetCallBack* callback = 0,
00166                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00167                 s32 userData = 0) = 0;
00168 
00169 
00171 
00202         virtual s32 addHighLevelShaderMaterialFromFiles(
00203                 io::IReadFile* vertexShaderProgram,
00204                 const c8* vertexShaderEntryPointName = "main",
00205                 E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
00206                 io::IReadFile* pixelShaderProgram = 0,
00207                 const c8* pixelShaderEntryPointName = "main",
00208                 E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
00209                 IShaderConstantSetCallBack* callback = 0,
00210                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00211                 s32 userData = 0) = 0;
00212 
00214 
00247         virtual s32 addShaderMaterial(const c8* vertexShaderProgram = 0,
00248                 const c8* pixelShaderProgram = 0,
00249                 IShaderConstantSetCallBack* callback = 0,
00250                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00251                 s32 userData = 0) = 0;
00252 
00254 
00271         virtual s32 addShaderMaterialFromFiles(io::IReadFile* vertexShaderProgram,
00272                 io::IReadFile* pixelShaderProgram,
00273                 IShaderConstantSetCallBack* callback = 0,
00274                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00275                 s32 userData = 0) = 0;
00276 
00278 
00296         virtual s32 addShaderMaterialFromFiles(const c8* vertexShaderProgramFileName,
00297                 const c8* pixelShaderProgramFileName,
00298                 IShaderConstantSetCallBack* callback = 0,
00299                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00300                 s32 userData = 0) = 0;
00301 };
00302 
00303 
00304 } // end namespace video
00305 } // end namespace irr
00306 
00307 #endif
00308 

The Irrlicht Engine
The Irrlicht Engine Documentation © 2003-2008 by Nikolaus Gebhardt. Generated on Sun Sep 21 08:57:41 2008 by Doxygen (1.4.2)