GZDoom 4.1.0 Released

News about ZDoom, its child ports, or any closely related projects.
[ZDoom Home] [Documentation (Wiki)] [Official News] [Downloads] [Discord]
[🔎 Google This Site]

Moderator: GZDoom Developers

User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49056
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

GZDoom 4.1.0 Released

Post by Graf Zahl »

Notice: There is currently no Vintage version planned for this release.

Please note that the survey is currently closed. GZDoom 4.1.0 does not include the survey code that 3.5.0 did.


Download (Modern, OpenGL 3.3 and higher) Highlights
  • workaround buggy preprocessor in old AMD OpenGL drivers
  • fix bloom pass regression
  • fixed scale calculations for option menus.
  • implement custom post process shaders for vulkan backend
  • improve error handling during vulkan initialization
  • fixed inverted logic for displaying the generic log in Strife.


Details
  • remove 320x240 from the list of resolution presets
  • enforce a minimum CleanXfac scaling in the menu to prevent accidental divide by 0's
  • fixed: The WideString conversion function was missing a null check.
  • consolidate minimum screen resolution so that it's easier to change
  • fixed scale calculations for option menus.
  • workaround buggy preprocessor in old AMD OpenGL drivers
  • fix bloom pass regression
  • fixed: ACS's APROP_ViewHeight needs to check if a real player is attached to a PlayerPawn.
  • fixed: Replacing a text image with actual text may only happen if the text comes from the string table.
  • implement custom post process shaders for vulkan backend
  • fix uniform aligment bug for vec3
  • Fix typo: add missing dollar sign in new stereo 3D submenu.
  • workaround for drivers that bug by never acquiring an image
  • fixed the calculations which decide whether to use an options menu for skills and episodes.
  • Localization helper code for level names that haven't been exported to the string table.
  • allow retroactive substitution of cluster texts
  • improve error handling during vulkan initialization
  • allocate new texture descriptor pool if it is full
  • remove the 6 layer texture descriptor set limitation
  • fix model shutdown crash
  • fix model rendering glitch
  • use Unicode font for deathmatch summary screen to bring it in line with the coop version.
  • Full character-set for Esperanto orthography.
  • use the Unicode font for the scoreboard.
  • changed the filter name for Doom IWADs
    • It's "doom.id.doom1/2" instead of "doom.doom1/2" now.
      The config file's content will be renamed and for lump filtering a fallback has been added - note that you cannot combine both naming schemes! The old one has to be considered deprecated now.

      This also removes the duplicated content necessitated by the old naming scheme.
  • allow all DHUDMessage calls to substitute SmallFont
  • added VGA font support to the MessageBoxMenu class
  • fixed: PlayerEntered for bots should occur after Level->DoReborn
  • fix SubmitCommands bug if it no swapchain image was acquired
  • allow the automap HUD to use the VGA font.
  • removed unused mSmallFont.
  • fixed redundant map name display on alternative HUD's automap HUD.
  • allow using the VGA font for map name display on the alternative HUD.
  • cleaned out the unneeded scaling hacks from the HUD messages.
  • updated strings.
  • removed the rather pointless hud_althudfont CVAR and the tiny piece of code it activated.

    This was meant for using the VGA font in the alternative HUD but this never went beyond the Kill/Item/Secret display which isn't useful for localization.
  • allow all list menu items to fall back on the Unicode font for languages which are not supported by the bitmap font.

    This allows the primary menus to display Korean text without any further special handling.
  • enable Unicode font on cast call.
  • added generic font support for intermission text screen.
  • changed text scaling for intermission screen to ensure that long texts are not cut off.

    22 lines of text need to fit and to avoid packing the text too tightly onto the screen and have a little headroom, a virtual size of 400x250 is needed.
  • handle generic fonts on the summary screen.
  • added a few more character fallbacks and fixed the StringWidth function
  • added a "DeleteLumps" list to IWADINFO

    This is for IWADs that contain content which clashes with the engine and must be removed. The primary reason are the unimplemented characters in Raven's BigFont.
  • prevent excessively bright pixels as this is actually visible on a HDR monitor
  • apply vk_hdr immediately and delay initial swapchain creation until first image needs to be acquired
  • change SubmitCommands to handle all parts of the present
  • slightly adjust AcquireImage to avoid border cases in the spec
  • fixed crash in GLDEFS parser caused by missing texture
  • add raven bigfont exclamation points - and the spanish inverted one too
  • added message about missing texture for material definition
  • add optional hacx_gzdoom_stuff.pk3 to HacX's IWADINFO
  • added generic font support to the dialogue system.
  • fixed: Intel OpenGL did not quite recognize the "layout(location=0)" shader uniform definitions, so this had to be removed for OpenGL mode only so that Intel's compiler will continue to function normally for custom shaders.
  • make the switch between game and generic fonts automatic by adding a key value to the language table
  • fixed crash caused by broken saved game picture
  • added the missing Ò for Doom's and Chex Quest's Smallfonts.
  • added some UTF-8 utilities to FString.
  • European BIGFONT for Chex Quest This covers French, German, Italian, Portugese, Spanish, and Swedish. Also adjusts the offsets of the inverted exclamation and question mark for Doom (so that they are in line with the colon sign).
  • added Unicode aware MakeUpper/MakeLower functions to FString and ZScript's String and deprecated ToUpper/ToLower because their semantics did not allow fixing them.
  • added CharUpper and CharLower functions to ZScript.

    These, like MakeUpper and MakeLower, use the internal Unicode case conversion tables.
  • added monospacing support to Screen.DrawText and its native counterparts.
  • make sure that the global and default language tables are always separate, if some other tables is being attempted to be filled in along with them, these tables should be ignored.
  • when altering the default string table, make sure that all existing text for the given label is removed that comes from an older resource file.

    If this isn't done there can be a mix of content from different sources, depending on the language. It's better to have correct English text than unfitting localized versions.
  • Added support for monospacing alignment modes to HUDFont / BaseStatusBar.DrawString (#810)
    • Added support for monospacing alignment modes to HUDFont / BaseStatusBar.DrawString
    • added underlying type declaration for EMonospacing
    • replaced "#include v_video.h" with a declaration of EMonospacing
  • Added "const" qualifiers to the new UTF-8-aware string methods
  • Fixed conditions tested for when checking whether "Force respawn" or "Respawn protection" dmflags are enabled
  • reimplemented player setup as an OptionsMenu.
  • reset RF_NOINTERPOLATEVIEW when unpredicting a player.
  • Russian Chex font Made by @JNechaevsky! Also includes a new hyphen symbol used for Russian.
  • added all Latin letters to the Doom and Chex SmallFont for the Latin 1 Supplement plus everything needed from Latin Extended A for the WIP languages and a few more that were more or less waste products.
  • change the wrap mode for custom textures in custom postprocess shaders to repeat
  • implemented 'deletelumps' feature and add Chex Quest 3 texts.
  • update glslang to 7.11.3113 (stable release February 8, 2019). This fixes the SPIR-V validation error reported for the shadowmap shader
  • Move player crouch sprites.
  • Czech BIGFONT for Doom
  • add gl_ssao_debug mode showing the depth
  • added Korean and Portuguese to the language menu Also add an English name in parentheses to Russian and Korean so that people not fluent in these scripts know what they selected.
  • rename `vid_backend` to `vid_enablevulkan`. Also changed the CVAR from a 0-state enable to 1-state. So `vid_enablevulkan==1` enables vulkan now. This should be less confusing.
  • rewrite depthblur.fp to workaround what seemed to be a bug in the NVidia driver
  • add r_ticstability for a smoother experience playing mods with high think times
  • Polish BIGFONT for Doom
  • fix normal vectors on models
  • fixed menu caption for languages which use the VGA font.
  • adjustments to the player menu so that the display isn't cut off on the smallest screen sizes.
  • improve shader error handling and attempt to remove some bogus declarations
  • Portugese characters for Strife + minor BIGFONT fixes
  • fix shader timer not always being applied correctly
  • fix wrong model culling
  • implement VKBuffer::Resize
  • fixed: GetDisplayDeviceName must always pick a valid monitor.
  • fixed radius use in dynamic light traversal for models.
  • do proper checks for chat string length.
  • fixed uninitialized variable in scoreboard code.
  • reinstated the old clean scaling factor calculation just for the status bar.
  • fixed a few developer warnings.
  • re-added the menu option for wipetype which got lost in a recent menu reorganization.
  • Improved Doom SMALLFONT
  • removed InitPalette call from OpenGLFrameBuffer's constructor.
  • fixed allocation mismatch in WildMidi.
  • Dedicated Russian SMALLFONT for Chex
  • change drawcalls to measure the Apply time rather than the individual draw calls (Apply is what costs something on vulkan while the draw call queuing is so cheap its an uninteresting thing to measure)
  • change FRenderState to store directly to the StreamData struct. This simplifies the vulkan backend and also allows the OpenGL backend to use the same uniform block transfer strategy in the future.
  • fixed inverted logic for displaying the generic log in Strife.
  • fix wrong clamp mode used in OpenGL
  • fix sampler array size on Vulkan
  • do not mix game-specified fonts with the extensions for the stock version.
  • fixed parameter passing for SetMarineWeapon and SetMarineSprite.
  • always construct the original IWAD SmallFont. This is for printing localized messages without having to fall back on the VGA font.
  • synthesize a font remapping so that the IWAD SmallFont can be printed in the same color as a mod's. This is for cases where the font needs to serve as stand-in for an incomplete mod font so that it better blends in.
  • fixed outline color of most extended characters in the Doom SmallFont.
  • only use the Doom SmallFont extensions with the commercial IWADs.
  • automated the SmallFont selection based on a filter string in the language table.
  • fixed string prioritization when a mod replaces the default language for a given string.
  • fixed: The minimal window size was not calculated properly.
  • Sort language options

    Reorders the languages to appear in alphabetical order, adds an English keyword, and adds an accent mark to Portuguese.
  • added smarter font replacement logic to the confirmation screen.
  • fixed the internal name of the original SmallFont to be different from the real SmallFont. This necessitated creating a separate font object, even if it has the same contents.
  • added an OriginalBigFont as well.
  • use Obituary for both Demon and Spectre.
  • destroy SDL window on Vulkan to OpenGL fallback
  • fixed: RenderCommand::isCompatible failed to properly compare the SpecialColormap.
  • removed the MaxAmount fudging from MaxHealth.
  • updated UFMF-spec for UTF-8.
  • removed the leftovers of the removed savedamount variable.
  • mark NewPlayerMenu as protected.
  • fixed crash on JIT allocations over 1 MB
  • fixed missing null checks in JIT generated code
User avatar
Kostov
 
 
Posts: 2020
Joined: Thu Dec 26, 2013 3:26 pm
Location: Sweden
Contact:

Re: GZDoom 4.1.0 Released

Post by Kostov »

Nice! Though, I did find something ugly when launching this version: viewtopic.php?f=2&t=64487
User avatar
Rachael
Posts: 13530
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: GZDoom 4.1.0 Released

Post by Rachael »

I will have to take a look in a few hours, but this shouldn't be too hard to fix. Ugh - can't believe that slipped by unnoticed until I changed the ZScript.txt file to version 4.1.
_mental_
 
 
Posts: 3812
Joined: Sun Aug 07, 2011 4:32 am

Re: GZDoom 4.1.0 Released

Post by _mental_ »

I pushed the fix to master and maint_4.1 branches.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3141
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain
Contact:

Re: GZDoom 4.1.0 Released

Post by drfrag »

I've uploaded the code for the 3.8.0 vintage build, this time without the tag in case there are problems.
Edit: pushed the tag.
Last edited by drfrag on Sun Apr 28, 2019 5:15 pm, edited 1 time in total.
User avatar
Silentdarkness12
Posts: 1555
Joined: Thu Aug 15, 2013 5:34 pm
Location: Plains of Pride

Re: GZDoom 4.1.0 Released

Post by Silentdarkness12 »

Is there any particular reason why the ZDoom website only has the download link for 4.0.0 then, since this is a stable release?
User avatar
phantombeta
Posts: 2084
Joined: Thu May 02, 2013 1:27 am
Operating System Version (Optional): Windows 10
Graphics Processor: nVidia with Vulkan support
Location: Brazil

Re: GZDoom 4.1.0 Released

Post by phantombeta »

Silentdarkness12 wrote:Is there any particular reason why the ZDoom website only has the download link for 4.0.0 then, since this is a stable release?
Because it hasn't been updated yet. It only gets updated once the builds for all platforms are up - and for Linux and MacOS, I believe blzut3 has to sign them first.
User avatar
torridgristle
Posts: 684
Joined: Fri Aug 23, 2013 9:34 am

Re: GZDoom 4.1.0 Released

Post by torridgristle »

It was pointed out to me that sRGB conversion is handled by pow 2.2 in material_pbr, and maybe elsewhere. This is incorrect. Use these:

Linear to sRGB
mix(1.055*pow(x, vec3(1./2.4)) - 0.055, 12.92*x, step(x,vec3(0.0031308)));

sRGB to Linear
mix(pow((x + 0.055)/1.055,vec3(2.4)), x / 12.92, step(x,vec3(0.04045)));
dpJudas
 
 
Posts: 3036
Joined: Sat May 28, 2016 1:01 pm

Re: GZDoom 4.1.0 Released

Post by dpJudas »

It is true that it uses an approximation (2.2 gamma) instead of the exact transfer function. I am not sure it is worth it using the exact version given the performance trade-off and Doom not being a true PBR engine anyway.
User avatar
torridgristle
Posts: 684
Joined: Fri Aug 23, 2013 9:34 am

Re: GZDoom 4.1.0 Released

Post by torridgristle »

The performance difference between pow and mix pow step is negligible. It may not be a "true PBR engine" but if it's going to have PBR features it might as well do it right. Besides, it's not like it takes any time to paste the new code in the 2 lines in the shader. There's no good reason not to.
dpJudas
 
 
Posts: 3036
Joined: Sat May 28, 2016 1:01 pm

Re: GZDoom 4.1.0 Released

Post by dpJudas »

If it takes no time, then submit a pull request.

As for the performance difference being negligible, everything counts in large amounts. There's a reason the first games approximated it to x * x (gamma 2.0), then the next to gamma 2.2, then GPUs added direct hardware support (sRGB textures). From my viewpoint "doing it right" would involve declaring it as a real sRGB texture to OpenGL/Vulkan, add 16 bpc image support to the engine and add quadratic falloff to dynamic lights.

Keep in mind that in the world of graphics light and color accuracy have diminishing returns. Most sRGB monitors are uncalibrated so getting the math completely right will only slightly improve the visuals as most of the precision is already lost. If you supply the PR I'll apply it, but I don't really think I can tell the visual difference to bother myself.
User avatar
Rachael
Posts: 13530
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: GZDoom 4.1.0 Released

Post by Rachael »

Mac and Linux builds posted.
TaporGaming
Posts: 145
Joined: Fri Jun 08, 2018 7:24 am
Graphics Processor: Not Listed

Re: GZDoom 4.1.0 Released

Post by TaporGaming »

Still no Vintage Version?. Are you planned the next release with Vintage?
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3141
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain
Contact:

Re: GZDoom 4.1.0 Released

Post by drfrag »

I've just uploaded the 3.8 windows exes to my lzdoom folder @DRD Team, i'd rather had them more thoroughly tested first since this time there are some hacks to allow more mods to work, but without them the VM would crash anyway. Mods using the new player menu definitely will not work.
I guess now i need to create a different thread and copy part of the changelog and list what's missing.
User avatar
Rachael
Posts: 13530
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: GZDoom 4.1.0 Released

Post by Rachael »

Do what I do - start the thread in a secret place, and then move it to News when it is ready. You should have enough moderator permissions to move threads around.
Post Reply

Return to “ZDoom (and related) News”