Commit graph

1010 commits

Author SHA1 Message Date
Daniel Gibson
b3be9f7b31 Introduce and use sys_sdl.h to unify <SDL3/SDL.h> and <SDL.h> includes 2024-10-07 17:38:01 +02:00
Daniel Gibson
1a1962088d It builds with SDL3 and SDL2 and SDL1.2 (on Linux)
TextInput doesn't work with SDL3 yet, and non-Linux(-y) platforms
like macOS or Windows don't support SDL3 yet
2024-10-07 17:22:03 +02:00
Daniel Gibson
5d3f143220 Detect endianess in CMakeLists.txt, get rid of most SDL_endian.h uses
.. except where SDL_Swap* is actually used (idlib/Lib.cpp).
Otherwise #if D3_IS_BIG_ENDIAN suffices, (NOT #ifdef, it's always set,
but to either 0 or 1!)
2024-10-07 03:15:50 +02:00
Daniel Gibson
0b0a08d7c4 SDL3 plumbing in CMakeLists.txt 2024-10-07 00:57:08 +02:00
Daniel Gibson
60ec3141cf Update Dear ImGui to v1.91.3
no changes in the code using it were necessary
2024-10-05 17:49:50 +02:00
Daniel Gibson
9f21cea354 Update code using Dear ImGui for v1.91.2 2024-10-02 22:18:30 +02:00
Daniel Gibson
9dffb367e2 imgui_impl_opengl2.cpp: Restore Doom3 compatibility 2024-10-02 22:16:36 +02:00
Daniel Gibson
6bcd18e269 Update Dear ImGui to v1.91.2 2024-10-02 20:34:00 +02:00
Daniel Gibson
c7ad16103b Update imgui_savestyle.cpp to my version with docking branch support 2024-10-02 20:23:50 +02:00
Daniel Gibson
e0e772ef92 Add 1.5.5 WIP entry to changelog
and set the date for 1.5.4 and mention that Soft Particles can slow
down rendering
2024-09-10 15:58:52 +02:00
Daniel Gibson
0af60549ab Add issue template for bug reports and feature requests
what a lame 1000th commit :-p
2024-08-21 02:35:09 +02:00
Daniel Gibson
872905f300 Add Github Actions builds for Windows, Linux and macOS 2024-08-20 21:49:52 +02:00
Daniel Gibson
8863c36067 Bump version to 1.5.5pre 2024-08-16 01:29:59 +02:00
Daniel Gibson
2f9e52a804 Handle soft particles when loading graphics quality preset, #604
When applying the currently configured graphics quality preset
(it's set in the `com_machineSpec` CVar and applied with the
`execMachineSpec` command, or by using the menu), now soft particles
are disabled for all quality presets except for ultra, because this
feature has a noticeable impact on performance with some (slower) GPUs.
2024-08-16 00:25:34 +02:00
Tom Kidd
be2b788c67 Lower macOS requirement 2024-08-03 05:52:42 +02:00
Daniel Gibson
6679490f0a bump version to 1.5.4 2024-08-03 01:47:27 +02:00
Daniel Gibson
c44c0ffda4 bump version to 1.5.4rc3 2024-07-30 02:41:45 +02:00
Daniel Gibson
cef1178776 Allow Soft Particles for player-weapons after all, fix issue properly
The previous commit didn't fix the issue for the pistol and only was a
workaround anyway. So I reverted that and fixed the issue properly.

The underlying issue is that the particle's material sets the
texture matrix (with "translate" or "scale" or whatever), and the soft
particle rendering code (and shader) didn't take the texture matrix
into account.
Now it does, in a similar way as the interaction shader code.

Fixes https://github.com/dhewm/dhewm3-sdk/issues/36
2024-07-30 01:49:08 +02:00
Daniel Gibson
227071bb9a Don't use Soft Particles for particles at player-weapon
or at least if weaponDepthHack is set.

That somehow broke muzzle flash effects in Dentonmod, see
https://github.com/dhewm/dhewm3-sdk/issues/36
2024-07-29 17:59:38 +02:00
Daniel Gibson
b0d7c12404 Bump version to 1.5.4rc2 2024-07-29 02:57:04 +02:00
Daniel Gibson
a4f2d4ae55 Document +set fs_game_base in dhewm3 --help 2024-07-29 02:56:45 +02:00
Daniel Gibson
9c36d2f661 Mods menu: improve base and d3xp entries, set d3xp basemod for more mods
the base game entry is now called "Doom 3 (base game)" instead of
"dhewm3", which should be more obvious, and the d3xp entry now reads
"Resurrection Of Evil (d3xp)" instead of just "d3xp", which certainly
is clearer. d3xp now is also always second in the list (if installed)

Added the freshly supported perfected_roe and sikkmodd3xp mods to the
list of mods that need fs_game_base d3xp set, so they can be started
from the menu.

also added an entry for r_gammaInShader to Configuration.md
2024-07-27 22:11:59 +02:00
Daniel Gibson
4df8495d61 Document r_glDebugContext in Configuration.md; tiny fix in settings menu 2024-07-26 01:45:19 +02:00
Daniel Gibson
961b3f60bd Bump Version to 1.5.4rc1 2024-07-26 00:00:02 +02:00
Tom Kidd
ae6997aef5 On macOS, look for the game dylib in the app bundle 2024-07-25 06:09:25 +02:00
«BielBdeLuna»
b34c625798 added a easier material name for portal skies 2024-07-25 04:38:38 +02:00
Daniel Gibson
d3b2794c24
Merge pull request #578 from DanielGibson/soft-particles
Implement Soft Particles (and capturing depth buffer), based on old The Dark Mod code
2024-07-25 04:27:35 +02:00
Daniel Gibson
7e772f09d1 Update Changelog 2024-07-25 04:19:00 +02:00
Daniel Gibson
2e0b093c79 Soft particles: Disable Particle Stage "softeningRadius" keyword
this avoid breaking the game DLL ABI (framework/DeclParticle.h is part
of the SDK), and for now doesn't make a difference, because that keyword
was introduced by TDM and thus is only used in their particle defs.

When we break the game ABI/API anyway (probably for high FPS support),
this commit can just be reverted
2024-07-25 04:05:51 +02:00
Daniel Gibson
b86d2c587d A #define in draw_arb2.cpp to load soft particle shader from disk
by default it's still compiled into the executable
2024-07-25 03:24:20 +02:00
Daniel Gibson
c394fde58a CMake: Set -ffinite-math-only so math functions get inlined
if this is not set, using fminf() actually calls that libm function,
if it is set, a CPU instruction that calculates the minimum is generated
instead. likely similar for other functions.

not sure if this causes trouble anywhere, but I don't think we rely
on NaN or INF?
2024-07-25 03:24:20 +02:00
Daniel Gibson
ac6ec0cc45 Fix some typos 2024-07-25 03:24:20 +02:00
Daniel Gibson
724ab1727c Add settings for soft particles in menu, documentation, cleanups
r_skipDepthCapture is now called r_enableDepthCapture, and instead of
being a bool it's now an int with -1 meaning "enable if soft particles
are used"
2024-07-25 03:24:20 +02:00
Daniel Gibson
3c887d5af5 Integrate (working!) soft particle shader, clean up that code a bit
turned out the whole problem with soft particles what that the vertex
shader used vertex.attrib[8] instead of vertex.texcoord (and with
nvidia drivers those are equivalent)

I integrated the shader source into the c++ code so I don't have to
ship glprogs/soft_particles.vfp
2024-07-25 03:24:20 +02:00
Daniel Gibson
a407a6060f hack to draw softened particles without blending
so when the shader writes a debug value as a color,
I get to see that color
2024-07-25 03:24:20 +02:00
Daniel Gibson
580257b47e Make r_showDepth use currentDepthImage, unless r_skipDepthCapture is 1 2024-07-25 03:24:20 +02:00
Daniel Gibson
5ff59547a4 Make r_showDepth work
before it displayed the float values from the depth buffers as
byte-wise RGBA values, which looked weird and wasn't super helpful..

now it's displayed as luminance float (i.e. one float representing
greyscale), and transformed in the same way the TDM particle shader
transforms the depth values to doom units (and then scaled back to
0..1, with 1 representing 3000 units)
2024-07-25 03:24:20 +02:00
Daniel Gibson
69e121727d Add r_glDebugContext to enable OpenGL debug context and -callback
needs SDL2 and GL_ARB_debug_output
2024-07-25 03:24:20 +02:00
Daniel Gibson
47bd8afa91 Try to ensure currentDepthImage always uses NEAREST filtering
cleaner than only setting it in CopyDepthbuffer()
2024-07-25 03:24:20 +02:00
Daniel Gibson
6a3fa8c28a Fix depth buffer texture (for soft particle shader effects)
thanks to
https://community.khronos.org/t/cannot-read-from-depth-buffer-in-fs/76169/8

apparently the default doom3 texture filter was something using mipmaps,
which doesn't work so well for textures without mipmaps..
no idea why those two lines in idImage::CopyDepthbuffer() were commented
out, but they're needed (and also un-commented in TDM, I just missed
that when merging -_-)
2024-07-25 03:24:20 +02:00
Daniel Gibson
23627380dd some debug code for soft particles in RB_STD_T_RenderShaderPasses() 2024-07-25 03:24:20 +02:00
Daniel Gibson
41eef54611 Merge soft particles from thedarkmod 2.04
don't really work, though
2024-07-25 03:24:20 +02:00
Daniel Gibson
10eee1eb43 map command without any arguments prints current map name 2024-07-25 02:47:33 +02:00
Daniel Gibson
794d40a04c Add CVar r_vidRestartAlwaysFull
disables partial vid_restarts, hopefully works around issues like
https://github.com/dhewm/dhewm3/issues/587#issuecomment-2206937752

Note that resizing the window by dragging it does *not* call vid_restart
at all, so if you're having issues that are fixed by a full vid_restart
you should also set `r_windowResizable 0`
2024-07-25 02:47:25 +02:00
Daniel Gibson
b2ba15425c Hopefully fix screenshots on Wayland
- screenshots on native wayland (SDL_VIDEODRIVER=wayland) were black,
  at least on Gnome
  => fixed(?) by reading from the default (back) buffer instead of
     the front buffer
- after taking a screenshot, resizing the window (or switching to
  fullscreen) was broken (window remained black or became invisible
  or partly contained garbage), both with native wayland and xwayland
  => fixed by restoring the glReadBuffer state after reading the pixels
2024-07-25 02:47:07 +02:00
Daniel Gibson
5c7aacb954 Make fullscreen mode with XWayland a bit less broken, #587
assert( ret.width == glConfig.winWidth
        && ret.height == glConfig.winHeight );

in GLimp_GetCurState() triggered, because SDL_GetWindowSize(),
which was used to set glConfig.winWidth/Height in
GLimp_UpdateWindowSize(), returned different values than
SDL_GetWindowDisplayMode().
Now use SDL_GetWindowDisplayMode() in GLimp_UpdateWindowSize() so it's
at least consistent.

However it seems like SDL_GetWindowSize() returns the correct values
(IN THAT CASE), because with this change the mouse cursor doesn't work
that well (in the specific case described above).
In the end this is an SDL or Wayland bug or something, and I can only
recommend not using "real" fullscreen mode with Wayland, as it's fake
anyway (Wayland doesn't allow switching the display resolution, so
you get a magically scaled borderless fullscreen window at best)
2024-07-03 01:01:16 +02:00
Daniel Gibson
cec78b5a99
Merge pull request #576 from DanielGibson/imgui-rebased
Integrate Dear ImGui and implement a new settings menu with it and much more

also replaced zlib with miniz, HiDPI support, lots of new configuration options
2024-06-18 01:18:35 +02:00
Daniel Gibson
9eff1d9be2 Dhewm3SettingsMenu: Rework resolution/windowed/MSAA part of Video Options
Now the CVars are set immediately and "Apply" only does
`vid_restart partial`, while "Reset" resets the CVars to the values
that were set when opening the menu.
This also works the other way around: Changing a CVar (in the console
or other menu or r_fullscreen with Alt-Enter) is immediately reflected
in the menu.

Furthermore, "fullscreen desktop" now is its own setting (=> can be set
even if windowed mode is selected), to accommodate switchting between
windowed and fullscreen with Alt-Enter
2024-06-12 22:47:43 +02:00
Daniel Gibson
94738f1f16 Add glimpParms_t GLimp_GetCurState() to get current window state
it's queried from SDL so it should be up-to-date.
Using it in GLimp_SetScreenParms(), as it mostly did the same SDL calls
to get the current state for the partial vid_restart
2024-06-12 22:26:30 +02:00
Daniel Gibson
387430a01f Fix vid_restart partial for real fullscreen mode 2024-06-11 19:03:54 +02:00