Renderer: Add proper support for blending
This commit is contained in:
@@ -19,13 +19,21 @@ namespace Nz
|
||||
|
||||
struct RenderStates
|
||||
{
|
||||
BlendFunc dstBlend = BlendFunc_Zero;
|
||||
BlendFunc srcBlend = BlendFunc_One;
|
||||
FaceFilling faceFilling = FaceFilling_Fill;
|
||||
FaceSide cullingSide = FaceSide_Back;
|
||||
RendererComparison depthCompare = RendererComparison_Less;
|
||||
PrimitiveMode primitiveMode = PrimitiveMode_TriangleList;
|
||||
|
||||
struct
|
||||
{
|
||||
BlendEquation modeAlpha = BlendEquation::Add;
|
||||
BlendEquation modeColor = BlendEquation::Add;
|
||||
BlendFunc dstAlpha = BlendFunc::Zero;
|
||||
BlendFunc dstColor = BlendFunc::Zero;
|
||||
BlendFunc srcAlpha = BlendFunc::One;
|
||||
BlendFunc srcColor = BlendFunc::One;
|
||||
} blend;
|
||||
|
||||
struct
|
||||
{
|
||||
RendererComparison compare = RendererComparison_Always;
|
||||
|
||||
@@ -30,8 +30,12 @@ namespace Nz
|
||||
|
||||
if (lhs.blending) //< Remember, at this time we know lhs.blending == rhs.blending
|
||||
{
|
||||
NazaraRenderStateMember(dstBlend);
|
||||
NazaraRenderStateMember(srcBlend);
|
||||
NazaraRenderStateMember(blend.dstAlpha);
|
||||
NazaraRenderStateMember(blend.dstColor);
|
||||
NazaraRenderStateMember(blend.modeAlpha);
|
||||
NazaraRenderStateMember(blend.modeColor);
|
||||
NazaraRenderStateMember(blend.srcAlpha);
|
||||
NazaraRenderStateMember(blend.srcColor);
|
||||
}
|
||||
|
||||
if (lhs.depthBuffer)
|
||||
@@ -101,8 +105,12 @@ namespace std
|
||||
|
||||
if (pipelineInfo.blending) //< Remember, at this time we know lhs.blending == rhs.blending
|
||||
{
|
||||
NazaraRenderStateEnum(dstBlend);
|
||||
NazaraRenderStateEnum(srcBlend);
|
||||
NazaraRenderStateEnum(blend.dstAlpha);
|
||||
NazaraRenderStateEnum(blend.dstColor);
|
||||
NazaraRenderStateEnum(blend.modeAlpha);
|
||||
NazaraRenderStateEnum(blend.modeColor);
|
||||
NazaraRenderStateEnum(blend.srcAlpha);
|
||||
NazaraRenderStateEnum(blend.srcColor);
|
||||
}
|
||||
|
||||
if (pipelineInfo.depthBuffer)
|
||||
|
||||
Reference in New Issue
Block a user