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

IGPUProgrammingServices.h

Go to the documentation of this file.
00001 // Copyright (C) 2002-2009 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 #include "path.h"
00011 
00012 namespace irr
00013 {
00014 
00015 namespace io
00016 {
00017         class IReadFile;
00018 } // end namespace io
00019 
00020 namespace video
00021 {
00022 
00023 class IVideoDriver;
00024 class IShaderConstantSetCallBack;
00025 
00027 enum E_VERTEX_SHADER_TYPE
00028 {
00029         EVST_VS_1_1 = 0,
00030         EVST_VS_2_0,
00031         EVST_VS_2_a,
00032         EVST_VS_3_0,
00033 
00035         EVST_COUNT
00036 };
00037 
00039 const c8* const VERTEX_SHADER_TYPE_NAMES[] = {
00040         "vs_1_1",
00041         "vs_2_0",
00042         "vs_2_a",
00043         "vs_3_0",
00044         0 };
00045 
00047 enum E_PIXEL_SHADER_TYPE
00048 {
00049         EPST_PS_1_1 = 0,
00050         EPST_PS_1_2,
00051         EPST_PS_1_3,
00052         EPST_PS_1_4,
00053         EPST_PS_2_0,
00054         EPST_PS_2_a,
00055         EPST_PS_2_b,
00056         EPST_PS_3_0,
00057 
00059         EPST_COUNT
00060 };
00061 
00063 const c8* const PIXEL_SHADER_TYPE_NAMES[] = {
00064         "ps_1_1",
00065         "ps_1_2",
00066         "ps_1_3",
00067         "ps_1_4",
00068         "ps_2_0",
00069         "ps_2_a",
00070         "ps_2_b",
00071         "ps_3_0",
00072         0 };
00073 
00075 class IGPUProgrammingServices
00076 {
00077 public:
00078 
00080         virtual ~IGPUProgrammingServices() {}
00081 
00083 
00112         virtual s32 addHighLevelShaderMaterial(
00113                 const c8* vertexShaderProgram,
00114                 const c8* vertexShaderEntryPointName = "main",
00115                 E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
00116                 const c8* pixelShaderProgram = 0,
00117                 const c8* pixelShaderEntryPointName = "main",
00118                 E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
00119                 IShaderConstantSetCallBack* callback = 0,
00120                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00121                 s32 userData = 0 ) = 0;
00122 
00124 
00159         virtual s32 addHighLevelShaderMaterialFromFiles(
00160                 const io::path& vertexShaderProgramFileName,
00161                 const c8* vertexShaderEntryPointName = "main",
00162                 E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
00163                 const io::path& pixelShaderProgramFileName = "",
00164                 const c8* pixelShaderEntryPointName = "main",
00165                 E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
00166                 IShaderConstantSetCallBack* callback = 0,
00167                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00168                 s32 userData = 0) = 0;
00169 
00170 
00172 
00203         virtual s32 addHighLevelShaderMaterialFromFiles(
00204                 io::IReadFile* vertexShaderProgram,
00205                 const c8* vertexShaderEntryPointName = "main",
00206                 E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
00207                 io::IReadFile* pixelShaderProgram = 0,
00208                 const c8* pixelShaderEntryPointName = "main",
00209                 E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
00210                 IShaderConstantSetCallBack* callback = 0,
00211                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00212                 s32 userData = 0) = 0;
00213 
00215 
00248         virtual s32 addShaderMaterial(const c8* vertexShaderProgram = 0,
00249                 const c8* pixelShaderProgram = 0,
00250                 IShaderConstantSetCallBack* callback = 0,
00251                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00252                 s32 userData = 0) = 0;
00253 
00255 
00272         virtual s32 addShaderMaterialFromFiles(io::IReadFile* vertexShaderProgram,
00273                 io::IReadFile* pixelShaderProgram,
00274                 IShaderConstantSetCallBack* callback = 0,
00275                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00276                 s32 userData = 0) = 0;
00277 
00279 
00297         virtual s32 addShaderMaterialFromFiles(const io::path& vertexShaderProgramFileName,
00298                 const io::path& pixelShaderProgramFileName,
00299                 IShaderConstantSetCallBack* callback = 0,
00300                 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
00301                 s32 userData = 0) = 0;
00302 };
00303 
00304 
00305 } // end namespace video
00306 } // end namespace irr
00307 
00308 #endif
00309 

The Irrlicht Engine
The Irrlicht Engine Documentation © 2003-2009 by Nikolaus Gebhardt. Generated on Sun Jan 10 09:24:03 2010 by Doxygen (1.5.6)