Renderer/RenderStates: Update RenderStates structure (preparing for renderer update)

Former-commit-id: 8839ceda70dfa0384e8da43205a208c89f1eb7bf [formerly f5434c9c44a52e02fdc6970e443cd7d3e9e99e6b]
Former-commit-id: 6a4846a2e2c8b60160598812ebd02da17a2f6947
This commit is contained in:
Lynix
2016-07-21 23:00:09 +02:00
parent ff47eda7d2
commit ceaac9be13
17 changed files with 339 additions and 218 deletions

View File

@@ -8,37 +8,75 @@
#define NAZARA_RENDERSTATES_HPP
#include <Nazara/Utility/Enums.hpp>
#include <Nazara/Renderer/Shader.hpp>
namespace Nz
{
struct RenderStates
{
RenderStates();
RenderStates(const RenderStates& states);
~RenderStates() = default;
BlendFunc dstBlend = BlendFunc_Zero;
BlendFunc srcBlend = BlendFunc_One;
FaceFilling faceFilling = FaceFilling_Fill;
FaceSide cullingSide = FaceSide_Back;
RendererComparison depthFunc = RendererComparison_Less;
RenderStates& operator=(const RenderStates& states);
struct Face
struct
{
RendererComparison stencilCompare;
StencilOperation stencilFail;
StencilOperation stencilPass;
StencilOperation stencilZFail;
UInt32 stencilMask;
unsigned int stencilReference;
};
RendererComparison back = RendererComparison_Always;
RendererComparison front = RendererComparison_Always;
} stencilCompare;
Face backFace;
Face frontFace;
BlendFunc dstBlend;
BlendFunc srcBlend;
FaceFilling faceFilling;
FaceSide faceCulling;
RendererComparison depthFunc;
bool parameters[RendererParameter_Max+1];
float lineWidth;
float pointSize;
struct
{
UInt32 back = 0xFFFFFFFF;
UInt32 front = 0xFFFFFFFF;
} stencilCompareMask;
struct
{
StencilOperation back = StencilOperation_Keep;
StencilOperation front = StencilOperation_Keep;
} stencilDepthFail;
struct
{
StencilOperation back = StencilOperation_Keep;
StencilOperation front = StencilOperation_Keep;
} stencilFail;
struct
{
StencilOperation back = StencilOperation_Keep;
StencilOperation front = StencilOperation_Keep;
} stencilPass;
struct
{
UInt32 back = 0U;
UInt32 front = 0U;
} stencilReference;
struct
{
UInt32 back = 0xFFFFFFFF;
UInt32 front = 0xFFFFFFFF;
} stencilWriteMask;
bool blending = false;
bool colorWrite = true;
bool depthBuffer = false;
bool depthWrite = true;
bool faceCulling = false;
bool scissorTest = false;
bool stencilTest = false;
float lineWidth = 1.f;
float pointSize = 1.f;
};
struct RenderPipeline : RenderStates
{
ShaderConstRef shader;
};
}