Early Access Update Femtioett (51)
Author: indiefoldcreator
Date:
Tue, 27 Aug 2024
Early Access Update Femtioett (51)
build id: 5E371466
nornware AB is happy to announce a new update to Space Beast Terror Fright.
BUGFIX FOR MISSING GEOMETRY
TLDR: If you are experiencing missing geometry, set "shader model" to "2.0" in the graphics settings.
The previous update (50) introduced an updated set of shaders in order to support what I call Vaguely Physically Based Rendering (VPBR) materials. Technically this requires the use of shader model 3 (specifically pixel shader 3.0), but as this is part of the DirectX9.0c specification that I've always been using for SBTF I neither mentioned it nor expected it cause any problems (DirectX9.0c is at least 15 years old).
As we have seen however it seems that things aren't that simple. As far as I can see from my own research, as well as from diagnostics kindly supplied by the community, current AMD drivers do not properly support pixel shader 3.0 and / or all features of DirectX9.0c. Strangely no errors are forthcoming but rather the shaders simply silently fail to render anything at all, resulting in the "missing geometry" problems some users have been having.
The solution that I'm rolling out here is a bit of a tradeoff, but is in the interest of getting the game working again for everyone. There is now a graphical setting where the user may manually select shader model (2.0 or 3.0), where 2.0 is a simplified shader that approximates the VPBR materials very similarly to how the legacy materials are rendered, and 3.0 is the intended new VPBR shader.
As far as I can see in tests users who do not have AMD Radeon chipsets can run both shader models, while users with AMD Radeon chipsets will most likely experience missing geometry for all VPBR materials when shader model 3.0 is selected. Note that the renderer has been optimized since update 50 to only require ps3.0 for new VPBR materials; all legacy materials are rendered exactly as they have been prior to update 50 (using ps2.0) regardless of what shader model you have set.
Also, you may choose to run shader model 2.0 regardless as the approximation shader is cheaper in terms of instructions, and you might experience better performance. Trivia: The limit for ps2.0 is 64 instructions, and my approximation shader ended up being exactly 64 instructions!
It's important to note that nothing has "gotten worse" graphically compared to previous incarnations of SBTF, it's simply the case that approximations / trade-offs are necessary to get the new VPBR materials to render at all on AMD Radeon chipsets.
To be completely fair even the ps2.0 "approximation shader" is more advanced than the legacy renderer in that it differentiates between conductors and dielectrics; the main trade-off is that roughness is not modeled as it is in the VPBR ps3.0 shader and as such the reflection model is simplified. For those interested in PBR theory, Marmoset has a good primer here, and Allegorithmic has published an in-depth guide.
Hopefully this solution will get the game back to a functioning state for everyone, regardless of GPU. If this proves to be solid I have some ideas about possible extensions to the ps2.0 approximation shader in order to get the roughness part of VPBR in there; it's really a big part of the artistic expression.
As always, thank you for your support and patience.
/nornware AB c/o johno
nornware Dev Feed
nornware on Facebook
nornware on Twitter
nornware on YouTube
Write your comment!