From 190b673890a60d34e19a699dcab1ee09982cee22 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Sat, 17 Mar 2018 22:45:58 +0100 Subject: [PATCH] - Modify TriBlendMode enum to match the render styles --- src/polyrenderer/drawers/poly_draw_args.cpp | 82 ++++++++++---------- src/polyrenderer/drawers/poly_draw_args.h | 13 ++-- src/polyrenderer/drawers/screen_triangle.cpp | 56 ------------- src/polyrenderer/drawers/screen_triangle.h | 34 +++++++- src/polyrenderer/scene/poly_model.cpp | 4 +- src/polyrenderer/scene/poly_particle.cpp | 2 +- src/polyrenderer/scene/poly_plane.cpp | 8 +- src/polyrenderer/scene/poly_scene.cpp | 2 +- src/polyrenderer/scene/poly_sky.cpp | 2 +- src/polyrenderer/scene/poly_wall.cpp | 6 +- src/polyrenderer/scene/poly_wallsprite.cpp | 2 +- src/swrenderer/things/r_model.cpp | 4 +- 12 files changed, 93 insertions(+), 122 deletions(-) diff --git a/src/polyrenderer/drawers/poly_draw_args.cpp b/src/polyrenderer/drawers/poly_draw_args.cpp index 532bd93d9..8cbef26a7 100644 --- a/src/polyrenderer/drawers/poly_draw_args.cpp +++ b/src/polyrenderer/drawers/poly_draw_args.cpp @@ -152,59 +152,61 @@ void PolyDrawArgs::DrawElements(const DrawerCommandQueuePtr &queue, const TriVer void PolyDrawArgs::SetStyle(const FRenderStyle &renderstyle, double alpha, uint32_t fillcolor, uint32_t translationID, FTexture *tex, bool fullbright) { SetTexture(tex, translationID, renderstyle); - + SetColor(0xff000000 | fillcolor, fillcolor >> 24); + if (renderstyle == LegacyRenderStyles[STYLE_Normal] || (r_drawfuzz == 0 && renderstyle == LegacyRenderStyles[STYLE_OptFuzzy])) { - SetStyle(Translation() ? TriBlendMode::TranslatedAdd : TriBlendMode::TextureAdd, 1.0, 0.0); + SetStyle(Translation() ? TriBlendMode::NormalTranslated : TriBlendMode::Normal, alpha); } else if (renderstyle == LegacyRenderStyles[STYLE_Add] && fullbright && alpha == 1.0 && !Translation()) { - SetStyle(TriBlendMode::TextureAddSrcColor, 1.0, 1.0); - } - else if (renderstyle == LegacyRenderStyles[STYLE_Add]) - { - SetStyle(Translation() ? TriBlendMode::TranslatedAdd : TriBlendMode::TextureAdd, alpha, 1.0); - } - else if (renderstyle == LegacyRenderStyles[STYLE_Subtract]) - { - SetStyle(Translation() ? TriBlendMode::TranslatedRevSub : TriBlendMode::TextureRevSub, alpha, 1.0); + SetStyle(TriBlendMode::SrcColor, alpha); } else if (renderstyle == LegacyRenderStyles[STYLE_SoulTrans]) { - SetStyle(Translation() ? TriBlendMode::TranslatedAdd : TriBlendMode::TextureAdd, transsouls, 1.0 - transsouls); + SetStyle(Translation() ? TriBlendMode::AddTranslated : TriBlendMode::Add, transsouls); } else if (renderstyle == LegacyRenderStyles[STYLE_Fuzzy] || (r_drawfuzz == 1 && renderstyle == LegacyRenderStyles[STYLE_OptFuzzy])) { SetColor(0xff000000, 0); - SetStyle(TriBlendMode::Fuzz); + SetStyle(TriBlendMode::Fuzzy); } else if (renderstyle == LegacyRenderStyles[STYLE_Shadow] || (r_drawfuzz == 2 && renderstyle == LegacyRenderStyles[STYLE_OptFuzzy])) { - SetStyle(Translation() ? TriBlendMode::TranslatedAdd : TriBlendMode::TextureAdd, 0.0, 160 / 255.0); + SetColor(0xff000000, 0); + SetStyle(Translation() ? TriBlendMode::TranslucentStencilTranslated : TriBlendMode::TranslucentStencil, 1.0 - 160 / 255.0); } - else if (renderstyle == LegacyRenderStyles[STYLE_TranslucentStencil]) + else if (renderstyle == LegacyRenderStyles[STYLE_Stencil]) { - SetColor(0xff000000 | fillcolor, fillcolor >> 24); - SetStyle(TriBlendMode::Stencil, alpha, 1.0 - alpha); + SetStyle(Translation() ? TriBlendMode::StencilTranslated : TriBlendMode::Stencil, alpha); } - else if (renderstyle == LegacyRenderStyles[STYLE_AddStencil]) + else if (renderstyle == LegacyRenderStyles[STYLE_Translucent]) { - SetColor(0xff000000 | fillcolor, fillcolor >> 24); - SetStyle(TriBlendMode::AddStencil, alpha, 1.0); + SetStyle(Translation() ? TriBlendMode::TranslucentTranslated : TriBlendMode::Translucent, alpha); + } + else if (renderstyle == LegacyRenderStyles[STYLE_Add]) + { + SetStyle(Translation() ? TriBlendMode::AddTranslated : TriBlendMode::Add, alpha); } else if (renderstyle == LegacyRenderStyles[STYLE_Shaded]) { - SetColor(0xff000000 | fillcolor, fillcolor >> 24); - SetStyle(TriBlendMode::Shaded, alpha, 1.0 - alpha); + SetStyle(Translation() ? TriBlendMode::ShadedTranslated : TriBlendMode::Shaded, alpha); + } + else if (renderstyle == LegacyRenderStyles[STYLE_TranslucentStencil]) + { + SetStyle(Translation() ? TriBlendMode::TranslucentStencilTranslated : TriBlendMode::TranslucentStencil, alpha); + } + else if (renderstyle == LegacyRenderStyles[STYLE_Subtract]) + { + SetStyle(Translation() ? TriBlendMode::SubtractTranslated : TriBlendMode::Subtract, alpha); + } + else if (renderstyle == LegacyRenderStyles[STYLE_AddStencil]) + { + SetStyle(Translation() ? TriBlendMode::AddStencilTranslated : TriBlendMode::AddStencil, alpha); } else if (renderstyle == LegacyRenderStyles[STYLE_AddShaded]) { - SetColor(0xff000000 | fillcolor, fillcolor >> 24); - SetStyle(TriBlendMode::AddShaded, alpha, 1.0); - } - else - { - SetStyle(Translation() ? TriBlendMode::TranslatedAdd : TriBlendMode::TextureAdd, alpha, 1.0 - alpha); + SetStyle(Translation() ? TriBlendMode::AddShadedTranslated : TriBlendMode::AddShaded, alpha); } } @@ -303,55 +305,55 @@ void RectDrawArgs::SetStyle(FRenderStyle renderstyle, double alpha, uint32_t fil if (renderstyle == LegacyRenderStyles[STYLE_Normal] || (r_drawfuzz == 0 && renderstyle == LegacyRenderStyles[STYLE_OptFuzzy])) { - SetStyle(Translation() ? TriBlendMode::TranslatedAdd : TriBlendMode::TextureAdd, 1.0, 0.0); + SetStyle(Translation() ? RectBlendMode::TranslatedAdd : RectBlendMode::TextureAdd, 1.0, 0.0); } else if (renderstyle == LegacyRenderStyles[STYLE_Add] && fullbright && alpha == 1.0 && !Translation()) { - SetStyle(TriBlendMode::TextureAddSrcColor, 1.0, 1.0); + SetStyle(RectBlendMode::TextureAddSrcColor, 1.0, 1.0); } else if (renderstyle == LegacyRenderStyles[STYLE_Add]) { - SetStyle(Translation() ? TriBlendMode::TranslatedAdd : TriBlendMode::TextureAdd, alpha, 1.0); + SetStyle(Translation() ? RectBlendMode::TranslatedAdd : RectBlendMode::TextureAdd, alpha, 1.0); } else if (renderstyle == LegacyRenderStyles[STYLE_Subtract]) { - SetStyle(Translation() ? TriBlendMode::TranslatedRevSub : TriBlendMode::TextureRevSub, alpha, 1.0); + SetStyle(Translation() ? RectBlendMode::TranslatedRevSub : RectBlendMode::TextureRevSub, alpha, 1.0); } else if (renderstyle == LegacyRenderStyles[STYLE_SoulTrans]) { - SetStyle(Translation() ? TriBlendMode::TranslatedAdd : TriBlendMode::TextureAdd, transsouls, 1.0 - transsouls); + SetStyle(Translation() ? RectBlendMode::TranslatedAdd : RectBlendMode::TextureAdd, transsouls, 1.0 - transsouls); } else if (renderstyle == LegacyRenderStyles[STYLE_Fuzzy] || (r_drawfuzz == 1 && renderstyle == LegacyRenderStyles[STYLE_OptFuzzy])) { SetColor(0xff000000, 0); - SetStyle(TriBlendMode::Fuzz); + SetStyle(RectBlendMode::Fuzz); } else if (renderstyle == LegacyRenderStyles[STYLE_Shadow] || (r_drawfuzz == 2 && renderstyle == LegacyRenderStyles[STYLE_OptFuzzy])) { - SetStyle(Translation() ? TriBlendMode::TranslatedAdd : TriBlendMode::TextureAdd, 0.0, 160 / 255.0); + SetStyle(Translation() ? RectBlendMode::TranslatedAdd : RectBlendMode::TextureAdd, 0.0, 160 / 255.0); } else if (renderstyle == LegacyRenderStyles[STYLE_TranslucentStencil]) { SetColor(0xff000000 | fillcolor, fillcolor >> 24); - SetStyle(TriBlendMode::Stencil, alpha, 1.0 - alpha); + SetStyle(RectBlendMode::Stencil, alpha, 1.0 - alpha); } else if (renderstyle == LegacyRenderStyles[STYLE_AddStencil]) { SetColor(0xff000000 | fillcolor, fillcolor >> 24); - SetStyle(TriBlendMode::AddStencil, alpha, 1.0); + SetStyle(RectBlendMode::AddStencil, alpha, 1.0); } else if (renderstyle == LegacyRenderStyles[STYLE_Shaded]) { SetColor(0xff000000 | fillcolor, fillcolor >> 24); - SetStyle(TriBlendMode::Shaded, alpha, 1.0 - alpha); + SetStyle(RectBlendMode::Shaded, alpha, 1.0 - alpha); } else if (renderstyle == LegacyRenderStyles[STYLE_AddShaded]) { SetColor(0xff000000 | fillcolor, fillcolor >> 24); - SetStyle(TriBlendMode::AddShaded, alpha, 1.0); + SetStyle(RectBlendMode::AddShaded, alpha, 1.0); } else { - SetStyle(Translation() ? TriBlendMode::TranslatedAdd : TriBlendMode::TextureAdd, alpha, 1.0 - alpha); + SetStyle(Translation() ? RectBlendMode::TranslatedAdd : RectBlendMode::TextureAdd, alpha, 1.0 - alpha); } } diff --git a/src/polyrenderer/drawers/poly_draw_args.h b/src/polyrenderer/drawers/poly_draw_args.h index 0c10be6b8..a7b836fd7 100644 --- a/src/polyrenderer/drawers/poly_draw_args.h +++ b/src/polyrenderer/drawers/poly_draw_args.h @@ -75,7 +75,7 @@ public: void SetWriteColor(bool enable) { mWriteColor = enable; } void SetWriteStencil(bool enable, uint8_t stencilWriteValue = 0) { mWriteStencil = enable; mStencilWriteValue = stencilWriteValue; } void SetWriteDepth(bool enable) { mWriteDepth = enable; } - void SetStyle(TriBlendMode blendmode, double srcalpha = 1.0, double destalpha = 1.0) { mBlendMode = blendmode; mSrcAlpha = (uint32_t)(srcalpha * 256.0 + 0.5); mDestAlpha = (uint32_t)(destalpha * 256.0 + 0.5); } + void SetStyle(TriBlendMode blendmode, double alpha = 1.0) { mBlendMode = blendmode; mSrcAlpha = (uint32_t)(alpha * 256.0 + 0.5); } void SetStyle(const FRenderStyle &renderstyle, double alpha, uint32_t fillcolor, uint32_t translationID, FTexture *texture, bool fullbright); void SetColor(uint32_t bgra, uint8_t palindex); void SetLights(PolyLight *lights, int numLights) { mLights = lights; mNumLights = numLights; } @@ -108,7 +108,7 @@ public: TriBlendMode BlendMode() const { return mBlendMode; } uint32_t Color() const { return mColor; } uint32_t SrcAlpha() const { return mSrcAlpha; } - uint32_t DestAlpha() const { return mDestAlpha; } + uint32_t DestAlpha() const { return 256 - mSrcAlpha; } float GlobVis() const { return mGlobVis; } uint32_t Light() const { return mLight; } @@ -152,11 +152,10 @@ private: uint8_t mStencilWriteValue = 0; const uint8_t *mColormaps = nullptr; PolyClipPlane mClipPlane[3]; - TriBlendMode mBlendMode = TriBlendMode::FillOpaque; + TriBlendMode mBlendMode = TriBlendMode::Fill; uint32_t mLight = 0; uint32_t mColor = 0; uint32_t mSrcAlpha = 0; - uint32_t mDestAlpha = 0; uint16_t mLightAlpha = 0; uint16_t mLightRed = 0; uint16_t mLightGreen = 0; @@ -182,7 +181,7 @@ public: void SetTexture(FTexture *texture, FRenderStyle style); void SetTexture(FTexture *texture, uint32_t translationID, FRenderStyle style); void SetLight(FSWColormap *basecolormap, uint32_t lightlevel); - void SetStyle(TriBlendMode blendmode, double srcalpha = 1.0, double destalpha = 1.0) { mBlendMode = blendmode; mSrcAlpha = (uint32_t)(srcalpha * 256.0 + 0.5); mDestAlpha = (uint32_t)(destalpha * 256.0 + 0.5); } + void SetStyle(RectBlendMode blendmode, double srcalpha = 1.0, double destalpha = 1.0) { mBlendMode = blendmode; mSrcAlpha = (uint32_t)(srcalpha * 256.0 + 0.5); mDestAlpha = (uint32_t)(destalpha * 256.0 + 0.5); } void SetStyle(FRenderStyle renderstyle, double alpha, uint32_t fillcolor, uint32_t translationID, FTexture *texture, bool fullbright); void SetColor(uint32_t bgra, uint8_t palindex); void Draw(PolyRenderThread *thread, double x0, double x1, double y0, double y1, double u0, double u1, double v0, double v1); @@ -193,7 +192,7 @@ public: int TextureHeight() const { return mTextureHeight; } const uint8_t *Translation() const { return mTranslation; } - TriBlendMode BlendMode() const { return mBlendMode; } + RectBlendMode BlendMode() const { return mBlendMode; } uint32_t Color() const { return mColor; } uint32_t SrcAlpha() const { return mSrcAlpha; } uint32_t DestAlpha() const { return mDestAlpha; } @@ -227,7 +226,7 @@ private: int mTextureHeight = 0; const uint8_t *mTranslation = nullptr; const uint8_t *mColormaps = nullptr; - TriBlendMode mBlendMode = TriBlendMode::FillOpaque; + RectBlendMode mBlendMode = RectBlendMode::FillOpaque; uint32_t mLight = 0; uint32_t mColor = 0; uint32_t mSrcAlpha = 0; diff --git a/src/polyrenderer/drawers/screen_triangle.cpp b/src/polyrenderer/drawers/screen_triangle.cpp index 1ee1aa947..9241d207f 100644 --- a/src/polyrenderer/drawers/screen_triangle.cpp +++ b/src/polyrenderer/drawers/screen_triangle.cpp @@ -1961,62 +1961,6 @@ void(*ScreenTriangle::SpanDrawers32[])(int, int, int, const TriDrawTriangleArgs &DrawSpan32 }; -void(*ScreenTriangle::TriDrawers8[])(int, int, uint32_t, uint32_t, const TriDrawTriangleArgs *) = -{ - &TriScreenDrawer8::Execute, // TextureOpaque - &TriScreenDrawer8::Execute, // TextureMasked - &TriScreenDrawer8::Execute, // TextureAdd - &TriScreenDrawer8::Execute, // TextureSub - &TriScreenDrawer8::Execute, // TextureRevSub - &TriScreenDrawer8::Execute, // TextureAddSrcColor - &TriScreenDrawer8::Execute, // TranslatedOpaque - &TriScreenDrawer8::Execute, // TranslatedMasked - &TriScreenDrawer8::Execute, // TranslatedAdd - &TriScreenDrawer8::Execute, // TranslatedSub - &TriScreenDrawer8::Execute, // TranslatedRevSub - &TriScreenDrawer8::Execute, // TranslatedAddSrcColor - &TriScreenDrawer8::Execute, // Shaded - &TriScreenDrawer8::Execute, // AddShaded - &TriScreenDrawer8::Execute, // Stencil - &TriScreenDrawer8::Execute, // AddStencil - &TriScreenDrawer8::Execute, // FillOpaque - &TriScreenDrawer8::Execute, // FillAdd - &TriScreenDrawer8::Execute, // FillSub - &TriScreenDrawer8::Execute, // FillRevSub - &TriScreenDrawer8::Execute, // FillAddSrcColor - &TriScreenDrawer8::Execute, // Skycap - &TriScreenDrawer8::Execute, // Fuzz - &TriScreenDrawer8::Execute, // FogBoundary -}; - -void(*ScreenTriangle::TriDrawers32[])(int, int, uint32_t, uint32_t, const TriDrawTriangleArgs *) = -{ - &TriScreenDrawer32::Execute, // TextureOpaque - &TriScreenDrawer32::Execute, // TextureMasked - &TriScreenDrawer32::Execute, // TextureAdd - &TriScreenDrawer32::Execute, // TextureSub - &TriScreenDrawer32::Execute, // TextureRevSub - &TriScreenDrawer32::Execute, // TextureAddSrcColor - &TriScreenDrawer32::Execute, // TranslatedOpaque - &TriScreenDrawer32::Execute, // TranslatedMasked - &TriScreenDrawer32::Execute, // TranslatedAdd - &TriScreenDrawer32::Execute, // TranslatedSub - &TriScreenDrawer32::Execute, // TranslatedRevSub - &TriScreenDrawer32::Execute, // TranslatedAddSrcColor - &TriScreenDrawer32::Execute, // Shaded - &TriScreenDrawer32::Execute, // AddShaded - &TriScreenDrawer32::Execute, // Stencil - &TriScreenDrawer32::Execute, // AddStencil - &TriScreenDrawer32::Execute, // FillOpaque - &TriScreenDrawer32::Execute, // FillAdd - &TriScreenDrawer32::Execute, // FillSub - &TriScreenDrawer32::Execute, // FillRevSub - &TriScreenDrawer32::Execute, // FillAddSrcColor - &TriScreenDrawer32::Execute, // Skycap - &TriScreenDrawer32::Execute, // Fuzz - &TriScreenDrawer32::Execute // FogBoundary -}; - void(*ScreenTriangle::RectDrawers8[])(const void *, int, int, int, const RectDrawArgs *, PolyTriangleThreadData *) = { &RectScreenDrawer8::Execute, // TextureOpaque diff --git a/src/polyrenderer/drawers/screen_triangle.h b/src/polyrenderer/drawers/screen_triangle.h index c8a23c707..7aba16c77 100644 --- a/src/polyrenderer/drawers/screen_triangle.h +++ b/src/polyrenderer/drawers/screen_triangle.h @@ -107,6 +107,38 @@ private: class RectDrawArgs; enum class TriBlendMode +{ + Opaque, + Skycap, + FogBoundary, + SrcColor, + Fill, + Normal, + Fuzzy, + Stencil, + Translucent, + Add, + Shaded, + TranslucentStencil, + Shadow, + Subtract, + AddStencil, + AddShaded, + OpaqueTranslated, + SrcColorTranslated, + NormalTranslated, + StencilTranslated, + TranslucentTranslated, + AddTranslated, + ShadedTranslated, + TranslucentStencilTranslated, + ShadowTranslated, + SubtractTranslated, + AddStencilTranslated, + AddShadedTranslated +}; + +enum class RectBlendMode { TextureOpaque, TextureMasked, @@ -142,8 +174,6 @@ public: static void(*SpanDrawers8[])(int y, int x0, int x1, const TriDrawTriangleArgs *args); static void(*SpanDrawers32[])(int y, int x0, int x1, const TriDrawTriangleArgs *args); - static void(*TriDrawers8[])(int, int, uint32_t, uint32_t, const TriDrawTriangleArgs *); - static void(*TriDrawers32[])(int, int, uint32_t, uint32_t, const TriDrawTriangleArgs *); static void(*RectDrawers8[])(const void *, int, int, int, const RectDrawArgs *, PolyTriangleThreadData *); static void(*RectDrawers32[])(const void *, int, int, int, const RectDrawArgs *, PolyTriangleThreadData *); diff --git a/src/polyrenderer/scene/poly_model.cpp b/src/polyrenderer/scene/poly_model.cpp index cc8a111ea..c93360942 100644 --- a/src/polyrenderer/scene/poly_model.cpp +++ b/src/polyrenderer/scene/poly_model.cpp @@ -146,7 +146,7 @@ void PolyModelRenderer::DrawArrays(int start, int count) args.SetLight(GetColorTable(sector->Colormap, sector->SpecialColors[sector_t::sprites], true), lightlevel, PolyRenderer::Instance()->Light.SpriteGlobVis(foggy), fullbrightSprite); args.SetStencilTestValue(StencilValue); args.SetClipPlane(0, PolyClipPlane()); - args.SetStyle(TriBlendMode::TextureOpaque); + args.SetStyle(TriBlendMode::Opaque); args.SetTexture(SkinTexture, DefaultRenderStyle()); args.SetDepthTest(true); args.SetWriteDepth(true); @@ -169,7 +169,7 @@ void PolyModelRenderer::DrawElements(int numIndices, size_t offset) args.SetLight(GetColorTable(sector->Colormap, sector->SpecialColors[sector_t::sprites], true), lightlevel, PolyRenderer::Instance()->Light.SpriteGlobVis(foggy), fullbrightSprite); args.SetStencilTestValue(StencilValue); args.SetClipPlane(0, PolyClipPlane()); - args.SetStyle(TriBlendMode::TextureOpaque); + args.SetStyle(TriBlendMode::Opaque); args.SetTexture(SkinTexture, DefaultRenderStyle()); args.SetDepthTest(true); args.SetWriteDepth(true); diff --git a/src/polyrenderer/scene/poly_particle.cpp b/src/polyrenderer/scene/poly_particle.cpp index 763343eb2..da2a2bba2 100644 --- a/src/polyrenderer/scene/poly_particle.cpp +++ b/src/polyrenderer/scene/poly_particle.cpp @@ -81,7 +81,7 @@ void RenderPolyParticle::Render(PolyRenderThread *thread, particle_t *particle, args.SetLight(GetColorTable(sub->sector->Colormap), lightlevel, PolyRenderer::Instance()->Light.ParticleGlobVis(foggy), fullbrightSprite); args.SetDepthTest(true); args.SetColor(particle->color | 0xff000000, particle->color >> 24); - args.SetStyle(TriBlendMode::Shaded, particle->alpha, 1.0 - particle->alpha); + args.SetStyle(TriBlendMode::Shaded, particle->alpha); args.SetStencilTestValue(stencilValue); args.SetWriteStencil(false); args.SetWriteDepth(false); diff --git a/src/polyrenderer/scene/poly_plane.cpp b/src/polyrenderer/scene/poly_plane.cpp index 54a0ac894..f43e51a93 100644 --- a/src/polyrenderer/scene/poly_plane.cpp +++ b/src/polyrenderer/scene/poly_plane.cpp @@ -79,7 +79,7 @@ void RenderPolyPlane::RenderNormal(PolyRenderThread *thread, const PolyTransferH args.SetStencilTestValue(stencilValue); args.SetWriteStencil(true, stencilValue + 1); args.SetTexture(tex, DefaultRenderStyle()); - args.SetStyle(TriBlendMode::TextureOpaque); + args.SetStyle(TriBlendMode::Opaque); args.DrawArray(thread->DrawQueue, vertices, fakeflat.Subsector->numlines, PolyDrawMode::TriangleFan); } else @@ -546,13 +546,11 @@ void Render3DFloorPlane::Render(PolyRenderThread *thread) args.SetLight(GetColorTable(sub->sector->Colormap), lightlevel, PolyRenderer::Instance()->Light.WallGlobVis(foggy), false); if (!Masked) { - args.SetStyle(TriBlendMode::TextureOpaque); + args.SetStyle(TriBlendMode::Opaque); } else { - double srcalpha = MIN(Alpha, 1.0); - double destalpha = Additive ? 1.0 : 1.0 - srcalpha; - args.SetStyle(TriBlendMode::TextureAdd, srcalpha, destalpha); + args.SetStyle(Additive ? TriBlendMode::Add : TriBlendMode::Normal, MIN(Alpha, 1.0)); args.SetDepthTest(true); args.SetWriteDepth(true); } diff --git a/src/polyrenderer/scene/poly_scene.cpp b/src/polyrenderer/scene/poly_scene.cpp index a446eba4c..cb31e2590 100644 --- a/src/polyrenderer/scene/poly_scene.cpp +++ b/src/polyrenderer/scene/poly_scene.cpp @@ -346,7 +346,7 @@ void RenderPolyScene::RenderPortals() { bool foggy = false; args.SetLight(&NormalLight, 255, PolyRenderer::Instance()->Light.WallGlobVis(foggy), true); - args.SetStyle(TriBlendMode::FillOpaque); + args.SetStyle(TriBlendMode::Fill); args.SetColor(0, 0); } diff --git a/src/polyrenderer/scene/poly_sky.cpp b/src/polyrenderer/scene/poly_sky.cpp index eef7b0583..e8b3faadd 100644 --- a/src/polyrenderer/scene/poly_sky.cpp +++ b/src/polyrenderer/scene/poly_sky.cpp @@ -121,7 +121,7 @@ void PolySkyDome::RenderCapColorRow(PolyRenderThread *thread, PolyDrawArgs &args uint8_t palsolid = RGB32k.RGB[(RPART(solid) >> 3)][(GPART(solid) >> 3)][(BPART(solid) >> 3)]; args.SetColor(solid, palsolid); - args.SetStyle(TriBlendMode::FillOpaque); + args.SetStyle(TriBlendMode::Fill); args.DrawArray(thread->DrawQueue, &mVertices[mPrimStart[row]], mPrimStart[row + 1] - mPrimStart[row], PolyDrawMode::TriangleFan); } diff --git a/src/polyrenderer/scene/poly_wall.cpp b/src/polyrenderer/scene/poly_wall.cpp index 2fd7bed17..ceac4a4da 100644 --- a/src/polyrenderer/scene/poly_wall.cpp +++ b/src/polyrenderer/scene/poly_wall.cpp @@ -349,14 +349,12 @@ void RenderPolyWall::Render(PolyRenderThread *thread) { args.SetStencilTestValue(StencilValue); args.SetWriteStencil(true, StencilValue + 1); - args.SetStyle(TriBlendMode::TextureOpaque); + args.SetStyle(TriBlendMode::Opaque); DrawStripes(thread, args, vertices); } else { - double srcalpha = MIN(Alpha, 1.0); - double destalpha = Additive ? 1.0 : 1.0 - srcalpha; - args.SetStyle(TriBlendMode::TextureAdd, srcalpha, destalpha); + args.SetStyle(Additive ? TriBlendMode::Add : TriBlendMode::Normal, MIN(Alpha, 1.0)); args.SetStencilTestValue(StencilValue + 1); args.SetDepthTest(true); args.SetWriteDepth(true); diff --git a/src/polyrenderer/scene/poly_wallsprite.cpp b/src/polyrenderer/scene/poly_wallsprite.cpp index cf4b3ae16..90024866e 100644 --- a/src/polyrenderer/scene/poly_wallsprite.cpp +++ b/src/polyrenderer/scene/poly_wallsprite.cpp @@ -107,6 +107,6 @@ void RenderPolyWallSprite::Render(PolyRenderThread *thread, AActor *thing, subse args.SetDepthTest(true); args.SetWriteDepth(false); args.SetWriteStencil(false); - args.SetStyle(TriBlendMode::TextureMasked); + args.SetStyle(TriBlendMode::Normal); args.DrawArray(thread->DrawQueue, vertices, 4, PolyDrawMode::TriangleFan); } diff --git a/src/swrenderer/things/r_model.cpp b/src/swrenderer/things/r_model.cpp index 2d09ca276..1c3349e66 100644 --- a/src/swrenderer/things/r_model.cpp +++ b/src/swrenderer/things/r_model.cpp @@ -229,7 +229,7 @@ namespace swrenderer PolyDrawArgs args; args.SetLight(GetColorTable(sector->Colormap, sector->SpecialColors[sector_t::sprites], true), lightlevel, Thread->Light->SpriteGlobVis(foggy), fullbrightSprite); - args.SetStyle(TriBlendMode::TextureOpaque); + args.SetStyle(TriBlendMode::Opaque); if (Thread->Viewport->RenderTarget->IsBgra()) args.SetTexture((const uint8_t *)SkinTexture->GetPixelsBgra(), SkinTexture->GetWidth(), SkinTexture->GetHeight()); @@ -259,7 +259,7 @@ namespace swrenderer PolyDrawArgs args; args.SetLight(GetColorTable(sector->Colormap, sector->SpecialColors[sector_t::sprites], true), lightlevel, Thread->Light->SpriteGlobVis(foggy), fullbrightSprite); - args.SetStyle(TriBlendMode::TextureOpaque); + args.SetStyle(TriBlendMode::Opaque); if (Thread->Viewport->RenderTarget->IsBgra()) args.SetTexture((const uint8_t *)SkinTexture->GetPixelsBgra(), SkinTexture->GetWidth(), SkinTexture->GetHeight());