Commit graph

225 commits

Author SHA1 Message Date
myT
dbfb3c5028 fixed delayed shader loads leading to incorrect rendering and crashes (dynamic lights) 2022-04-10 22:14:19 +02:00
myT
981f059b7b do not replace older surfaces with newer ones but refuse to add new ones instead
surfaces added first are part of the map itself
it's better to drop e.g. some plasma cells rather than e.g. entire walls
it's also less error-prone to work with since we don't need to fix numbers on read
but only check on write in exactly 2 spots

also removed tr.shiftedEntityNum because it was unnecessary...
2022-04-10 21:45:59 +02:00
myT
c534ed8048 fixed the alpha channel blend factors in the D3D11 backend 2020-11-06 02:48:55 +01:00
myT
c12f7e8541 removed a redundant if statement 2020-11-05 03:55:37 +01:00
myT
b1df6ac8f7 added new stats to r_speeds 1 (shader changes, draw calls) 2020-11-05 03:50:58 +01:00
myT
f4e8e81ab5 fixed draw surface sorting
got broken with commit 633c5bd13c
2020-11-05 03:47:55 +01:00
myT
3e0f5b2760 fixed RB_CalcTurbulentTexCoords by using the correct vertex offset
it got broken with db4fb31658
2020-10-27 00:30:13 +01:00
myT
55ed0e80af r_lightmap 1 now handles most alpha-tested surfaces 2020-10-20 01:55:53 +02:00
myT
7262b90655 no longer whining about mixed image settings with external lightmap atlases 2020-10-15 05:25:51 +02:00
myT
ad2d3386a6 D3D11 now does depth clipping and the near clip plane distance is now 1 2020-10-11 18:24:35 +02:00
myT
dea818a260 fixed a D3D11 resource hazard warning about depth/stencil buffer bindings
swapped the calls back so that the depth buffer is never bound as both a RT and SRV at the same time
2020-10-09 04:01:26 +02:00
myT
6f7d4892df added detailed live objects reporting for full shutdowns in D3D11 debug
the name tweaks are there because the run-time erroneously reports this warning:
"Existing private data of same name with different size found!"
2020-10-09 01:22:04 +02:00
myT
5466b65735 caching the pixel shader resource views in D3D11 2020-10-08 04:50:32 +02:00
myT
249bcb2d07 caching the current active texture slot in GL3
it reduces the total number of API calls by a good amount
2020-10-08 04:45:33 +02:00
myT
2aaf17b061 fixed the GL3 debug uniform location check
it would incorrectly trigger with r_alphaToCoverage 1 and r_msaa 0
2020-10-08 04:19:20 +02:00
myT
633c5bd13c tweaked the draw surface sort key for better performance
it minimizes depth fade <-> generic pipeline transitions
2020-10-08 04:08:38 +02:00
myT
78cf275a62 fixed depth fade with MSAA in the GL3 backend 2020-10-08 03:55:40 +02:00
myT
427172edcf fixed D3D11 device resets being sometimes treated as fatal errors
after getting DXGI_ERROR_DEVICE_REMOVED or D3DDDIERR_DEVICEREMOVED,
GetDeviceRemovedReason can return DXGI_ERROR_DEVICE_RESET
this particular case should trigger a video restart instead of a fatal error
2020-07-07 09:07:53 +02:00
myT
49028a3f36 simplified the new D3D11 partial clear code to not needlessly change primitive topology 2020-07-07 04:44:31 +02:00
myT
7412c4b373 added r_alphaToCoverageMipBoost and did some other changes to A2C
- r_alphaToCoverageMipBoost scales the alpha value based on the current texture LoD
  this prevents the "fading with distance" effect
- mip 0 dimensions are tested to decide whether contrast boosting around 0.5 is enabled
  this is to deal with high r_picmip configs
- improved algorithm for excellent sharpness and minimized temporal artefacts
- GLSL 4.00 is required for the GL3 backend to use A2C (for textureQueryLod)
2020-07-07 03:49:52 +02:00
myT
180a0187b7 fixed the R_AddWorldSurface optimization so it won't remove the sky 2020-06-20 03:04:00 +02:00
myT
70ba2e7939 fixed and improved GL3 shader uniforms caching 2020-06-20 02:28:55 +02:00
myT
6fcabd83b7 fixed D3D11 partial render target clears
viewport/scissor settings do NOT apply to:
- ClearDepthStencilView
- ClearRenderTargetView

hence this fix
2020-06-18 04:19:34 +02:00
myT
54ee6436fe updated copyright years 2020-06-01 20:28:44 +02:00
myT
178a61b953 fixed r_mode 1 issues with the D3D11 backend (screenshots and scissor rects)
the issues were:
- screenshots were black because of mismatched dimensions in the CopyResource call
- display was showing garbage because the scissor rect was too large
2020-05-11 20:07:29 +02:00
myT
f484ee94a7 fixed alpha to coverage for the greater than 0 alpha test 2020-05-09 17:11:47 +02:00
myT
d6f77a9b35 fixed crashes due to render command list overflows
also increased the buffer's size (e.g. to draw all chars in the console in 4K)

one of the crashes happens in R_SortDrawSurfs:
-> render command list is too full
-> RE_EndFrame returns early because it can't allocate RC_SWAP_BUFFERS
-> R_ClearFrame in RE_EndFrame doesn't get called
-> the next frame starts with r_firstSceneDrawSurf etc. not being reset to 0
-> r_firstSceneDrawSurf becomes really close to the maximum draw surface limit
-> the draw surface list is iterated incorrectly (no wrapping handled)
-> we fetch a draw surface we shouldn't
-> its sort key gets decoded and we get an invalid sorted shader index
-> we fetch a NULL shader at that index location
-> we attempt to read shader->sort
-> we crash reading address 76
-> 76 bytes is exactly the offset of the sort member into the shader_t struct
2020-05-08 03:38:26 +02:00
myT
1cf28d87fe r_speeds is no longer cheat-protected 2020-04-28 17:20:02 +02:00
myT
1994475982 renamed r_noiseScale to r_ditherStrength for consistency 2020-04-28 17:04:43 +02:00
myT
718b966414 depth fade fixes and improvements
- renamed r_softSprites to r_depthFade
  the term's more descriptive and it helps that UE4 uses it
- fixed the GL3 fragment shader halving the depth bias
- fixed the D3D11 pixel shader only fetching depth sample 0
  not fixed for GL3 yet, see the code comments for that
- added support for more blend states
- added the q3map_cnq3_depthFade general shader directive
2020-04-26 16:32:51 +02:00
myT
a59875200c fixed the D3D11 back-end sometimes colorizing mip level 0 with r_gpuMipGen 1 and r_colorMipLevels 0
it happened because the color channels for blendColor weren't initialized,
that memory could have at least one channel initialized as a NaN value and
throwing a NaN in the shader logic would break it
2020-04-16 05:24:11 +02:00
myT
a5e28eb08f added r_transpSort and we can now sort all surface types by depth
also fixed up RE_AddPolyToScene's overflow check
2020-04-16 05:01:48 +02:00
myT
4e9d0ad709 fixed the soft sprite status console print always saying it's "ON" with GL3 and D3D11 2020-04-05 06:40:34 +02:00
myT
d5984db690 removed r_nobind and r_showImages, wrote help etc. for the renderer's other temp/cheat CVars 2020-04-02 05:06:00 +02:00
myT
546296e6ef fixed r_showsky and cleaned up the related GAL code 2020-04-02 04:50:12 +02:00
myT
24e6cd9277 GL3 can now print shader compile/link warnings even when successful with r_verbose 1 2020-04-02 04:40:12 +02:00
myT
e013893c1b fixed GL3 generic program link issue due to variable type qualifier mismatches (centroid vs not)
this problem proved fatal on some Intel drivers
2020-04-02 04:37:03 +02:00
myT
ae30c5a311 r_mapBrightness can now be used with r_fullbright for lightmapped surfaces 2020-02-27 05:26:19 +01:00
myT
69d6cdf42b fixed r_detailTextures 0 messing up shaders 2020-02-27 05:22:06 +01:00
myT
f773d2a783 fixed dynamic light face culling using the untransformed (world-space) light position 2020-02-26 23:01:28 +01:00
myT
7b01f8b8d3 fixed a bunch of variable shadowing cases and removed unused variables 2020-02-24 01:52:29 +01:00
myT
36f363b47a D3D11 tweaks, added r_d3d11_presentMode, removed r_d3d11_maxQueuedFrames
the D3D11 tweaks:
- better error message formatting
- D3DDDIERR_DEVICEREMOVED from Present is a fatal error too
- synchronized offsets is always the automatic behavior for now
  it turns out that split mode isn't always the fastest for nVidia
2020-02-24 01:48:43 +01:00
myT
85583acc9c dynamic lights apply to even more surfaces and have a nicer fall-off
- ditched vertex colors (not wanted) and alpha tests (not needed) in the shaders
- using a Bezier fall-off to get much softer edges
- added no-depth-write transparent surfaces support by adjusting the depth test
- multiplying the diffuse texture's color by its alpha in non-opaque passes
- fixed triangle rejection based on cull type and normal direction
- reflecting normals in shaders to support two-sided surfaces
- rejecting surfaces with no diffuse stage or bad blend states as early as possible
- liquids get lit weaker than other surfaces
2020-02-21 08:26:12 +01:00
myT
8ef496d22b reverting to old code for .tga image decoding, but with tweaks and fixes
the problem is that stb_image can and will allocate much more than it needs to
e.g. for a 2048x2048 BGR image:
it allocates an unnecessary intermediate 12 MB buffer to decode the image
instead of decoding it directly into the final 16 MB RGBA buffer

the old CNQ3 code didn't decode greyscale properly because of a missing macro call
it also didn't range-check memory accesses at all
2020-02-18 04:42:28 +01:00
myT
ca9757082f r_colorMipLevels disables MSAA when centroid sampling would be used
this is because it would draw (parts of) geometric edges with different colors and that makes visual inspections annoying
also, final MSAA sample counts are always reported by GL3 and GL2 now
2020-02-05 03:43:19 +01:00
myT
c72c8d5ad7 fixed r_fastsky handling in the GL3 renderer back-end 2020-01-19 22:38:35 +01:00
myT
01ce4063b5 added r_lightmapGreyscale
thanks to Jakub 'kubaxvx' Matraszek for his contribution
2020-01-12 23:03:54 +01:00
myT
e91f6e1c08 re-added r_textureMode to keep GL_NEAREST compatibility 2020-01-12 23:03:41 +01:00
myT
f36392c128 fixed r_lightmap affecting non-opaque surfaces 2020-01-09 23:09:39 +01:00
myT
9366ee5130 fixed r_picmip incorrectly applying to external lightmap atlases 2020-01-07 22:54:48 +01:00
myT
b2445488a4 partial D3D11 init and shutdown for OBS' benefit
- OBS' game capture plug-in can't handle swap chains changing while capture is active
- loading a map and disconnecting will no longer break the capture
- vid_restart will still break the capture
2019-12-26 16:30:07 +01:00
myT
e16804a0cb fixed A2C by making sure we use the absolute values of the derivatives 2019-12-26 16:26:12 +01:00
myT
9cb02a32bf searching for valid sample counts for MSAA in GL2 and GL3 instead of failing 2019-12-26 16:24:22 +01:00
myT
a89a2e3ead MSAA centroid interpolation mode for GL3 and D3D11 to prevent artifacts
this helps mostly to avoid lightmap tile leaks with MSAA
2019-12-26 16:20:41 +01:00
myT
4968bfca6d crash and drawing fixes for r_shownormals, r_showtris and r_debugSurface
- preventing crashes and drops with r_shownormals
- fixed the colors of r_showtris, r_shownormals and r_debugSurface
- simplified the overflow macro
2019-12-26 16:16:30 +01:00
myT
0cbfe60d86 fixed hyperspace rendering 2019-11-12 04:23:49 +01:00
myT
cb0ef3aab8 fixed OpenGL version checks and FBO support checks 2019-11-12 04:22:36 +01:00
myT
7939488266 fixed incorrect state bits for shaders when loading a map with no lighting 2019-09-25 05:35:45 +02:00
myT
0087c2bf14 fixed fog-only shaders being recognized as sky shaders 2019-09-25 05:34:22 +02:00
myT
8ee79c7b9e added r_rtColorFormat to select the color format for render targets
fixed FindBestAvailableAA not testing the depth/stencil format
2019-09-25 05:31:55 +02:00
myT
1115cb39b0 added pattern matching filtering to /modellist /skinlist /imagelist /shaderlist 2019-09-25 05:29:13 +02:00
myT
db4fb31658 added OpenGL 3.2 and Direct3D 11 renderer back-ends 2019-09-25 05:25:59 +02:00
myT
6f3908ceaa completely removed flare support 2019-09-25 05:21:01 +02:00
myT
b406564962 added copyright notices to important new files 2019-09-25 05:14:58 +02:00
myT
39af360fdc removed FreeType and the R_REGISTERFONT syscalls 2019-09-25 05:14:07 +02:00
myT
c44b13ad90 when faces have short normals, we compute new unit-length normals 2019-09-25 05:13:39 +02:00
myT
08b5d6bf57 r_lodCurveError is now archived and no longer cheat-protected
the new default also looks a lot less terrible
2019-03-28 22:10:22 +01:00
myT
e5e9bd8d28 fixed shader stage collapsing happening in cases where it shouldn't 2019-03-19 17:50:32 +01:00
myT
afb9b725e9 fixed lightmap texture coordinates in all cases 2019-03-19 17:47:19 +01:00
myT
7a83c0d6c4 fixed developer warnings for image reuse with mixed settings 2019-02-19 18:40:03 +01:00
myT
26ccc528d1 map download improvements
- numeric addresses as fallbacks
- non-blocking connections
- writing to $(fs_homepath)/baseq3 instead of $(fs_basepath)/baseq3
- only using valid (TCP/stream) addresses from getaddrinfo
- setting send time-outs
- ensuring the destination directory exists
- the renderer no longer messes up the RNG seed
2019-02-14 04:22:45 +01:00
myT
b909f05195 bundling lightmap tiles into texture atlases to improve batching 2018-12-08 23:36:27 +01:00
myT
a26b150c59 faster map loads by limiting the rendering back-end's frame-rate 2018-12-08 22:43:58 +01:00
myT
a49512abde fixed requesting 4 samples instead of r_msaa samples 2018-10-05 14:03:02 +02:00
myT
5972f247b1 fixed a bunch of /video and /stopvideo issues
chg: /video can only be used during demo playback
fix: broken audio in the output files due to writing the wrong buffer
fix: files sequences have a "_%3d" name suffix of adding an underscore to the extension
fix: using a better supported video codec (FourCC 0x00000000) for raw BGR output
fix: broken raw video output when r_width wasn't a multiple of 4
fix: /stopvideo no longer leaves sound output broken for a while after stopping
2018-09-29 08:22:47 +02:00
myT
515ca0883e minimizing disables the rendering back-end except for videos/screenshots
when minimized, we call the rest of the logic all the same (including the VM calls)
only 1 screenshot command can be issued per frame (i.e. only first one is kept)
2018-01-07 00:03:42 +01:00
myT
3b4338db2e fixed range/default for con_notifytime and r_lodbias 2018-01-04 19:51:29 +01:00
myT
fe60c9e620 always clearing to avoid artifacts in unrendered areas (e.g. CPMA's server info UI) 2017-12-29 22:59:19 +01:00
myT
53d93b1af0 new default values
sv_pure 0 for clients - 1 is annoyingly restrictive for a client
s_volume 0.2 - it was so damn loud
com_hunkMegs 128 for clients - to cope with "big" maps
r_msaa 0 - too many players still gaming with toasters
r_gamma 1.2
2017-12-27 07:33:59 +01:00
myT
3c52752dd3 added help panel and colorized help text
added con_drawHelp and con_col*
letting the mod know we support the "cap_ExtraColorCodes" extension
con_colText overrides ^7 in the console and the help panel
extended console back scroll arrows all the way
2017-12-27 05:13:33 +01:00
myT
26dd67d0d1 fixed the viewport and scissor rectangles 2017-12-23 10:14:44 +01:00
myT
04ebdc63f6 fixes for VC++ platform toolsets v140 and v141 2017-12-20 05:41:04 +01:00
myT
4a296b3361 fixed a memory overflow due to GL_PACK_ALIGNMENT not being set correctly 2017-12-12 22:08:12 +01:00
myT
5689cb3d1e fixed a crash when the number of shader stages was wrong ("brandon" player model) 2017-11-29 19:08:29 +01:00
myT
3c4a71faaf removed the stupid r_mapBrightness subtraction system 2017-11-29 14:20:53 +01:00
myT
9b60bd762d replaced r_(map)OverBrightBits with r_(map)Brightness 2017-11-22 18:59:51 +01:00
myT
964879bc5e changed r_mode and added r_blitMode 2017-11-22 18:26:26 +01:00
myT
e26163aa79 added screenshotnc and screenshotncJPEG 2017-11-05 22:40:32 +01:00
myT
c60d47e93f cleaned up tr_gl2.cpp and prefixes in win32 code
tr_gl2.cpp now uses the proper interface for printing errors
tr_gl2.cpp now has function names that make sense
removed old references to GLimp_*
cleaned up prefixes in the Windows platform layer
2017-11-03 19:35:35 +01:00
myT
9362d9bf53 deleted 2-threads rendering support (SMP) 2017-11-03 19:34:32 +01:00
myT
4cd544217c platform layer GL interface cleanup
renamed and documented the core GLimp functions
moved the memset calls out of GLimp_Shutdown
dealing with anisotropic filtering properly and fixed the cvar's range and help
platform extension loading is done through Sys_GL_LoadExtensions
throwing fatal errors is done by the renderer exclusively
removed QGL_Init and QGL_Shutdown
cleaned up glconfig_t
filling up the unused glConfig fields in the renderer for old mods
2017-11-03 19:33:54 +01:00
myT
31167156ac fixed the OGL state not being properly (re)set at the start of GL2_EndFrame 2017-10-29 07:01:54 +01:00
myT
f38ce8aba3 fixed a buffer overflow in GL2_CreateShader 2017-10-28 22:48:00 +02:00
myT
770199f00d fixed con_notifytime's range not allowing -1
fixed m_accelOffset's invalid default value
2017-10-28 19:36:16 +02:00
myT
b3831fcc87 the Linux client now uses SDL 2 for: window, GL context, video modes, audio, kb and mouse input, monitor list, clipboard 2017-10-28 03:35:51 +02:00
myT
584d064523 fixed the greyscale shader using lerp instead of mix 2017-10-04 17:51:44 +02:00
myT
dfd9c9b462 fixed the post-process rendering code messing with texture binding
this was causing /cinematic playback to output a white image
2017-10-04 04:59:49 +02:00
myT
62ff8ef1d1 fixed the renderer not always removing commands when it should 2017-10-04 00:35:26 +02:00
myT
1d6663ebc1 replaced the cameraMatrixTime variable from the renderer's public interface by a function 2017-10-03 23:31:35 +02:00
myT
70f301e4ff cvar help extension
cvar type+range extension
module tracking for cvars and commands
lots of help text
2017-10-03 19:11:10 +02:00
myT
37ef941ac2 fixed r_fullbright not being used and made it unlatched
removed the superfluous calls to GL_TexEnv for r_lightmap
2017-08-18 18:30:39 +02:00
myT
f9fbe4797f fixed r_lightmap not being used and made it archived
removed the r_maplight* cvars
removed dead code (RB_StageIteratorGeneric)
2017-08-18 17:03:30 +02:00
myT
ec042e37e1 added r_greyscale to control how monochromatic the final image looks
not doing the gamma pass when gamma==1 && obBits==0
no longer checking glConfig.colorBits for computing the global brightness
2017-08-18 16:02:02 +02:00
myT
1c6bae1eb7 fixed a NULL pointer dereference crash in RB_CalcDiffuseColor 2017-07-06 05:41:03 +02:00
myT
eb4b1d8615 removed r_stencilbits r_depthbits r_colorbits r_texturebits r_ext_compressed_textures 2017-06-22 09:41:36 +02:00
myT
9ea5d021d5 implemented the new interop system
implemented the dynamic lights and integer shader time extensions
2017-06-22 07:15:47 +02:00
myT
bec4101854 using stb_image to load png and tga images
libjpeg errors no longer shut down the engine
2017-06-04 16:37:57 +02:00
myT
b8b064fc53 fixed incorrect symbol usage for the Linux build 2017-06-03 13:02:01 +02:00
myT
176f1ea09f improved error reporting for FBOs and shader compilations 2017-06-02 23:02:20 +02:00
myT
b49c880fe5 fixed broken rendering when the 2nd stage of a collapsed shader stage pair had non-white colors 2017-05-19 00:23:53 +02:00
myT
a646bfdc87 fixed shader stages using "wave" not being animated when the server time is a big number 2017-05-19 00:04:32 +02:00
myT
389cd1690d fixed a bunch of fp math expressions for lack of precision and incorrectly using double instead of float 2017-05-19 00:00:08 +02:00
myT
e4062a6c90 reduced win32 raw mouse input latency and added cl_drawMouseLag 2017-05-06 22:01:14 +02:00
myT
f9d4056e41 fixed the pukka3tourney2 slime not being green with r_vertexLight 1 2017-05-04 19:06:51 +02:00
myT
6b167831dd fixed the ct3ctf1 grate near quad getting picmipped 2017-05-04 19:02:58 +02:00
myT
b5ee082797 the blood decals on pukka3tourney2 were broken because of code adding lightmap stages 2017-04-11 17:47:21 +02:00
myT
c63c3e80a6 replaced monitor gamma by a post-process gamma shader
ported the dyn lights shaders to glsl
nuked stereo rendering
replaced r_ext_multisample with r_msaa
2017-03-21 00:58:59 +01:00
myT
ddb6f080f3 fixed RB_CalcDeformNormals from accessing floats as doubles, which was breaking the rendering of flags and probably many other things 2017-03-14 05:18:59 +01:00
arQon
d8bf2665f5 rewrite most of the linux mouse code: support (and prefer) xinput2 and raw support, default to the master pointer and add m_device to choose one explicitly. 2017-01-25 07:14:23 -08:00
myT
9b350a7d0c replaced a needless linear walk through the shader text uberbuffer with a lookup 2017-01-20 18:26:16 -08:00
myT
f327428475 full x64 support with a VM based on quake3e OCT 21 2016
the VM compiler uses SSE for floating-point ops when possible
2017-01-11 14:24:58 +01:00
arQon
fc9465caab switch from jpeg6 to jpeg-turbo
aside from the speed improvements, this also makes for nicer code
in the renderer interaction with libjpeg, thanks to mem_dest support etc
2017-01-03 00:34:59 -08:00
arQon
954c80a8b5 merge the new build system
use the "premake" tool from the cnq3tools repo with
"--quake3dir=<q3dir>" to generate a VS sln and gcc makefiles

this changeset also removes the "clever" handling of fullscreen/windowed
changes which didn't actually work and just broke windowed mode
2016-12-29 20:13:59 -08:00
arQon
1afbf12d80 repair some strange quality regressions in the renderer source, as well as what looks like some half-merged pmx pieces. add glext for win32 platforms. NOTE: vc has poisoned a bunch of files with CRLF endings, because apparently you're not allowed to have those work properly in vs2013 and later, sigh 2016-12-18 03:05:45 -08:00
arQon
97db9f2314 import from cnq3 1.47 2016-12-17 20:43:04 -08:00