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 Documentation © 2003-2009 by Nikolaus Gebhardt. Generated on Sun Jan 10 09:24:03 2010 by Doxygen (1.5.6)