From d28dcb2ba65eab399cd642f56d0672ceac0e06ea Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 23 Apr 2026 10:53:02 -0400 Subject: [PATCH 1/2] do not ignore inside walls if alpha is zero and other is not zero check if the sector renders inside walls before flagging not to render walls --- .../Legacy/World/Geometry/GeometryRenderer.cs | 37 ++++++++++++------ Core/World/Geometry/Sectors/Sector3D.cs | 7 +++- Core/World/Geometry/Sides/Side.cs | 1 + Tests/Resources/sector3d-map.zip | Bin 48697 -> 50592 bytes .../Unit/GameAction/3DSector/Sector3D_Map.cs | 20 ++++++++++ .../GameAction/3DSector/Sector3D_PlaneSort.cs | 16 +++++++- 6 files changed, 65 insertions(+), 16 deletions(-) diff --git a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs index bda131282..ae0889a24 100644 --- a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs +++ b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs @@ -112,6 +112,7 @@ public GeometryRenderer(IConfig config, ArchiveCollection archiveCollection, Leg m_fakeSideScrollData = new(); m_fakeSide = new(0, default, m_fakeWall, m_fakeWall, m_fakeWall, m_sliceSector) { + NoCache = true, ScrollData = m_fakeSideScrollData }; m_emptyTraverseSide = new(0, default, m_fakeWall, m_fakeWall, m_fakeWall, m_emptyTraverseSector); @@ -119,6 +120,7 @@ public GeometryRenderer(IConfig config, ArchiveCollection archiveCollection, Leg m_fogWall.TextureHandle = TextureManager.BlackTextureIndex; m_fogSide = new(0, default, m_fogWall, m_fogWall, m_fogWall, null!) { + NoCache = true, RenderDataStyle = RenderDataStyle.FogBarrier }; m_fogSide.Flags.WrapMidTex = true; @@ -744,7 +746,7 @@ public void RenderOneSided(Side side, bool isFront, out DynamicVertex[]? vertice WallVertices wall = default; texture = m_glTextureManager?.GetTexture(side.Middle.TextureHandle) ?? TestTexture; var brightmapTexture = m_glTextureManager?.GetBrightmapTexture(side.Middle.TextureHandle); - var data = m_vertexLookup[side.Id]; + var data = GetCachedSide(m_vertexLookup, side); renderSector ??= side.Sector.GetRenderSector(m_transferHeightsView); lightLevelSector ??= renderSector; @@ -778,7 +780,7 @@ public void RenderOneSided(Side side, bool isFront, out DynamicVertex[]? vertice else SetWallVertices(data, wall, GetLightLevelAdd(side), lightIndex, colorMapIndex, GetWallLightLevel(side, side.Middle), side.Line.Id, WallLocation.Middle, addAlpha: addAlpha, alpha: side.Alpha); - m_vertexLookup[side.Id] = data; + SetCachedSide(m_vertexLookup, side, data); } if (m_buffer) @@ -792,6 +794,19 @@ public void RenderOneSided(Side side, bool isFront, out DynamicVertex[]? vertice vertices = data; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static DynamicVertex[]? GetCachedSide(DynamicVertex[]?[] lookup, Side side) + { + return side.NoCache ? null : lookup[side.Id]; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void SetCachedSide(DynamicVertex[]?[] lookup, Side side, DynamicVertex[] data) + { + if (!side.NoCache) + lookup[side.Id] = data; + } + private static GeometryType GetGeometryType(RenderDataStyle style, GeometryType baseType) { if (style != RenderDataStyle.Normal) @@ -1113,7 +1128,7 @@ public void RenderTwoSidedLower(Side facingSide, Side otherSide, Sector facingSe } else { - DynamicVertex[]? data = m_vertexLowerLookup[facingSide.Id]; + var data = GetCachedSide(m_vertexLowerLookup, facingSide); if (facingSide.OffsetChanged || m_sectorChangedLine || data == null) { @@ -1129,7 +1144,7 @@ public void RenderTwoSidedLower(Side facingSide, Side otherSide, Sector facingSe else SetWallVertices(data, wall, GetLightLevelAdd(facingSide), lightIndex, colorMapIndex, GetWallLightLevel(facingSide, facingSide.Lower), facingSide.Line.Id, WallLocation.Lower); - m_vertexLowerLookup[facingSide.Id] = data; + SetCachedSide(m_vertexLookup, facingSide, data); } if (m_buffer) @@ -1236,7 +1251,7 @@ public void RenderTwoSidedUpper(Side facingSide, Side otherSide, Sector facingSe return; } - DynamicVertex[]? data = m_vertexUpperLookup[facingSide.Id]; + var data = GetCachedSide(m_vertexUpperLookup, facingSide); if (facingSide.OffsetChanged || m_sectorChangedLine || data == null) { @@ -1248,7 +1263,7 @@ public void RenderTwoSidedUpper(Side facingSide, Side otherSide, Sector facingSe else SetWallVertices(data, wall, GetLightLevelAdd(facingSide), lightIndex, colorMapIndex, GetWallLightLevel(facingSide, facingSide.Upper), facingSide.Line.Id, WallLocation.Upper); - m_vertexUpperLookup[facingSide.Id] = data; + SetCachedSide(m_vertexUpperLookup, facingSide, data); } if (m_buffer) @@ -1392,14 +1407,11 @@ public void RenderTwoSidedMiddle(Side facingSide, Side otherSide, Sector facingS GLLegacyTexture? brightmapTexture = m_glTextureManager.GetBrightmapTexture(middleWall.TextureHandle, repeatY: facingSide.Flags.WrapMidTex); var line = facingSide.Line; - float alpha = m_config.Render.TextureTransparency ? Math.Clamp(line.Alpha, 0, 1) : 1.0f; - DynamicVertex[]? data = m_vertexLookup[facingSide.Id]; + var alpha = m_config.Render.TextureTransparency ? Math.Clamp(line.Alpha, 0, 1) : 1.0f; + var data = GetCachedSide(m_vertexLookup, facingSide); var geometryType = alpha < 1 ? GeometryType.Translucent : GeometryType.TwoSidedMiddleWall; if (facingSide == m_fogSide) - { - data = null; geometryType = GeometryType.FogBarrier; - } if (facingSide.OffsetChanged || m_sectorChangedLine || data == null) { @@ -1437,8 +1449,7 @@ public void RenderTwoSidedMiddle(Side facingSide, Side otherSide, Sector facingS else SetWallVertices(data, wall, GetLightLevelAdd(facingSide), lightIndex, colorMapIndex, GetWallLightLevel(facingSide, facingSide.Middle), line.Id, WallLocation.None, alpha, addAlpha: 0); - if (facingSide != m_fogSide) - m_vertexLookup[facingSide.Id] = data; + SetCachedSide(m_vertexLookup, facingSide, data); line.RenderSegStart = saveStart; line.RenderSegEnd = saveEnd; } diff --git a/Core/World/Geometry/Sectors/Sector3D.cs b/Core/World/Geometry/Sectors/Sector3D.cs index 3def3d0d2..13a256a37 100644 --- a/Core/World/Geometry/Sectors/Sector3D.cs +++ b/Core/World/Geometry/Sectors/Sector3D.cs @@ -262,7 +262,7 @@ public static void SetHeights3D(Sector sector) var overlapLight = false; if (i > 0 && lastPlane3D.Sector3D != null && lastPlane3D.ControlPlane.Z == plane3D.Plane.Z) { - if (lastPlane3D.Face == plane3D.Face) + if (lastPlane3D.Face == plane3D.Face && !sector3D.ShouldRenderInsideWalls) { // Flag previous plane not to render since this one takes precedence var keepPlane = (SectorPlanes)(lastPlane3D.Face + 1); @@ -656,7 +656,12 @@ private bool ShouldClipSector3D(Sector3D other, bool clipSolid = false, bool cli return false; if (RenderDataStyle != RenderDataStyle.Normal && other.RenderDataStyle != RenderDataStyle.Normal) + { + if ((Alpha == 0 && other.Alpha != 0) || (Alpha != 0 && other.Alpha == 0)) + return false; + return true; + } if (ClipStyle != other.ClipStyle && (IsLightTransfer || other.IsLightTransfer)) return false; diff --git a/Core/World/Geometry/Sides/Side.cs b/Core/World/Geometry/Sides/Side.cs index d5bc78081..f95a5fcbe 100644 --- a/Core/World/Geometry/Sides/Side.cs +++ b/Core/World/Geometry/Sides/Side.cs @@ -48,6 +48,7 @@ public sealed class Side public bool IsFront; public bool FogCleared; + public bool NoCache; public Side? PartnerSide; public SideScrollData? ScrollData; diff --git a/Tests/Resources/sector3d-map.zip b/Tests/Resources/sector3d-map.zip index 3d70ccf8cadfca701b4db2b4e9f31d07c00cee2b..1d6c3bd36e457608b747e714d560b90d42cbd1e1 100644 GIT binary patch literal 50592 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 literal 48697 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�&-Xgz}K`-uX5c#zaw zVtzA?{}B5ZkQw5N_(AuATmI{Rw=20b5120pV^+;2ioA0z`ru)m)>v_K2?y_7tM|+Y zD|g~&{zTjB-8kwI2zeW`PA31Eu zn(`2T0@8m1O66Lw)CAV{GDt-;phSeC6k78+$JWUK+_dhWhqz&m^(z;bakZC-38&@%CHf{Fup99DCJsG2w?i|B{W#YR_xDJO8tk< z1Q8!iK*+QrNI?kHvfz&Wh^~x$Cmt#D7(og{pf&}EsjphL+CyREU_i69nbeR(C!Q1E zjLAbm^L$0n0Ar?B`#|eJz6=Y09AYz_Froqx|7r3+Yga)vdi8uesW})4)W9)$?$1+t z%Q`xdl6e4bga@4EX{~#l^FO<8<$vuO5F{@I%0}p8+TSV-<1RKXjg0`r_-nyot{!-+ z(FIr;7;s10Y-CU(YK#*v7M`~xpZ7xueW=RRY7}g}pPNB(!wtVqCorp~i-jj)(p;g7 zP~tLF%;lg!8+H*4<3)VFAqcc0dJb4hu6h)>rh1&pwO`_+&!KqZQUi*z72WQ@AZ~X6 z#AX2Q0}t56i~G?fA>gA+xHG@M(+Q7M(qG@>z`wpX>^LlOUwqtBXn4hn8>P=V}S*xO*n`XZ_*-J6B2cR^sXz2R=Ne>-w**l z`Eh0&CPLcMDEZ`|GUxLX1qwGR*h)ngV%9wVqCinb1^cOJ`^SWbbUNj1uT(w2FFea3 z4Gf;IG8Fdv>7!kp)JMSwlB6x8Onar;*3fWaPrUi{o3CpdoU0qt?Vho}t8W}~|82<2 zjBK*$ETsPQV_($Em)GA{w5v5DycZz;M5PrB5Cfahjntd*uu=kX!`tbEr^=0O8`*p} z}_+9u}Ogi5nXspM?Q5_5l}HD znuKdm9F8Q?<)C?{B4~n!vAwX;TFIfP?PdSRlc!&|DE*)!(~c~NpNQuxypwRdqtt;0 zX)7qR5vUMQ+lr71Mxa&%?HN#oF1=9E>Q1 zzsn=O0pR!nU`4E*I?G#2l_}3dGY|n;0LnlY=JoRN>eaR*qzVxzMj?Cc1{alABKY*0 zwW47>+CI0J?`33d3qnd4fl3v!AAfee^x2jmhz(JomW?jlHz#+F4|f!r0`njZtkv>M z#rUjz91fbm)r=$bsx*FlpKYh?1kh|B7n@8wv6`M=lPl#YDVYG^!g;{km?r1AEKHd< zCfpnZFfIUPQnMrc?xb}1da-FoCIrV)E&o9szNs#HAJLaiI8Ej;BQPLe+DvA&zVVVPSf+D$ ztf%^M?QvrLSGw9>gj6&lcI*vRG=!=x$vAw|!wO6A&AE2`zGocx0LA7$P7$$3DOtzA z!JR7RO%pQ?3);~3cQkTKS^zk20C);(_v%g*p`;an^8tWouy%#-vJM=``4z*iMW!4D z5Fv=C*o#)eNUK(-*0QxZM680Y^7SwNZ8oSMt(7KTjn%im^%skFf$UW|A@UP zHSW28@V!8uM71W=bji|Z_oMuf9MAl81vKEwh)zw2g4@yEvy@K&z=d9RVA&bGz%5ys zE`(GU0=JOUX!wr70)rzOwVLq%KwDQgYCRgCZq$09+ja%pOi{tZ+$5 z4gjai3*IINrcJb(-CIrQk!@b%Rdtk7aU@||G9wj?{itJw)Pg{H2-$x-{};5=g4k$5 zj8l=K9-w?jKQJdaNc1|w2S=EOEi9yo1CE@e4xC6^?U{{gdP9=PzCuW>LUm(|oQ8X_ zIVjk?V5O*4qi3N+T;Z5RJu%B$ynt@IYHW{zxdWA8Ru&OBLd<=R z4RA=>))~NKMW{)ma{fClT7>wW3yRgOZoI#KpnS{bjRgOk`ujx?3hNp4fsUs?vlwAP zy`4CDciHu1UfhVOmgPgiOh?`n3D~$^b?wTP_f;8wo=vFLm$5_Mgq@S&sRN-pC+a7l zZ&NPC?ucf@crypuByC)NDaU_c(ExuTZ(`3jpU|L;8F#O^hcg8bLKoLaO*b zG7S>XXQLiKx|lN?H*7Q+Bm6b__De9@OIv1)_jT@L1h=%q_X6?UkX>c6cyDJJu=*-I zO>W0ND~PY`str6uPU69c1ODxWhRO$DvAwh+nHzU!aUW!HTG9>cZh}g(?s!!VTlv8h zrkYe$%+{tzb?nWdn+1rKR*=xO>PArH`)9#B)u4@D(0Gi9{rGst&H*Q{9l_)6)Uh0- zFP>F?Je%DDAZO65G5CjpA$e_!8NdIW8G=8%2G;tC4UX~7vi#elT*iZYY>?Cj5i zHO^lw$t0u`3WObsSTnR=joL=|Uyvf`J;9Yq=w0;HeUfe}>`>;TXRJ?vm73V}q>mZ& zmW4%4$27ULT44X0N!@lMxV}Rdj$FDD#e8%XpfX`I1W`TYDVozA#2A{BOhOu}Y=v4? zJbxRuHeplErSMMvWAVm)WS`#{>)o9au)nMSF2T5O)aUmgQ#53RXFUWJ%HzvjZudxURIm9B!`QM zY*>FKL~e*Y1HRWAs(Oh(7kdGlbJw{|gy%lk7@1QwHI{&R#_;8q_n8~Xy_A{)L{0lV zH_PQ)h`ZfKvgwpp%~_tf`q+l5ZsKVko%V;>YqZ#%=9oLG{_Td9ARY!Qh zZ1Y#=+J+j#!c1F*)djWNbLSOQj~oC8k8Oq++wn(>Fe*S(**$J|$;t=|)jK2`oacgh#&nXSy8 zJh+#6T6BtP)aEPc+kJN1gime67==#|KB+v4_R-bo_wr2Vtah85Z1)!xXXrK?wTkJr+~ zm8%rxjO>2zTRGg+H4f5sIyj)|JjIentC#I>2`_+DeJqvyt(2T2g92|CT~)ZvHEKTj zm-kZL=KcSVjJE)4>-pkGaaz2zNbwe0pjasm#Y$VC6f16_K+)h5+)9BjZUu_FySux) z1_%(`f(J-KUVi`g=FPl$Gr4z9?%ln6_MFe2vu@5FmKB;;fV#D^HrA66k{;Xoj^uVJ zxm#h@VTwjG#4Kg>N0s<4?L%+Kir$eqQ@-{Smam|S28(MpP6E>3~o`(9glaoF{_PM3p61` z>`nGkU1e7}q0D|+o-|K_;nH^pxG>KH)gWuTsRF!TB~{TC(eb4*M#i{5wKxe zQ>%Vx<4*67WMUQ6Eru(gH@ksR!KU_Auc?kp89;}tSxamT;8fNiaFH*w^v zh7NgOtZu7ft4MhMDGH z>S|TV3}{meulI(Ih+Bc8idVD*R5i?OfW!#NPL^7A%Xgm8SeZ|k7!{b8=<(#d>OMXuWzDImkH5!toMsn z)TQTlxzHR!X8-P-hdt)})*Ov2gQM=}4%LI5YQeYhT;;x4fyHA?xOIG|iRIn}u>M=+(yO|Iroad|e12fJ98v>B-TxYV6=wRj7;Pi(Rj3(>JI1rqFrI z(K)O3_3F!iF6Gd|wUx0uNa-M0i46g0m-h&=O{Xl(H~+JvFqo6YtmBMY0Ra}UhrUNe z2U5G9^K0P#Qs{B|Z+xEiWpnT{zbPr`6+R>D;@ykZ;2aIPD8^G2k3OKl`=u(`+(h$J z{L#gYsKWoo%u)EGA@(Z;wppo;JsM7GKUxD?H+uzhjU8W=xe@OHJ`2B(LUx2HeB_TE zc<1jZQw4jD&GGnly=+<9C)A=xk#no&RqR)$&a>j;H!ulD4IsK?5<(^YFWz^u=D zO_Wm2RIfhm-w46uFCBe;)qzzQR>(q3fh6Xm4}|GEtB=a9G^zGrIu)l06`+;}K4R1t%VPbOA-?_UQ4 zZ}rmdf#rijW2Oc{dYUmMIGOCm9uC-b%}Fo68!YF`NV{`;yOLs^s$?v_#p-(P zK9Ab@&_3hnrC~#3J1p2Z7$5L_Nq4q&lu+;9IXNO%XddsOF(kD+Dj3jOobxt6=kP11 z+D(K!@#Fv^qKKv<#eD(^S;V5UaerQRG-{SG*iadzp-<`-m=@MyUtUwms`x$WYWB$w zmh05Te0NSY_+O($f15wHc3ZN-6$vXbkwHS!!a|>k{t?#;R*cR}Xt>O8h*#=J3N{Ii zHa4Em_QRSN80pf0YZDF6_vruz;Mvs{ZApn*q4CCAN5D506n_rEmQUMViF$JbsX>Fj z+V#(<^?PB-`DMm`KNsIK&Q5=SQXq3?eJ}wAo|9V9dR^VpnaRVz=4}*uB6JD#sK2H@P#tAo^@}I)$N??p~Jeld9Z_ zwSpw6q*7|;8=%KvQ--<3l>mFA3pVKl@;lL8X2|5{@i0<-89B?*lYSNMY?A{kM@gmD z%r{0;@s*Z}OLh6jdOvIv^@U0tg+A6aI@VduOcJLDFr}8nKToS(6#AY`QYM3^!%8t1 z$oL~W#Z3VlGB+)oV@Qh4Ldy80dw~LLcA8t{k4#58yzIZkO2APSk8N9UGP0E5$tQt6 z7s-I`1uX2@X}wRaUNtd-uGEN1zzHttX*_^P^On5KBfb*QRmF4C8k{U%1=t9+SU56$ zE^=dP2mhRJe$?u<5c5K0D_=9+J6s~-;myDe4ikrp5@%&m^BLGecJD{R`km96?{jH? z^gjH%^lyv%%!fi^ost;I8)bPWEn~i?@`2XM9u#6ehuC;~M-8Gj@^dhteI39tRJh$` z4pBA_&U_%gm+AQL>(SDEcS(jO-+;QrqF4mC5kf{HVd~gNhNep{;hs;f5e2W7Dxs*Zm@$?$^@r zFb)y{5)avL4P5cHpWdjDKJ;5?-Zm~t2p!-GHfLrnWs}cNA7{{A%hDY&S?wiv68P#9 zJ|o=0!jG@!@n;q%vI!{EQZsw6&~q^X>I~5{1r8+DzQV^q%#srZ{D*ISz`g5BTGyY~ zm%~AqT9VmmW#`jRY`~3aJ{+m=VJx%+?7;TfrO>;e7YvZ~ZJ-(fr>IKWwa{DK7p{#@ z?&&~b$8WiWPHG#gVbp#H4^4&+?j?70aVgQw$v7FGwOIKSWZBgho)D`|Gw8DVi%8=C z@8Me~s>MTKH%4Cn6OV&XYc$FDqVQJGi>97T$lIWj;OtJ~7i8*_w|R3czkHAYctJoBxS7%OXND z4DqcBnf$3yh18HZ5&?Vez*>qnJ+A+FtwY{D$uN@00SvL?4@J=)xp{sHLTyC!@VnpC z`k1eH1lB$%lt3qO%Gu_LZ{|tva#m7U{i>4JWMuahAZk_3alcjA7m4jLZj|khS4YM* ztzt3FcGAXLhFaJjF zeUT?3r{OR(dkG|7VrmTUp|hd*WoP0Z*V_=<;G~zwj@!05lL5&Y)C_UUG=TEF{KQ1U zv}ktyXdS2dk8d_rHnrGpqPLG~`Y+w&$Y~^(V97V4`AHn+TkgFNPPCV!y`2UgJ&gU< z!=y7@^WCH$l#Z;6uLh?@kAh&{CvnFxUo1iUgW~88sWN`X{GMAuQO<0)4+rNpPl3L8 zIqbi4zIqhW#8sT9(V_GVMBRw_-0eu|Ny|WkA#@r?%5?oduuq1b3K2AXAYH&(7&R#A z;fmb@UY9Cg5&vgb9LTkKFC@AUvYWf@g{3D#yHvff+S_8_v9e{;4z$X2|3i09w|Wi0 z1tIg0bE4_h^yqOz$qcbt^S)0_Vx=g)x@g=lzr0vHhPK(eY?P`DpM!IbgFK%f#88G4o zrE5*4m_~K=^v3vZKFCXx0GiZ-FgBn9#a8vsFweF6{6`)TX>Zrj;9lYN;RSHh!OjH2 z(|+y98r}r5(@}OaC1tPV&3GtCrq5h@K`r1k_qIqkD9VC3<$a9w`F{@JA9+#7;i+>G ztF0WVXl^REBAS~b8mdkL)qW!mI#tYpW?vxi^S&6V+q=G)fZ5)OX)lMBzEj7zS$i;F z)X>?%AA<^dj*Jd9YxkVl-mdHAFRokHxfj>DyZoF_MKCO?}5xhDlO*HR#kid1d z!_(kzZGMLXCVdE@V1z1F9*v57Ic{6F*>zbVkjS^eh5DCgVgYdfPmv_IsAbeZIE5L4j^wxtjb@Bdfa`Nk>}+ zww6E#`?qiZ06a4wx8_PR$ilN$aZ?@nqazAoyX5LiDtkK~Yw+AF<7xueJ5GoV+}xL${5<_tn(O z=uG9gM$0)ifT1}ZwY>i43@;8#N?5%OBs>wX()Bz1VZ z?Q{E{&}r>cZq9ftP_+KjH5)wQKsJi3Tkb)&fQ;K|#IGC9oDPlie?m_+hZ-Lp_+mMy z7olwD3}Cj4U*JIX<2;;de!Cl-WX?%^tu+c~6YPb57PIkdBb=XQ_!XKqSbvQyFI2$1 z^gg(^$x1U6d&vfHc9$VXg8pDBg~R{jq-%@4!~287&E`nS_Uf%sUn*#;Unh^*qRr+s z6K}D`em4tmai%kc_kQkqP=Mg7j?EivgBS9BT;*Y{x-2iL71Gmb@p=PYvoOKs{~f&k z-MSV3Jg8eWKxZHU6KcI(e;9oIL7!5Tq&lYCB=(Okq>^sSvCMQS#BB#*mK6KNMMLx3 zfzhYGe`Qo9n5ku^QbUOGo(LMU$N(=B1434tND5q?1IC&bMXEKvJz(kJ=V1L?g?}k@ zb!H~se0ng+PS}i5q_&bXc)uM$6Ds2 zjTtA3PixA7j-lM|rJ8Kg@e^R&EIqdizgt4^us_AVxh8bYAF~IY2^)M2w|&DlxTFs* z*KHchZM1w2rE4oqgeO_A91z+hcD&gouBc6-^NtIh(ZdQjPIA}#CV@jzs256Yz9m8Lv;bCyc@RI z;6MvvYORPUi>0*QU8?i+$^|!cC5zjyqW^qXlD_CGC6$-Bwa8Eu1*CcT@~XX5nJ!R^ zG6f{xsIzx}+$6*qmmuOD$;~PISZeo1X;JE#1XLEn!xlm~?sLhlCgb5pl_)^$L7oKo zSzsBsQ&FMEO{iVNUnleM^KbwZ>bJrw6k+&WeIoWE4PVGcYsSY*oqys_+Z#vqK+4K@ zHkdIBkOw-^9@rCAaSuZ={7@!%8AK%>QdXx-MV8Ssc0lQI=({S>r4L1}3(Z6AY zy3N*sYL)N)*PKA;9FV-Lbv;N1l#1R)FqMcJ6}z4#FHTkBtyhX{UQ-dp3YLrCzb4*e z;_eV6c>2T*l6-RDZg;ra^_tG} zLYW)~jY*yXsK2dpV-F+8VG1coeix0(m4Bx~^DYBXuwb^&(!IA4FsH*&eYo*jFG(0R zOKdjH5^&rgL@Z(`bV-J@6!QPF2NFDRPbH&-05k-%0GgX=59+oQCyQENCJw*g-S+;8)c+jPU!4~dMKp{myziJ^Sm1rS9#ezV(Z1?{xd3 zyEGT$cN#>t>iB8oSub3%GWWYQouoPr9G%rKT(d<97``mGM9NvrrO$vey@tAEk&5-Cjqi-oVTA%#Li?W8yz6Q})-2Ya8e`(HE4 z?F&z6vy`3>-xsveDy0!8HUhszj0k!pOcl@EAbxEL9^ePR-iua#ZsSWfek<=QTUEtL zkLXx&Nmb9^7s^v`*s^HE!8h7PnpwNFQsEJ$rfo8P@k+>6?}s;B?}_IroB$8u|8>*l zB>BZWIiXcJd!##(d%$-jyy5%KJ=EJ+wsEt-Y~2YvqLIuBRIp8*{x82XX>I9) zYr~Uj66AQ|vVti8}!53TV`O*}`ctkdbns~ zq7T|auJjCu41*v=>dbhr{#zXDPtQkrGX=x{yP#RKqYqZw-;6H`>hm&~@a7@yZFI>*nk9JN3prafostYG{C+)4iO_GIv9}o?<87Ze$++00 zcN;7Xu@8C^L?O8R--f-V#n)QwIO?UP*@@G_!Jd;|;^t4??Q#*N*8fZ9jGPXM*q5_%q!?yGE3gUntcwD$|{m*^QQc%~_dN+&!??v@lStWX$3T4Hs{^#uSo% z3_zq+f0lO8RPD0rITl>@0oT<<2DjZ&%QGOTYUerNtJdTv+;5Lt=9-DqialmprwaaC zr60v3-OIoA8@UjjaLi`$d&I2?P#l_84Hk7Kot=R1a=hhzUo7Co(W{pNeAcXOUbwkg zFY$Hkr8JhjT7rgka?#(ZpsHvZ*PUanGqZ}hFpQ~S& z;=e}SXh-_;pk8{sIQWM64DJVM#=f=&+bP-9IkK9z*(p{U$H9Py1|kEUNu6#9)n}<< z-gGK_X-za7T$EN3t0_{t*0smLLvmFyL46fkRr-n=NTVNQ5B#1lf@1d>MWLS9R3gRR z>h_-Lz!$as#DVpJa6|+Z%_HI0oE&LM%1yTU*(|1~j@aSF4hBRU_Lr&^1ox0xORxiZcQtoyUU$OPzr! zM4D|aa}6-;7gJyDX+1Zb`*Y}7Vk_&}YGU`V!e9YQoGO8CGmT)4CXn>!(#PBBAZD-bKVt`} zz$-IN8{KK46DeHr{o<*U#S7}jlM?n!-|YmEOpn{WqO7#q{FCxx;H+JvmRZSlYJU<< z#jrBhI5lmNPgn4$DAHgkA#|yqWLExrnq^$f$%|o7HL%hJ+=^YLTpE=aQ>cC}FeQDl z=3-{8U7H5*A%A=bPHW0+zPX;*?_a8;Y)$;}u|;?IE;W}C4*E|<;FgAPDS=#$EjRTI zgW82Tz5Q4QPOV&oFDX7|&IDOZQ#@28H?EeG63%Z|kB!*{XqelnA!__KAzlqldfrQi zG`D!Z#H&6XWGiAh*gCxG;*9ML|FSkHgsljP|Hcz_Hjfgl-bVoC|1+8%BUtuPj9%XS zpdun{n2UWYwlV@L9t>%?8eU4~`)$I>ig!gRk!K%3mfzNYRKw@7aNwHKsisq9pt(jS zU?`S#eJbNA-VF|-v!SQR~}909?jo?76P*A8hIfUlrKq7?+X0lol9R;rt1(a zbT@bf!Z!$+d^mhaq@}v;U%LLcR^T1n6`tYz@YCy+!JjfK;)MV|Z-(omm(XjyfnWyK zQBXarxKBFH5){9JP|!T=>N&juRwY3%-p|KQwrvfMDDB@m{Ay4}#>FBJ2zdLQ)W4Y1 z`A<=4Ol}jwEnkjP)P*XIwH*vk%U`-_L^N=CEm12=0P;*E$3XRR@AR=fHq+bYn~n6- zFJm&^$jnEXC2z3yXX?EJetHEU^8LQNzme~%k;R>xOg9UA& zEp&?|b~(6P4xv2X_7L^4tzM1l6M>t9|7on?>P!)|hAuh29R=gn>99C;_K zM!vEOj=dbPJp>?jo$e`s|6%xEXY>9GB0=i^nG~y*yL7OV06{)_UZrGETNdFyY*T%w zYhl!DD9hL2#`MDvZcJZR?^59Ld9C_}n*&s(a5MXGvp7NG#={>ry8O8F=zjAj)<@8= zjt63W64BJq>hfLE5}Z0z#T--mQD=&wHAB$K%W*W{?ZeS4_G$#0fpr<#?{$oX)Axd_T{lC)|n!DhqM)sxTziQ z9#)RGQ&*t~ZRGsFM`9uc#8B7b-EM?3*s0_Bm!mhr|A8aGEQX!WR-bPAQfPI~6EY$= zC$&gsP(YP@9g?OMCY@=LZ)CF|YhPE&2`JHOPR8k$Kt}AVz2uRjit0R5BU!HcgpS~Z z3Yk(Ls4h0ci%_!hmCO%bd>NYV_!C&s1-Q6_zTH$R257^XajfWG4X-|W0`s-5rEhEm zuEPONKkGjZkm$_QbZgGO`ih|UnVnX7E8z7$lP_l3U#Jf!J)qfm;c(GwNP!4dkl7X= z#4eifER!Le=kgAh8F_FM%5-`B{R6foV!@&EspUm#TYS0z?xbaVkTxBFPur#_&wcva z4S$x-!sk)BDA<2tYYT#Lmma%dvs~fDMjhd`)s!9nj zHl1n8Q^7lBo2QQUhiMCxr`Pak-EAUv636soM!}Ip2JP;iS_iL$`sXVWrtw@>Ppi>T z72WN3MX`L7-{}+T1?D80OP>*UaVa7NH-BwcEXw%)y(|t)_lQw$PbI(+<=t*J|D5B; zDhZv**!1!KIIxuI{KnddfZ>Dh5Xp7xlQ)h8jVtzXQH|8^pKOT63{Q(KAJ7hAp8@6NJorba)NZ`W_e{z@*`tK1HRRd-AFVo4&_B%Dw!=)n6_KCDzib3i?`c}5 zG*k1DUwC}!Nh;Q~8#?~3xtQ<0ZPQkl9^&76ICQi$p?9Yn5Mr?VCZf+lD@$p}~N_hZdPQrFF%TufddpgC>g#J{Jar^Ex zCu&1{^AwG#j*`~VlvumgcnPO&gco%=F8NF89&w!yQ)=W-kF%k5ivzRxZ@qU%pc zMB2}9u@g+LBR~Ge)mN26R)xc#NCYUJf0Gsy+FxB&U0b+*zVP(1@68^h%o2CqpqO`E z_IDWr+a1>-%cinsx2VH;!eO^k5eqIuhOyUZBsyGQ*3ANKKJYY44F;+I$>HHdB_--! zF>&9t)W<>wP%9wo5{ac+<>cGYLWKzT4#;k}Ss#Q~<@5lH?Ykr^vtR!8uIC*i`Y5_9 za=MAPVIQ2uXGrZO@Ur6y1j60m$9LW_Z^540g{Cc$YVwJ9`9v6xxRL;X1(_u;s`!Bu zHP_K~)U$&81)_$D`<%TW-T!{+>5SiKpIK4KXyC)|{OB+EcCXBuae=;p7s3qbPas(E z?&Bp@X-$owJwJN?SyHC>IPDcj&!BK@?MA*?F}?$B8><-5qi&Cz7+?Wn=ay=Lq%CY$ zO{Bg~6{#8k2anMt*qda6wk`+Uj7&25DnCT)5i&FrEdNfvy*~e@;>F{!1g2r{uw`7x z=}nf}zUS)AdNHUL_hW-?5Q{Gecd)sh>MGHv)2!zhG7p7ua$bk)Z#AS)hn}W^Fvs{) zxwCVhLE0ni&iBM3KzV(C-~>c&=Z$2pNii+u%F8+~vrje{-PyMtR<$oJqPjq-(O>li zm5m)P)*my1wJNQWZ2U-u&`LIoCWkDkH>=~CdA@TG>>liEKxmfEwBWn+2eSTQDnVrl z7qTb6M-KXj-MlHQ#{cBXCDv}*Ik~gBw;0KF-lQ=(^?k|ETP7)37eejq%vX{x z#yQQu8jZZ;JL&Sjr_nugac4gBNBZp0=uS1Q0o+a%R zI~F>13h}*J2!*YVNq+F#@Q-anpTpVE6`@m8ky#i9AYQTFN9XtBclV=PFlLEi)M1|` z@2bGcVImsn4>9&^&N_r8lS5SDE%yZ-8AVf5j8f9xcgVXf7m1a_g^5Z?(UcBA66p&- z`n%C+r%l=2c6GU8-Xr0<@O`pfVN1k^wy8b`iH=ZMmEEnsYSx@X-5M%QuBGYh2Da(~ zy88%099C{Loq?Uv*YGkVd@`n}3&ZSG*3y~yy!)Ncy`!oI`n#Ri?m3FfL98Bn?r9f) z|K>4$SIYa&`@v`T+!IYh=7+?8^lgpN>8y4@S0d*p`50DF!6*ovS;|;!*cj2<`FQA3 z>hSRB5;|3q#qO)&T{xAo?r#ktj2ZW5_Cxo4I=jDs@00sO{156TwjLihwh&oTJ^%?H zbiox0-50cRaaB;_;CFF;AA>;%I245H--kOPF87PN{IBKxkXOhi+ne z?5en{L_VHwBbt~yyN=I|lf1{a5G_cbs3Y&tyVH&B2m741^5-ajZzmM>g+U4QY#ZKU z?@8{??AIlK5C<244Ap=pZj|WTNs(D#VKgdA4Rlbq&{<}4^b(7xL+qr9avh5up z|MAk{9&rLS_pM8}Rn-H%(;3viM;H)y)OHx_8zzIYcE3rwAVx3End1G#j#HrfnYm=1 zkb=&8xc7j=W#&F?1Au&sxT^?-KswL8UosbL)J7@oo~_IaXQ7jK_Yk~pU2;fCbeH=U z;u3A!-~2$+RnVLS8S(qLqcem7w8Pm;zAh61RLgw@loq)Q-GyglbzD_;#0`xZgO)aihQ=J|@%_dC zw>r@fsm?BB^aZ$zme2prN8kvIT)ns?&vK9w0z8gls0@crmv)9^|1@cj&Xm9F4H}Ip zrFY*J9bqb)w(%$`gad@1=%YB`k$yj|WV`7kLYdC*9`G~X7f~5rSJGIu>MwC92^mun zxxT@0fnkiX3+3h=SQ6(BTlE&!LQbNZAehv9zIGY|#*JvutoPJe$Yh~umlygp|76{} z1KoRf>VV;G)2C=_3C25B=zzZOI04JAK%A$}F72SZgmB1XraDVhvj45mRS>j*o^R;o z0*sNb3)GHu*-vAp<3p!hTux=dexVQ7cUP`YeZ5J$Of_$p0WdyhzN<$tpQP)FRq9i6 z4AA;N%8%XVbmzU5R*GV`iG z!aVP!&)eLAkxv>^V#>S0jFZacu8)AnfvX7t=xz{nmstYR{vP1x(TcjiNM8r9T|F#AndI7ii$#6TKyHhgxNY$ipV=$V$aoP@3K zx>Z(I^5LxBft-#TtzGHu4@$RQklv(p(-fZ401EQGC#}?r+d4yKQ!hI6GxOmcVTP(5=K%@2oU@EwF+!S zb6_eu*$f>;u!_XItZD^bt%s&D+rd-%cKv-i?=$;$tp>Bi4IgLk_xKojhZOGUL&x}& z9{0AKPcpmQnvo0cc4ynX>0VcPh$Llqrv&=@?MhNh4HrL*VqFMH{das^t{m@S7~mf} z-m_1MK;8o$bJTBxuj;DkZXV-MyEhkL2T8CsEzH`bu?r~#-Hn0WJhoym7L#m-+v(Mg zY=T3igs2hg&|UJ3EJ-oIV<4(23xi>gc7{Bkhg>85KaC!vYD5$=@Qxz{>r?_%uS92O)yNT?5LXEqtm_7&(J# znzMTZwt?3UQ8T_&5J4gzut!>6nu-Xz3WkBK^sxIy(El`Scjt?6U?-KXpK}y$fG47w zjK%yAq~36(0d&{>jBjXprMcsc|D4DD4PvYcV>~SU@9B%0myI7?pu66;$>gV_@qVr5Hv$$ zRh`Et7~pg@CZpKD29lo%wFBFcN|@v;S#*3ujmXoBONYp0vm(@*$NkdKSj~Du2-?2L z*0LDwYFSq|;)4bQ`ZQ1cm#vqzkPwIBa7cUADW>8fV6T)O_c66d+GogO^sA+Y>BG(= znA1qomAnCtX`W@Qo+q^JrDL?yf@(6uS^r-?T(_sFFr&Gt!aZaabl0k&%cWE9CA&z5 z>0|K3-zZSnq5lf-UpQ)9rEeww1P%6=SO@#pc1@JTpvObJu80w1iZIBUR!!NdKgMFz zTpdCebo}A>WRP^;p=WnteY>K(T^`Lo_dYHdlnzaaWJwu5hFwjxktdrCq8|Eo|0SMD z8%76#F_Dl)`)U4%Xa|^Nclo<`_|}oj9LaCfuix`>b919#&UtBRju#gfH&3RrMp_R9 zFbT8)yVIA{Wz^OAp+`sR>S{7hZi(wch61CJxVU{JK>~1er;jD}$ zJOMeVzFwBi{8i1#%0KHoO`jk^X|U+>dYd!D&7a( zpdW;@e+*0Ynoa1!yKG=LIiy$3_4heeoQII8@{;~4WaoE7%_saLow#7LP$BoEJl!@? z-8SW)OlZ!P+*O>vnalj#^VXZv?(wB+Zi>{g;^(_`_Ghp5KF`vadrLbu&kj>??Y-r= zc>C3!$k~^*q¬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

fape0cO5ZDW~(Sa*tli`JnlgBUZj{lES)dn;{a z=QGP~j|Wkwpl^Vj@szG%qG>t?>%=^*sI6KZ}aS3kmX zgjWjwa;r4Q1Xm>7fCS;sJ!F&YBOg?jXv|Tp(k!EXmr|K($F4lRM_ye{CN5;f$@uqk zlcrEy z(~_R3)pGVYV_)6P(V;L)LKx^1dxW?B#9i}5RN6Q~Gu}<;+Gf^C5DPIN9;Aov9^buE z;%@wu&FsW;CHwfuRD?u+Vej}VgX1csD+WWDPAa!bpuz-?GGuS^mxL-8uMi>Co1d*p zO5+KDmm^;W4J!3Vt31gE{X}Gmmz4EwiA`qvqC^ZoPc8*3(Za!M zwlRfw<)2jS{u3caYii4O+L0g^li8{jso*+{Z1#vWu`h(HX$))9fR^yQ|0e7rfA;uo zG!Dyp8!+)aBfd zLRjh3$n5b9qcWfNYE^a+T!oFf$c-l{6q36@mHBkY1a$m3y}po8)Xr-pL)nw3*WlGC z(@<~XXV-A$q3D=n$MlnYk@~O*M<*Dw9^lH|M$U9XD&4H2{R7ZK_+E-~)#lUvKEihq z%RhwvA>U+e5*ydYERwrDP@pmw494(rdt6E5sfXjA4TdZH9PCmtGr-njr_n#UsSO%+ zJUUBL7Iux^Ss~8j2FId|Z9*Z0(E8+wWlnH)A6pUj8SU$Q#k!LZO(=egueBx5u{TH5(#8jn5w)7Kfs80eTo zQ(>1@%?(dYQEGUONcH9Hs@CjO1Ce~S{!-!?|HgQ33iXh{b`v4C^6jR%a6wJ5nyb|( zI`gE=iTw=gS)k_WH;Js%lEJ;dk~TEtCVtCEqg_5DM3PTAcOuF{P|M(>>zlP;F@LQG8$Q zGYXJ}?QdFlnNKxMpOUyH2g^?F-#4=~U+;Kr{wHX!)~KetGIpC`F?Hlid+VRZiWny8 zonxZTB0R-nDr+;+Q1{=-%aMo&58PZXP*UQ{%T1^8vso6(e3v{OL{351o_H(-Y4Qh< z$UptQ`+f9-(sJ_jF&&;5imU=>CqntD>fGb)$pDYUSAD6NgQ)rf4TJoo{$& zlfzBK9K3rhX|iVP-t50CYa2perK6{JypJg` z?(OYYq+qS=&IoDDP^OM?Rt^95K<_gw3S(nR`AL-$Szg0t1iAzFF`ZN$SV*x@=29hI z@oKu}A;7X>j1BdN)(b!rD{_82l$QSkKy|uf?%oY(eL&6;FGQJ?9ZMY{ zF9({Yms|0m*%M~?JQ-xfNLtzq*6QNbfDl*w_Ap^CLMlff}A+pwl>JlnQH zlZP@59Pqwk%2VA{D*EGge}&@s-Gnw-NCDwnz)L`CD!Y_O5~E9N_u2!beDgD>t0Ka; zqn(5pg)l1rcEM~XvWqxdFYQd_d20PJgbpd=H^PROQ6s)dkVZRtV>St7ZEv+ z9a+$*^jJILs+b<~Yd=6;$L(Gav*OrT)cS8rArO3k zkXYb_86b7db$Em=;b2RjTihZY(Ox85Zt#7_ArreLjkNH7* ziwLGWmBh#hQ})MdNJ;!ZVWfkV9+MLr@)^Cu}6P|e10hYczVK9K4Jlx#}Ohaa#fD!2VMPUHcaJ58T!P11)(e* z$|Y8sWzQ}HQmbKe5B%}PXaOwIkKX*Rk5F(_~Nt8r}(P+MI3Vd)H?b8{0@bB(MSL8!YS*d&GIsTblrW3J_w z72XALn-f|QBaJ8Ot{!cF3Lh`!C_0K_Vva5bP`+V$5D=w&&n3E8W$D@{?Po;W7ti{I z!7w~QA0A}g_C_jb^c9PT^^%Q_ja=9Sb4XaSf}p+D_Ty^dXLUO(q8wf+`T>%NZ|b7N zZ%$X`t0-HaepunHGUD#vs&dW~kx3Kw{(`sdh*A`VMT$`JYV5n`761r0+Gu1t)8wdoqlV)VC z{6_C)&?H&OF$?SF0zDRY;tDw_oO$pEBjMEh~nW))qmbj5wYVFHQVBu54U&VfAEC) z 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 diff --git a/Tests/Unit/GameAction/3DSector/Sector3D_Map.cs b/Tests/Unit/GameAction/3DSector/Sector3D_Map.cs index eff9e7dce..81fd540de 100644 --- a/Tests/Unit/GameAction/3DSector/Sector3D_Map.cs +++ b/Tests/Unit/GameAction/3DSector/Sector3D_Map.cs @@ -191,6 +191,26 @@ public void OverlappingAlphaWalls() wallHeights = left3D.WallHeights; left3D.CalculateWallHeights(GameActions.GetLine(World, 307).Front, out newWallHeights).Should().BeFalse(); } + + [Fact(DisplayName = "Overlapping alpha walls render when other is zero")] + public void OverlappingAlphaWallsZeroAlpha() + { + var innerSector = GameActions.GetSector(World, 225); + var outerSector = GameActions.GetSector(World, 224); + var inner3D = innerSector.Sectors3D[0]; + var outer3D = outerSector.Sectors3D[0]; + inner3D.RenderDataStyle.Should().Be(RenderDataStyle.Translucent); + outer3D.RenderDataStyle.Should().Be(RenderDataStyle.Translucent); + inner3D.Alpha.Should().BeApproximately(0.5f, 1); + outer3D.Alpha.Should().Be(0f); + + inner3D.CalculateWallHeights(GameActions.GetLine(World, 837).Front, out var newWallHeights).Should().BeTrue(); + newWallHeights.TopZ.Should().Be(32); + newWallHeights.BottomZ.Should().Be(0); + + outer3D.Alpha = 1f; + inner3D.CalculateWallHeights(GameActions.GetLine(World, 837).Front, out _).Should().BeFalse(); + } [Fact(DisplayName = "Partially overlapping non-solid walls")] public void PartiallyOverlappingNonSolidWalls() diff --git a/Tests/Unit/GameAction/3DSector/Sector3D_PlaneSort.cs b/Tests/Unit/GameAction/3DSector/Sector3D_PlaneSort.cs index 910e83318..fc2ab4f50 100644 --- a/Tests/Unit/GameAction/3DSector/Sector3D_PlaneSort.cs +++ b/Tests/Unit/GameAction/3DSector/Sector3D_PlaneSort.cs @@ -3,6 +3,7 @@ using Helion.Resources.IWad; using Helion.World.Geometry.Sectors; using Helion.World.Impl.SinglePlayer; +using System.Linq; using Xunit; namespace Helion.Tests.Unit.GameAction._3DSector; @@ -115,7 +116,7 @@ public void ComplexSort() */ [Fact(DisplayName = "3D sector light transfer pool with floating solid sector")] - private void LightTransferLavaPool() + public void LightTransferLavaPool() { var lavaSector = GameActions.GetSector(World, 167); AssertPlanes3D(lavaSector, @@ -153,7 +154,7 @@ private void LightTransferLavaPool() } [Fact(DisplayName = "3D sector light water pool with floating solid sector")] - private void LightTransferWaterPool() + public void LightTransferWaterPool() { var waterSector = GameActions.GetSector(World, 173); AssertPlanes3D(waterSector, @@ -190,6 +191,17 @@ public void WaterSector() ); } + [Fact(DisplayName = "3D sector with overlapping planes should render inside walls")] + public void OverlapRenderInside() + { + var sector = GameActions.GetSector(World, 229); + sector.Sectors3D.Length.Should().Be(2); + sector.Sectors3D[1].ShouldRenderInsideWalls.Should().BeTrue(); + + foreach (var plane in sector.SectorPlanes3D) + plane.NoRenderWall.Should().BeFalse(); + } + private static void AssertPlanes3D(Sector sector, params PlaneData[] planes) { for (int i = 0; i < planes.Length; i++) From c7f20f1af8f1b14876405a92c3a088814a1d54cd Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 23 Apr 2026 11:12:28 -0400 Subject: [PATCH 2/2] update mask to include all 22 bits --- .../OpenGL/Renderers/Legacy/World/Shader/VertexFunction.cs | 2 +- Core/Render/OpenGL/Renderers/Legacy/World/VertexOptions.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/Render/OpenGL/Renderers/Legacy/World/Shader/VertexFunction.cs b/Core/Render/OpenGL/Renderers/Legacy/World/Shader/VertexFunction.cs index 76a457963..e87a2e02f 100644 --- a/Core/Render/OpenGL/Renderers/Legacy/World/Shader/VertexFunction.cs +++ b/Core/Render/OpenGL/Renderers/Legacy/World/Shader/VertexFunction.cs @@ -47,7 +47,7 @@ public static class VertexFunction @" int colorMapAndLightLevel = floatBitsToInt(colorMapIndex); vertexLightLevelFrag = float(colorMapAndLightLevel & 0xFF); - colorMapIndexFrag = float((colorMapAndLightLevel >> 10) & 0xFFFF); + colorMapIndexFrag = float((colorMapAndLightLevel >> 10) & 0x3FFFFF); uvFlags = float((colorMapAndLightLevel >> 8) & 0x3);"; public static string LightLevelAddAndMapIdSet => diff --git a/Core/Render/OpenGL/Renderers/Legacy/World/VertexOptions.cs b/Core/Render/OpenGL/Renderers/Legacy/World/VertexOptions.cs index 441c2ae9c..8e99a495c 100644 --- a/Core/Render/OpenGL/Renderers/Legacy/World/VertexOptions.cs +++ b/Core/Render/OpenGL/Renderers/Legacy/World/VertexOptions.cs @@ -16,8 +16,8 @@ public static unsafe float World(int topLeft, float alpha, int addAlpha, int upp // UvFlags only required for walls public static unsafe float ColorMapIndex(int colorMapIndex, int vertexLightLevel, UvFlags uvFlags = UvFlags.Normal) { - // colorMapIndex 16 bits, uvFlags 2 bits, vertexLightLevel 8 bits (6 bits free) - int packed = ((colorMapIndex & 0xFFFF) << 10) | (((int)uvFlags & 0x3) << 8) | ((vertexLightLevel) & 0xFF); + // colorMapIndex 22 bits, uvFlags 2 bits, vertexLightLevel 8 bits + int packed = ((colorMapIndex & 0x3FFFFF) << 10) | (((int)uvFlags & 0x3) << 8) | (vertexLightLevel & 0xFF); return *(float*)&packed; }