summaryrefslogtreecommitdiffstats
path: root/src/rw/RwHelper.cpp
diff options
context:
space:
mode:
authorSergeanur <s.anureev@yandex.ua>2020-07-29 14:34:57 +0200
committerSergeanur <s.anureev@yandex.ua>2020-07-29 14:34:57 +0200
commitacdc52116ea78b4ebf065b23b0cd48d7e41c711a (patch)
treed50d8667825d3d9e9f99d4948d349e1ffc4e3f97 /src/rw/RwHelper.cpp
parentsome fakerw additions for shadows; update librw (diff)
parentAdd forgotten file (diff)
downloadre3-acdc52116ea78b4ebf065b23b0cd48d7e41c711a.tar
re3-acdc52116ea78b4ebf065b23b0cd48d7e41c711a.tar.gz
re3-acdc52116ea78b4ebf065b23b0cd48d7e41c711a.tar.bz2
re3-acdc52116ea78b4ebf065b23b0cd48d7e41c711a.tar.lz
re3-acdc52116ea78b4ebf065b23b0cd48d7e41c711a.tar.xz
re3-acdc52116ea78b4ebf065b23b0cd48d7e41c711a.tar.zst
re3-acdc52116ea78b4ebf065b23b0cd48d7e41c711a.zip
Diffstat (limited to 'src/rw/RwHelper.cpp')
-rw-r--r--src/rw/RwHelper.cpp40
1 files changed, 39 insertions, 1 deletions
diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp
index ab368e85..cabe43f1 100644
--- a/src/rw/RwHelper.cpp
+++ b/src/rw/RwHelper.cpp
@@ -11,7 +11,11 @@
RtCharset *debugCharset;
#endif
-bool gPS2alphaTest = 1;
+#ifdef DUAL_PASS_RENDERING
+bool gPS2alphaTest = true;
+#else
+bool gPS2alphaTest = false;
+#endif
bool gBackfaceCulling;
#ifndef FINAL
@@ -688,3 +692,37 @@ ConvertPlatformAtomic(RpAtomic *atomic, void *data)
return atomic;
}
#endif
+
+#if defined(FIX_BUGS) && defined(GTA_PC)
+RwUInt32 saved_alphafunc, saved_alpharef;
+
+void
+SetAlphaTest(RwUInt32 alpharef)
+{
+#ifdef LIBRW
+ saved_alphafunc = rw::GetRenderState(rw::ALPHATESTFUNC);
+ saved_alpharef = rw::GetRenderState(rw::ALPHATESTREF);
+
+ rw::SetRenderState(rw::ALPHATESTFUNC, rw::ALPHAGREATEREQUAL);
+ rw::SetRenderState(rw::ALPHATESTREF, 0);
+#else
+ RwD3D8GetRenderState(D3DRS_ALPHAFUNC, &saved_alphafunc);
+ RwD3D8GetRenderState(D3DRS_ALPHAREF, &saved_alpharef);
+
+ RwD3D8SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
+ RwD3D8SetRenderState(D3DRS_ALPHAREF, alpharef);
+#endif
+}
+
+void
+RestoreAlphaTest()
+{
+#ifdef LIBRW
+ rw::SetRenderState(rw::ALPHATESTFUNC, saved_alphafunc);
+ rw::SetRenderState(rw::ALPHATESTREF, saved_alpharef);
+#else
+ RwD3D8SetRenderState(D3DRS_ALPHAFUNC, saved_alphafunc);
+ RwD3D8SetRenderState(D3DRS_ALPHAREF, saved_alpharef);
+#endif
+}
+#endif \ No newline at end of file