410 lines
9.3 KiB
C
410 lines
9.3 KiB
C
|
/****************************************************************************
|
|||
|
Copyright (c) 2011-2013,WebJet Business Division,CYOU
|
|||
|
|
|||
|
http://www.genesis-3d.com.cn
|
|||
|
|
|||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|||
|
of this software and associated documentation files (the "Software"), to deal
|
|||
|
in the Software without restriction, including without limitation the rights
|
|||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|||
|
copies of the Software, and to permit persons to whom the Software is
|
|||
|
furnished to do so, subject to the following conditions:
|
|||
|
|
|||
|
The above copyright notice and this permission notice shall be included in
|
|||
|
all copies or substantial portions of the Software.
|
|||
|
|
|||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||
|
THE SOFTWARE.
|
|||
|
****************************************************************************/
|
|||
|
#ifndef RENDERDEVICETYPES_H_
|
|||
|
#define RENDERDEVICETYPES_H_
|
|||
|
|
|||
|
#include "../config/RenderDeviceConfig.h"
|
|||
|
#include "../foundation/util/array.h"
|
|||
|
#include "../foundation/math/float4.h"
|
|||
|
#include "../foundation/io/mediatype.h"
|
|||
|
#include "../foundation/util/string.h"
|
|||
|
#include "../foundation/util/stringatom.h"
|
|||
|
#include "../foundation/util/guid.h"
|
|||
|
#include "core/refcounted.h"
|
|||
|
#include "../foundation/util/scriptbind.h"
|
|||
|
#include "../rendersystem/base/PixelFormat.h"
|
|||
|
#include "../rendersystem/base/RenderCommandType.h"
|
|||
|
|
|||
|
namespace RenderBase
|
|||
|
{
|
|||
|
typedef Util::StringAtom ResourcePath;
|
|||
|
|
|||
|
class RenderResourceHandle
|
|||
|
{
|
|||
|
public:
|
|||
|
RenderResourceHandle()
|
|||
|
: mRO(NULL){
|
|||
|
}
|
|||
|
RenderResourceHandle(RenderCommandType* ro)
|
|||
|
: mRO(ro){
|
|||
|
}
|
|||
|
|
|||
|
const Core::RefCounted* AsObject(void) const{
|
|||
|
return static_cast<const Core::RefCounted*>(mRO);
|
|||
|
}
|
|||
|
Core::RefCounted* AsObject(void){
|
|||
|
return static_cast<Core::RefCounted*>(mRO);
|
|||
|
}
|
|||
|
RenderCommandType::eRenderCMDType GetType() const{
|
|||
|
return (NULL == mRO)? RenderCommandType::InvalidRenderCMDType : mRO->GetRenderCommandType();
|
|||
|
}
|
|||
|
bool IsValid() const{
|
|||
|
return mRO != NULL;
|
|||
|
}
|
|||
|
|
|||
|
operator bool() const{
|
|||
|
return mRO != NULL;
|
|||
|
}
|
|||
|
|
|||
|
bool operator!=(const RenderResourceHandle& rhs) const{
|
|||
|
return this->mRO != rhs.mRO;
|
|||
|
}
|
|||
|
|
|||
|
bool operator==(const RenderResourceHandle& rhs) const{
|
|||
|
return this->mRO == rhs.mRO;
|
|||
|
}
|
|||
|
|
|||
|
bool operator<(const RenderResourceHandle& rhs) const{
|
|||
|
return this->mRO < rhs.mRO;
|
|||
|
}
|
|||
|
//------------------------------------------------------------------------
|
|||
|
bool operator<=(const RenderResourceHandle& rhs) const{
|
|||
|
return this->mRO <= rhs.mRO;
|
|||
|
}
|
|||
|
//------------------------------------------------------------------------
|
|||
|
bool operator>(const RenderResourceHandle& rhs) const{
|
|||
|
return this->mRO > rhs.mRO;
|
|||
|
}
|
|||
|
//------------------------------------------------------------------------
|
|||
|
bool operator>=(const RenderResourceHandle& rhs) const{
|
|||
|
return this->mRO >= rhs.mRO;
|
|||
|
}
|
|||
|
protected:
|
|||
|
// <20>̰߳<DFB3>ȫ<EFBFBD><C8AB> <20><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>RenderSystem<65><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RenderCommandType<70><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// <20><><EFBFBD>еķ<D0B5><C4B7>ʶ<EFBFBD>Ҫͨ<D2AA><CDA8>RenderSystem<65><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
RenderCommandType* mRO;
|
|||
|
friend class RenderSystem;
|
|||
|
};
|
|||
|
|
|||
|
typedef RenderResourceHandle PrimitiveHandle;
|
|||
|
typedef RenderResourceHandle RenderTargetHandle;
|
|||
|
typedef RenderResourceHandle MultipleRenderTargetHandle;
|
|||
|
typedef RenderResourceHandle GPUProgramHandle;
|
|||
|
typedef RenderResourceHandle TextureHandle;
|
|||
|
typedef RenderResourceHandle RenderStateDescHandle;
|
|||
|
|
|||
|
|
|||
|
enum FillMode
|
|||
|
{
|
|||
|
eFMPOINT,
|
|||
|
eFMWIREFRAME,
|
|||
|
eFMSOLID
|
|||
|
};
|
|||
|
|
|||
|
struct FillModeConverter
|
|||
|
{
|
|||
|
/// convert from string
|
|||
|
static FillMode FromString(Util::String str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(FillMode code);
|
|||
|
};
|
|||
|
|
|||
|
enum CullMode
|
|||
|
{
|
|||
|
eCMNONE,
|
|||
|
eCMFRONT,
|
|||
|
eCMBACK
|
|||
|
};
|
|||
|
|
|||
|
struct CullModeConverter
|
|||
|
{
|
|||
|
/// convert from string
|
|||
|
static CullMode FromString(Util::String str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(CullMode code);
|
|||
|
};
|
|||
|
|
|||
|
enum BlendOperation
|
|||
|
{
|
|||
|
eBOADD = 1,
|
|||
|
eBOSUBSTRACT = 2,
|
|||
|
eBOREVSUBTRACT = 3,
|
|||
|
eBOMIN = 4,
|
|||
|
eBOMAX = 5,
|
|||
|
};
|
|||
|
|
|||
|
struct BlendOperationConverter
|
|||
|
{
|
|||
|
/// convert from string
|
|||
|
static BlendOperation FromString(Util::String str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(BlendOperation bo);
|
|||
|
};
|
|||
|
|
|||
|
enum BlendFactor
|
|||
|
{
|
|||
|
eBFZERO,
|
|||
|
eBFONE,
|
|||
|
eBFSRCCOLOR,
|
|||
|
eBFINVSRCCOLOR,
|
|||
|
eBFSRCALPHA,
|
|||
|
eBFINVSRCALPHA,
|
|||
|
eBFDSTALPHA,
|
|||
|
eBFINVDESTALPHA,
|
|||
|
eBFDESTCOLOR,
|
|||
|
eBFINVDESTCOLOR,
|
|||
|
eBFSRCALPHASAT
|
|||
|
};
|
|||
|
|
|||
|
struct AlphaBlendFactorConverter
|
|||
|
{
|
|||
|
/// convert from string
|
|||
|
static BlendFactor FromString(Util::String str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(BlendFactor bo);
|
|||
|
};
|
|||
|
|
|||
|
enum CompareFunction
|
|||
|
{
|
|||
|
eCFNEVER,
|
|||
|
eCFLESS,
|
|||
|
eCFEQUAL,
|
|||
|
eCFLESSEQUAL,
|
|||
|
eCFGREATER,
|
|||
|
eCFNOTEQUAL,
|
|||
|
eCFGREATEREQUAL,
|
|||
|
eCFALWAYS,
|
|||
|
};
|
|||
|
|
|||
|
struct CompareFunctionConverter
|
|||
|
{
|
|||
|
/// convert from string
|
|||
|
static CompareFunction FromString(Util::String str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(CompareFunction cf);
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
enum StencilOperation
|
|||
|
{
|
|||
|
eSOKEEP,
|
|||
|
eSOZERO,
|
|||
|
eSOREPLACE,
|
|||
|
eSOINCR,
|
|||
|
eSODECR,
|
|||
|
eSOINCRWRAP,
|
|||
|
eSODECRSAT,
|
|||
|
eSOINVERT
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
enum ColorMask
|
|||
|
{
|
|||
|
eCOLORMASKRED = 1UL << 3,
|
|||
|
eCOLORMASKGREEN = 1UL << 2,
|
|||
|
eCOLORMASKBLUE = 1UL << 1,
|
|||
|
eCOLORMASKALPHA = 1UL << 0,
|
|||
|
eCOLORMASKRGB = eCOLORMASKRED | eCOLORMASKGREEN | eCOLORMASKBLUE,
|
|||
|
eCOLORMASKRGBA = eCOLORMASKRED | eCOLORMASKGREEN | eCOLORMASKBLUE | eCOLORMASKALPHA
|
|||
|
};
|
|||
|
|
|||
|
struct ColorMaskConverter
|
|||
|
{
|
|||
|
/// convert from string
|
|||
|
static ColorMask FromString(Util::String str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(ColorMask cm);
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
enum TextureAddressMode
|
|||
|
{
|
|||
|
eTAMWRAP,
|
|||
|
eTAMMIRROR,
|
|||
|
eTAMCLAMP,
|
|||
|
eTAMBORDER
|
|||
|
};
|
|||
|
|
|||
|
struct TextureAddressModeConverter
|
|||
|
{
|
|||
|
/// convert from string
|
|||
|
static TextureAddressMode FromString(Util::String str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(TextureAddressMode tam);
|
|||
|
};
|
|||
|
|
|||
|
enum TextureFilter
|
|||
|
{
|
|||
|
eTFPOINT,
|
|||
|
eTFLINEAR,
|
|||
|
eTFANISOTROPIC,
|
|||
|
};
|
|||
|
|
|||
|
struct TextureFilterOperationConverter
|
|||
|
{
|
|||
|
/// convert from string
|
|||
|
static TextureFilter FromString(Util::String str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(TextureFilter tfo);
|
|||
|
};
|
|||
|
|
|||
|
struct DeviceRasterizerState
|
|||
|
{
|
|||
|
FillMode m_fillMode;
|
|||
|
CullMode m_cullMode;
|
|||
|
float m_slopScaleDepthBias;
|
|||
|
float m_depthBias;
|
|||
|
bool m_scissorTestEnable;
|
|||
|
bool m_multisampleEnable;
|
|||
|
|
|||
|
DeviceRasterizerState();
|
|||
|
};
|
|||
|
|
|||
|
struct DeviceDepthAndStencilState
|
|||
|
{
|
|||
|
bool m_depthEnable;
|
|||
|
bool m_depthWriteMask;
|
|||
|
CompareFunction m_zFunc;
|
|||
|
|
|||
|
int m_stencilRef;
|
|||
|
bool m_stencilEnable;
|
|||
|
CompareFunction m_stencilFunc;
|
|||
|
unsigned short m_stencilReadMask;
|
|||
|
unsigned short m_stencilWriteMask;
|
|||
|
StencilOperation m_stencilFail;
|
|||
|
StencilOperation m_stencilZFail;
|
|||
|
StencilOperation m_stencilPass;
|
|||
|
|
|||
|
bool m_stencilTwoEnable;
|
|||
|
CompareFunction m_StencilTwoFunc;
|
|||
|
unsigned short m_stencilTwoReadMask;
|
|||
|
unsigned short m_stencilTwoWriteMask;
|
|||
|
StencilOperation m_stencilTwoFail;
|
|||
|
StencilOperation m_stencilTwoZFail;
|
|||
|
StencilOperation m_stencilTwoPass;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
DeviceDepthAndStencilState();
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
struct DeviceBlendState
|
|||
|
{
|
|||
|
bool m_alphaTestEnable;
|
|||
|
bool m_separateAlphaBlendEnable;
|
|||
|
CompareFunction m_alphaFunc;
|
|||
|
float m_alphaRef;
|
|||
|
|
|||
|
Util::Array<bool> m_alphaBlendEnable;
|
|||
|
Util::Array<BlendOperation> m_blendOP;
|
|||
|
Util::Array<BlendFactor> m_srcBlend;
|
|||
|
Util::Array<BlendFactor> m_destBlend;
|
|||
|
Util::Array<BlendOperation> m_blendOPAlpha;
|
|||
|
Util::Array<BlendFactor> m_srcBlendAlpha;
|
|||
|
Util::Array<BlendFactor> m_destBlendAlpha;
|
|||
|
Util::Array<unsigned short int> m_colorWriteMask;
|
|||
|
|
|||
|
|
|||
|
DeviceBlendState();
|
|||
|
};
|
|||
|
|
|||
|
struct DeviceSamplerState
|
|||
|
{
|
|||
|
Util::Array<bool> m_textureIndexEnable;
|
|||
|
Util::Array<TextureAddressMode> m_addressU;
|
|||
|
Util::Array<TextureAddressMode> m_addressV;
|
|||
|
Util::Array<TextureAddressMode> m_addressW;
|
|||
|
Util::Array<Util::String> m_textureType;
|
|||
|
Util::Array<TextureFilter> m_Filter;
|
|||
|
Util::Array<unsigned char> m_maxAnisotropy;
|
|||
|
DeviceSamplerState();
|
|||
|
};
|
|||
|
|
|||
|
class PrimitiveTopology
|
|||
|
{
|
|||
|
public:
|
|||
|
/// enumeration
|
|||
|
enum Code
|
|||
|
{
|
|||
|
InvalidPrimitiveTopology,
|
|||
|
|
|||
|
PointList,
|
|||
|
LineList,
|
|||
|
LineStrip,
|
|||
|
TriangleList,
|
|||
|
TriangleStrip,
|
|||
|
};
|
|||
|
|
|||
|
/// convert from string
|
|||
|
static Code FromString(const Util::String& str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(Code code);
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
class ImageFileFormat
|
|||
|
{
|
|||
|
public:
|
|||
|
/// image file formats
|
|||
|
enum Code
|
|||
|
{
|
|||
|
BMP,
|
|||
|
JPG,
|
|||
|
PNG,
|
|||
|
DDS,
|
|||
|
|
|||
|
InvalidImageFileFormat,
|
|||
|
};
|
|||
|
|
|||
|
/// convert from string
|
|||
|
static Code FromString(const Util::String& str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(Code c);
|
|||
|
/// convert from media type (MIME)
|
|||
|
static Code FromMediaType(const IO::MediaType& mediaType);
|
|||
|
/// convert to media type (MIME)
|
|||
|
static IO::MediaType ToMediaType(Code c);
|
|||
|
};
|
|||
|
|
|||
|
class AntiAliasQuality
|
|||
|
{
|
|||
|
public:
|
|||
|
/// enum
|
|||
|
enum Code
|
|||
|
{
|
|||
|
None,
|
|||
|
Low,
|
|||
|
Medium,
|
|||
|
High,
|
|||
|
};
|
|||
|
|
|||
|
/// convert from string
|
|||
|
static Code FromString(const Util::String& str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(Code code);
|
|||
|
};
|
|||
|
|
|||
|
struct BoolModeConverter
|
|||
|
{
|
|||
|
/// convert from string
|
|||
|
static bool FromString(Util::String str);
|
|||
|
/// convert to string
|
|||
|
static Util::String ToString(bool b);
|
|||
|
};
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
#endif //RENDERDEVICETYPES_H_
|