diff options
Diffstat (limited to 'Runtime/GfxDevice/GfxDeviceResources.h')
| -rw-r--r-- | Runtime/GfxDevice/GfxDeviceResources.h | 129 | 
1 files changed, 129 insertions, 0 deletions
diff --git a/Runtime/GfxDevice/GfxDeviceResources.h b/Runtime/GfxDevice/GfxDeviceResources.h new file mode 100644 index 0000000..9cb7825 --- /dev/null +++ b/Runtime/GfxDevice/GfxDeviceResources.h @@ -0,0 +1,129 @@ +#pragma once + +#include "GfxDeviceTypes.h" + +template<typename T>  +struct memcmp_less  +{ +	bool operator () (const T& lhs, const T& rhs) const  +	{ +		return memcmp(&lhs, &rhs, sizeof(T)) < 0; +	} +}; + + +struct GfxBlendState +{ +	BlendMode	srcBlend; +	BlendMode	dstBlend; +	BlendMode	srcBlendAlpha; +	BlendMode	dstBlendAlpha; +	BlendOp		blendOp; +	BlendOp		blendOpAlpha; +	UInt32		renderTargetWriteMask; +	CompareFunction alphaTest; +	bool		alphaToMask; + +	GfxBlendState() +	{ +		memset(this, 0, sizeof(*this)); +		srcBlend = kBlendOne; +		dstBlend = kBlendZero; +		srcBlendAlpha = kBlendOne; +		dstBlendAlpha = kBlendZero; +		blendOp = kBlendOpAdd; +		blendOpAlpha = kBlendOpAdd; +		renderTargetWriteMask = KColorWriteAll; +		alphaTest = kFuncDisabled; +		alphaToMask = false; +	} +}; + + +struct GfxRasterState +{ +	CullMode	cullMode; +	int			depthBias; +	float		slopeScaledDepthBias; + +	GfxRasterState() +	{ +		memset(this, 0, sizeof(*this)); +		cullMode = kCullBack; +		depthBias = 0; +		slopeScaledDepthBias = 0.0f; +	} +}; + + +struct GfxDepthState +{ +	bool			depthWrite; +	CompareFunction depthFunc; + +	GfxDepthState() +	{ +		memset(this, 0, sizeof(*this)); +		depthWrite = true; +		depthFunc = kFuncLess; +	} +}; + +struct GfxStencilState +{ +	bool			stencilEnable; +	UInt8			readMask; +	UInt8			writeMask; +	CompareFunction	stencilFuncFront; +	StencilOp		stencilPassOpFront; // stencil and depth pass +	StencilOp		stencilFailOpFront; // stencil fail (depth irrelevant) +	StencilOp		stencilZFailOpFront; // stencil pass, depth fail +	CompareFunction	stencilFuncBack; +	StencilOp		stencilPassOpBack; +	StencilOp		stencilFailOpBack; +	StencilOp		stencilZFailOpBack; + +	GfxStencilState() +	{ +		memset(this, 0, sizeof(*this)); +		stencilEnable = false; +		readMask = 0xFF; +		writeMask = 0xFF; +		stencilFuncFront = kFuncAlways; +		stencilFailOpFront = kStencilOpKeep; +		stencilZFailOpFront = kStencilOpKeep; +		stencilPassOpFront = kStencilOpKeep; +		stencilFuncBack = kFuncAlways; +		stencilFailOpBack = kStencilOpKeep; +		stencilZFailOpBack = kStencilOpKeep; +		stencilPassOpBack = kStencilOpKeep; +	} +}; + +struct DeviceBlendState +{ +	DeviceBlendState(const GfxBlendState& src) : sourceState(src) {} +	DeviceBlendState() {} +	GfxBlendState sourceState; +}; + +struct DeviceDepthState +{ +	DeviceDepthState(const GfxDepthState& src) : sourceState(src) {} +	DeviceDepthState() {} +	GfxDepthState sourceState; +}; + +struct DeviceStencilState +{ +	DeviceStencilState(const GfxStencilState& src) : sourceState(src) {} +	DeviceStencilState() {} +	GfxStencilState sourceState; +}; + +struct DeviceRasterState +{ +	DeviceRasterState(const GfxRasterState& src) : sourceState(src) {} +	DeviceRasterState() {} +	GfxRasterState sourceState; +};  | 
