Unvanquished Development activity

Events from:

Daemon Engine
Daemon Engine
Tuesday, 14 July 2020
@illwieckz
illwieckz opened a pull request in DaemonEngine/Daemon Jul 14, 2020
Do not scale down lightmaps, fix #347 #357

Hardware that hangs with full size texture and full size lightmap does not hang with 1:4 texture and full size lightmap. While downscaling textures…

+4 -4
@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#347 Jul 14, 2020

we may also enforce the option to also downscale the lightmap if tests show this is required too Tests show this is not required. Hardware that h…

@illwieckz
illwieckz opened an issue in UnvanquishedAssets/unvanquished_src.dpkdir Jul 14, 2020
remove option for cg_depthSortParticles in UI #20

Enabling cg_bounceParticles while disabling cg_depthSortParticles is wrong and produce issue users will report as bugs (like missing snow in chasm,…

@illwieckz
illwieckz commented on pull request DaemonEngine/Daemon#356 Jul 14, 2020

I added a commit editing lioghtMapping GLSL shader to not compile the dynamic light code when dynamic lighting is disabled. This dynamic light code…

Daemon Engine
Daemon Engine
Monday, 13 July 2020
@illwieckz
illwieckz commented on pull request DaemonEngine/Daemon#356 Jul 13, 2020

Also, on that computer with so much feature disablement, GLSL shader size goes from 8.5MB to 2MB (size of the GLSL cache).

@illwieckz
illwieckz opened a pull request in DaemonEngine/Daemon Jul 13, 2020
do not build GLSL shaders that will not be used #356

After having implemented #354 I discovered something awful: the engine is building all possible shader and permutations even if the game is never g…

+103 -17
@illwieckz
illwieckz merged a pull request in DaemonEngine/Daemon Jul 13, 2020
renderer: print shader and macro names at glsl build time #354

Print shader name and macro at build time, may help to trouble shoot various things. That debug code prints something like that in console: Debug: …

+4 -0
1 comment
@illwieckz
illwieckz pushed to DaemonEngine/Daemon Jul 13, 2020
1 commit to 0.52.0/sync
  • @illwieckz 32a8b7d
    renderer: print shader and macro names at glsl build time
@illwieckz
illwieckz commented on pull request DaemonEngine/Daemon#354 Jul 13, 2020

Well, this is just a log, can't break things.

@illwieckz
illwieckz merged a pull request in DaemonEngine/Daemon Jul 13, 2020
Reuse window when attempting to create a context, fix #349 #350

For each format attempt, the renderer creates a window and try to create a context using this window. But anytime a context cannot be created, the …

+7 -3
1 comment
@illwieckz
illwieckz pushed to DaemonEngine/Daemon Jul 13, 2020
1 commit to 0.52.0/sync
  • @illwieckz b3204ef
    renderer: reuse window instead of turning it off and on again, fix #349
@illwieckz
illwieckz pushed to DaemonEngine/Daemon Jul 13, 2020
1 commit to 0.52.0/sync
  • @illwieckz 27d30c0
    renderer: abort on missing required GL extension, fix #348
@illwieckz
illwieckz merged a pull request in DaemonEngine/Daemon Jul 13, 2020
Abort on missing required GL extension, fix #348 #351

Abort on missing required GL extension, fix #348 I would appreciate comments on error message wording.

+1 -1
1 comment
@illwieckz
illwieckz opened an issue in DaemonEngine/Daemon Jul 13, 2020
implement reflective specularity with physical mapping #355

currently the reflective thing of it is only implemented for phong mapping, not pbr mapping.

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#344 Jul 13, 2020

More logs about this GPU: SDL_Init( SDL_INIT_VIDEO )... Using SDL Version 2.0.10 SDL using driver "x11" Initializing OpenGL display Display aspect:…

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#344 Jul 13, 2020

Unfortunately, the problem does not occur when compiling shader but when using them, so #354 is helpless to identify the shader that fails. Also, w…

@illwieckz
illwieckz opened a pull request in DaemonEngine/Daemon Jul 13, 2020
renderer: print shader name and macro at build time, ref #344 #354

Print shader name and macro at build time, may help to diagnose #344 to know which shader is failing. That debug code prints something like that in…

+6 -0
@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#344 Jul 13, 2020

All of this seems to be printed by the driver itself: r300 FP: Compiler Error: ../src/gallium/drivers/r300/compiler/r300_fragprog_emit.c::emit_alu(…

@illwieckz
illwieckz commented on pull request DaemonEngine/Daemon#351 Jul 13, 2020

travis failure is a travis issue

@illwieckz
illwieckz opened a pull request in DaemonEngine/Daemon Jul 13, 2020
cleanup GPU detection code, fix #352 #353

See #352, the code was reading GL version to select GL 2 or GL 3 features, but was looking hardcoded string (related to 10 years old hardware and s…

+21 -130
@illwieckz
illwieckz commented on pull request DaemonEngine/Daemon#351 Jul 13, 2020

We may modify Sys::Error to destroy the window before printing the error message in another PR instead.

@illwieckz
illwieckz commented on pull request DaemonEngine/Daemon#351 Jul 13, 2020

Yeah, I was wondering about the fact the window is destroyed after the error message is displayed, leaving undefined content on screen until the us…

@slipher
slipher commented on pull request DaemonEngine/Daemon#351 Jul 13, 2020

This will be done already by Sys::Error -> Sys::Shutdown -> Application::Shutdown -> ClientApplication::Shutdown -> CL_Shutdown -> CL_ShutdownRef -…

Daemon Engine
Daemon Engine
Sunday, 12 July 2020
@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#352 Jul 12, 2020

In fact the Mesa driver type sets a GLSL macro that is not used anymore. And in fact it looks like the code setting this type may never detect Mesa…

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#352 Jul 12, 2020

Also this code does not work anymore: Daemon/src/engine/sys/sdl_glimp.cpp Lines 1356 to 1357 in 6b94e2e AMD renderer string does not con…

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#352 Jul 12, 2020

This confirms GL 2.1 hardware is considered as old one: Daemon/src/engine/sys/sdl_glimp.cpp Lines 1359 to 1360 in 6b94e2e Pre-TeraScale …

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#352 Jul 12, 2020

else if ( Q_stristr( glConfig.renderer_string, "rv770" ) || […] { glConfig.hardwareType = glHardwareType_t::GLHW_ATI_DX10; I have access to an RV…

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#352 Jul 12, 2020

We may just assume all GPUs are modern ones, then put special conditions when people report bugs.

@illwieckz
illwieckz opened an issue in DaemonEngine/Daemon Jul 12, 2020
10 years old rusty XreaL code is detecting modern GPUs as pre-2006 ones #352

10 years old rusty XreaL code is detecting modern GPUs as pre-2006 ones. Basically the code looks for known strings to recognize some 10 years old …

@illwieckz
illwieckz opened a pull request in DaemonEngine/Daemon Jul 12, 2020
Abort on missing required GL extension, fix #348 #351

Abort on missing required GL extension, fix #348 I would appreciate comments on error message wording.

+1 -1
Daemon Engine
Daemon Engine
Saturday, 11 July 2020
@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#348 Jul 11, 2020

This hardware seems to support GL_EXT_framebuffer_object instead of ARB_framebuffer_object. Khronos' OpenGL wiki says: Warning: This section descr…

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#348 Jul 11, 2020

Only two extensions seems to be required: ARB_half_float_vertex and ARB_framebuffer_object, on such hardware or driver, the first one is there but …

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#348 Jul 11, 2020

I see alternative code for missing GL_ARB_texture_float, GL_EXT_gpu_shader4, GL_EXT_texture_integer, GL_ARB_texture_rg, GL_ARB_texture_gather, and G…

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#348 Jul 11, 2020

There is a lot of missing extensions: ...GL_ARB_texture_float not found ...GL_EXT_gpu_shader4 not found ...GL_EXT_texture_integer not found ...GL_A…

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#348 Jul 11, 2020

On a side note, Xonotic/DarkPlaces (an OpenGL 2.1 game if I'm right) manages to render things on this hardware. This is garbage (like gnome shell i…

@illwieckz
illwieckz opened a pull request in DaemonEngine/Daemon Jul 11, 2020
destroy window for invalid context, fix #349 #350

For each format attempt, the renderer creates a window and try to create a context using this window. But anytime a context cannot be created, the …

+1 -0
@illwieckz
illwieckz opened an issue in DaemonEngine/Daemon Jul 11, 2020
Two windows are created on OpenGL 2.1 hardware #349

On OpenGL 2.1 hardware, two windows are created, one of them having undefined content, the other one rendering the game itself:

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#348 Jul 11, 2020

The Warn: SDL_GL_CreateContext failed: Could not create GL context: GLXBadFBConfig message may not be related to the segfault, this is a warning be…

@illwieckz
illwieckz opened an issue in DaemonEngine/Daemon Jul 11, 2020
segfault on glBindFramebuffer( GL_FRAMEBUFFER, 0 ) after SDL_GL_CreateContext failed: Could not create GL context: GLXBadFBConfig #348

I attempted to run Unvanquished on two Nvidia OpenGL 2.1 GPUs: GeForce N6600LE, workstation discrete card (PCIe x16) GPU (~2004) GeForce 6150LE, w…

@mjkalasky

An FPS/RTS hybrid game powered by the Daemon engine (a combination of ioq3 and XreaL)

C++ 533 Updated Jul 12

Daemon Engine
Daemon Engine
Wednesday, 08 July 2020
@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#346 Jul 8, 2020

As said in #347, we may want to add a cvar to prevent to enforcement to occur, to be able to keep the ability to test if the issue occurs on given …

@illwieckz
illwieckz opened an issue in DaemonEngine/Daemon Jul 8, 2020
Make possible to downscale all textures but lightmap #347

With an ATI Radeon HD 4890 (RV790 XT, TeraScale 1) from year 2009, switching texture size from Full (1:1) to Low (4:1) when all other options are m…

Daemon Engine
Daemon Engine
Tuesday, 07 July 2020
@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#343 Jul 7, 2020

That really looks like a driver bug. When enabling tri display (r_showtris 1), the line repaint the background texture with the foreground texture:

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#344 Jul 7, 2020

We may also want to name the faulty shader and dumps to make debugging easier.

@illwieckz
illwieckz opened an issue in DaemonEngine/Daemon Jul 7, 2020
Prevent hangs when running low-memory GPU #346

I experienced computer hangs with Intel GMA965 X3100 GPU when texture quality (size) is set to Full (1:1). On the other hand, setting texture quali…

@illwieckz
illwieckz opened an issue in DaemonEngine/Daemon Jul 7, 2020
Properly catch “Too many ALU instructions” and other compilers error #345

This issue is related to #344. When an user face a compiler error like this: r300 FP: Compiler Error: ../src/gallium/drivers/r300/compiler/r300_fra…

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#344 Jul 7, 2020

Note that the game starts properly and displays the menu properly, the compiler error occurs when loading maps.

@illwieckz
illwieckz opened an issue in DaemonEngine/Daemon Jul 7, 2020
r300 FP: Compiler Error: r300_fragprog_emit.c::emit_alu(): Too many ALU instructions (ATI X1050) #344

The Unvanquished download page states the minimal requirement on GPU side is an OpenGL 2.1 GPU. I've driven some tests to check that, using the to-…

NetRadiant
NetRadiant
Friday, 03 July 2020

Thomas Debesse (c5ecfe71) at 03 Jul 02:12

q3map2/light_bounce: prevent infinite loop on obscure bias compute

New code produces same result without loop at all, so it cannot fall in infinite loop, and it is faster in use cases requiring more than one loop in previous code.

The Unvanquished vega map is known to trigger the bug: github.com/UnvanquishedAssets/map-vega_src.dpkdir I reproduced it multiple time on various hardware (8 core FX-9590, 12 core/24 thread Ryzen 9 3900X) with commit af40508 and using final compilation profile edited to use -fastbounce instead of -fast option.

The symptom is simple, q3map2 stucks there (with an 8 core FX-9590 CPU):

--- Radiosity (bounce 1 of 8) ---
--- RadCreateDiffuseLights ---
0...1...2...3..

Or somewhere else in that progression bar given your hardware and the amount of core your CPU has.

For example, with a 12 core / 24 thread Ryzen 9 3900X CPU, q3map2 stucks there:

--- Radiosity (bounce 1 of 8) ---
--- RadCreateDiffuseLights ---
0...1...2...3...4..

When stuck, all the CPU cores are running 100% but the thread never returns (a strace can reveals it, a gdb backtrace too).

Thanks to @slipher for the precious advices and improving my first attempt to fix it.

For more information on the issue, I asked:

which negative value never can become positive when incremented infinitely?

slipher said:

for a double, any value less than -2^53 would have this property don't know for float off the top of my head

But then, it means that's theoretically verified this loop was able to run forever in some case.

I don't know what this code is doing anyway, but at least we can keep the behaviour without requiring to understand it.

For information, this is how q3map2 processes look when the issue happens:

$ strace -p 52551
strace: Process 52551 attached
futex(0x7f4bdffff9d0, FUTEX_WAIT, 183960, NULL
$ gdb --pid=52551
GNU gdb (Ubuntu 9.1-0ubuntu1) 9.1
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:
    .

For help, type "help".
Type "apropos word" to search for commands related to "word".
Attaching to process 52551
[New LWP 183960]
[New LWP 183961]
[New LWP 183962]
[New LWP 183963]
[New LWP 183964]
[New LWP 183965]
[New LWP 183966]
[New LWP 183967]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
__pthread_clockjoin_ex (threadid=139963857368832, thread_return=0x0, clockid=, abstime=, block=)
    at pthread_join_common.c:145
145	pthread_join_common.c: Aucun fichier ou dossier de ce type.
(gdb) thread apply all bt

Thread 9 (Thread 0x7f4bddffb700 (LWP 183967)):
#0  0x0000557fd26a25fd in RadSampleImage (pixels=0x7f4bf16c2010 "egh\377egh\377egh\377ggi\377iik\377ggi\377fhj\377ehi\377gij\377hii\377ghg\377ghh\377fgg\377ehh\377fii\377eij\377fhi\377ghi\377hij\377ghj\377ghj\377ggj\377dgi\377ehj\377egi\377ehj\377gik\377fij\377fii\377ehg\377egg\377ehi\377egi\377egi\377egh\377dgg\377dgg\377dgf\377dgg\377egi\377fij\377ehi\377dgg\377cfg\377dgg\377dgg\377dgg\377cfg\377dfg\377ffi\377"..., width=512, height=512, st=0x7f4bddfc9c40, color=0x7f4bddfc9c80) at …/netradiant/tools/quake3/q3map2/light_bounce.c:221
#1  0x0000557fd26a312c in RadSample (lightmapNum=0, ds=0x7f4be6444d80, lm=0x557fdaf48d10, si=0x7f4bf2ae61c0, rw=0x7f4bddfe9e20, average=0x7f4bddfc9d90, gradient=0x7f4bddfd9da0, style=0x7f4bddfc9d1c) at …/netradiant/tools/quake3/q3map2/light_bounce.c:373
#2  0x0000557fd26a3a56 in RadSubdivideDiffuseLight (lightmapNum=0, ds=0x7f4be6444d80, lm=0x557fdaf48d10, si=0x7f4bf2ae61c0, scale=1, subdivide=256, original=qtrue, rw=0x7f4bddfe9e20, cw=0x7f4bddff9e90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:484
#3  0x0000557fd26a4b46 in RadLightForTriangles (num=13612, lightmapNum=0, lm=0x557fdaf48d10, si=0x7f4bf2ae61c0, scale=1, subdivide=256, cw=0x7f4bddff9e90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:676
#4  0x0000557fd26a58cd in RadLight (num=13612) at …/netradiant/tools/quake3/q3map2/light_bounce.c:884
#5  0x0000557fd2675fe1 in ThreadWorkerFunction (threadnum=7) at …/netradiant/tools/quake3/common/threads.c:101
#6  0x00007f4bf5309609 in start_thread (arg=) at pthread_create.c:477
#7  0x00007f4bf4ed2103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 8 (Thread 0x7f4bde7fc700 (LWP 183966)):
#0  0x0000557fd26a25fa in RadSampleImage (pixels=0x7f4bf16c2010 "egh\377egh\377egh\377ggi\377iik\377ggi\377fhj\377ehi\377gij\377hii\377ghg\377ghh\377fgg\377ehh\377fii\377eij\377fhi\377ghi\377hij\377ghj\377ghj\377ggj\377dgi\377ehj\377egi\377ehj\377gik\377fij\377fii\377ehg\377egg\377ehi\377egi\377egi\377egh\377dgg\377dgg\377dgf\377dgg\377egi\377fij\377ehi\377dgg\377cfg\377dgg\377dgg\377dgg\377cfg\377dfg\377ffi\377"..., width=512, height=512, st=0x7f4bde7cac40, color=0x7f4bde7cac80) at …/netradiant/tools/quake3/q3map2/light_bounce.c:221
#1  0x0000557fd26a312c in RadSample (lightmapNum=0, ds=0x7f4be644c120, lm=0x557fdaf4e110, si=0x7f4bf2ae61c0, rw=0x7f4bde7eae20, average=0x7f4bde7cad90, gradient=0x7f4bde7dada0, style=0x7f4bde7cad1c) at …/netradiant/tools/quake3/q3map2/light_bounce.c:373
#2  0x0000557fd26a3a56 in RadSubdivideDiffuseLight (lightmapNum=0, ds=0x7f4be644c120, lm=0x557fdaf4e110, si=0x7f4bf2ae61c0, scale=1, subdivide=256, original=qtrue, rw=0x7f4bde7eae20, cw=0x7f4bde7fae90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:484
#3  0x0000557fd26a4b46 in RadLightForTriangles (num=13812, lightmapNum=0, lm=0x557fdaf4e110, si=0x7f4bf2ae61c0, scale=1, subdivide=256, cw=0x7f4bde7fae90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:676
#4  0x0000557fd26a58cd in RadLight (num=13812) at …/netradiant/tools/quake3/q3map2/light_bounce.c:884
#5  0x0000557fd2675fe1 in ThreadWorkerFunction (threadnum=6) at …/netradiant/tools/quake3/common/threads.c:101
#6  0x00007f4bf5309609 in start_thread (arg=) at pthread_create.c:477
#7  0x00007f4bf4ed2103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 7 (Thread 0x7f4bdeffd700 (LWP 183965)):
#0  0x0000557fd26a25fd in RadSampleImage (pixels=0x7f4bf16c2010 "egh\377egh\377egh\377ggi\377iik\377ggi\377fhj\377ehi\377gij\377hii\377ghg\377ghh\377fgg\377ehh\377fii\377eij\377fhi\377ghi\377hij\377ghj\377ghj\377ggj\377dgi\377ehj\377egi\377ehj\377gik\377fij\377fii\377ehg\377egg\377ehi\377egi\377egi\377egh\377dgg\377dgg\377dgf\377dgg\377egi\377fij\377ehi\377dgg\377cfg\377dgg\377dgg\377dgg\377cfg\377dfg\377ffi\377"..., width=512, height=512, st=0x7f4bdefcbc40, color=0x7f4bdefcbc80) at …/netradiant/tools/quake3/q3map2/light_bounce.c:221
#1  0x0000557fd26a312c in RadSample (lightmapNum=0, ds=0x7f4be6444c58, lm=0x557fdaf4df10, si=0x7f4bf2ae61c0, rw=0x7f4bdefebe20, average=0x7f4bdefcbd90, gradient=0x7f4bdefdbda0, style=0x7f4bdefcbd1c) at …/netradiant/tools/quake3/q3map2/light_bounce.c:373
#2  0x0000557fd26a3a56 in RadSubdivideDiffuseLight (lightmapNum=0, ds=0x7f4be6444c58, lm=0x557fdaf4df10, si=0x7f4bf2ae61c0, scale=1, subdivide=256, original=qtrue, rw=0x7f4bdefebe20, cw=0x7f4bdeffbe90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:484
#3  0x0000557fd26a4b46 in RadLightForTriangles (num=13610, lightmapNum=0, lm=0x557fdaf4df10, si=0x7f4bf2ae61c0, scale=1, subdivide=256, cw=0x7f4bdeffbe90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:676
#4  0x0000557fd26a58cd in RadLight (num=13610) at …/netradiant/tools/quake3/q3map2/light_bounce.c:884
#5  0x0000557fd2675fe1 in ThreadWorkerFunction (threadnum=5) at …/netradiant/tools/quake3/common/threads.c:101
#6  0x00007f4bf5309609 in start_thread (arg=) at pthread_create.c:477
#7  0x00007f4bf4ed2103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 6 (Thread 0x7f4bdf7fe700 (LWP 183964)):
#0  0x0000557fd26a25fa in RadSampleImage (pixels=0x7f4bf16c2010 "egh\377egh\377egh\377ggi\377iik\377ggi\377fhj\377ehi\377gij\377hii\377ghg\377ghh\377fgg\377ehh\377fii\377eij\377fhi\377ghi\377hij\377ghj\377ghj\377ggj\377dgi\377ehj\377egi\377ehj\377gik\377fij\377fii\377ehg\377egg\377ehi\377egi\377egi\377egh\377dgg\377dgg\377dgf\377dgg\377egi\377fij\377ehi\377dgg\377cfg\377dgg\377dgg\377dgg\377cfg\377dfg\377ffi\377"..., width=512, height=512, st=0x7f4bdf7ccc40, color=0x7f4bdf7ccc80) at …/netradiant/tools/quake3/q3map2/light_bounce.c:221
#1  0x0000557fd26a312c in RadSample (lightmapNum=0, ds=0x7f4be644eff4, lm=0x557fdaefbb10, si=0x7f4bf2ae61c0, rw=0x7f4bdf7ece20, average=0x7f4bdf7ccd90, gradient=0x7f4bdf7dcda0, style=0x7f4bdf7ccd1c) at …/netradiant/tools/quake3/q3map2/light_bounce.c:373
#2  0x0000557fd26a3a56 in RadSubdivideDiffuseLight (lightmapNum=0, ds=0x7f4be644eff4, lm=0x557fdaefbb10, si=0x7f4bf2ae61c0, scale=1, subdivide=256, original=qtrue, rw=0x7f4bdf7ece20, cw=0x7f4bdf7fce90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:484
#3  0x0000557fd26a4b46 in RadLightForTriangles (num=13893, lightmapNum=0, lm=0x557fdaefbb10, si=0x7f4bf2ae61c0, scale=1, subdivide=256, cw=0x7f4bdf7fce90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:676
#4  0x0000557fd26a58cd in RadLight (num=13893) at …/netradiant/tools/quake3/q3map2/light_bounce.c:884
#5  0x0000557fd2675fe1 in ThreadWorkerFunction (threadnum=4) at …/netradiant/tools/quake3/common/threads.c:101
#6  0x00007f4bf5309609 in start_thread (arg=) at pthread_create.c:477
#7  0x00007f4bf4ed2103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 0x7f4be91a1700 (LWP 183963)):
#0  0x0000557fd26a25fa in RadSampleImage (pixels=0x7f4bf16c2010 "egh\377egh\377egh\377ggi\377iik\377ggi\377fhj\377ehi\377gij\377hii\377ghg\377ghh\377fgg\377ehh\377fii\377eij\377fhi\377ghi\377hij\377ghj\377ghj\377ggj\377dgi\377ehj\377egi\377ehj\377gik\377fij\377fii\377ehg\377egg\377ehi\377egi\377egi\377egh\377dgg\377dgg\377dgf\377dgg\377egi\377fij\377ehi\377dgg\377cfg\377dgg\377dgg\377dgg\377cfg\377dfg\377ffi\377"..., width=512, height=512, st=0x7f4be916fc40, color=0x7f4be916fc80) at …/netradiant/tools/quake3/q3map2/light_bounce.c:221
#1  0x0000557fd26a312c in RadSample (lightmapNum=0, ds=0x7f4be644bff8, lm=0x557fdae71110, si=0x7f4bf2ae61c0, rw=0x7f4be918fe20, average=0x7f4be916fd90, gradient=0x7f4be917fda0, style=0x7f4be916fd1c) at …/netradiant/tools/quake3/q3map2/light_bounce.c:373
#2  0x0000557fd26a3a56 in RadSubdivideDiffuseLight (lightmapNum=0, ds=0x7f4be644bff8, lm=0x557fdae71110, si=0x7f4bf2ae61c0, scale=1, subdivide=256, original=qtrue, rw=0x7f4be918fe20, cw=0x7f4be919fe90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:484
#3  0x0000557fd26a4b46 in RadLightForTriangles (num=13810, lightmapNum=0, lm=0x557fdae71110, si=0x7f4bf2ae61c0, scale=1, subdivide=256, cw=0x7f4be919fe90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:676
#4  0x0000557fd26a58cd in RadLight (num=13810) at …/netradiant/tools/quake3/q3map2/light_bounce.c:884
#5  0x0000557fd2675fe1 in ThreadWorkerFunction (threadnum=3) at …/netradiant/tools/quake3/common/threads.c:101
#6  0x00007f4bf5309609 in start_thread (arg=) at pthread_create.c:477
#7  0x00007f4bf4ed2103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7f4be89a0700 (LWP 183962)):
#0  0x0000557fd26a25fa in RadSampleImage (pixels=0x7f4bf16c2010 "egh\377egh\377egh\377ggi\377iik\377ggi\377fhj\377ehi\377gij\377hii\377ghg\377ghh\377fgg\377ehh\377fii\377eij\377fhi\377ghi\377hij\377ghj\377ghj\377ggj\377dgi\377ehj\377egi\377ehj\377gik\377fij\377fii\377ehg\377egg\377ehi\377egi\377egi\377egh\377dgg\377dgg\377dgf\377dgg\377egi\377fij\377ehi\377dgg\377cfg\377dgg\377dgg\377dgg\377cfg\377dfg\377ffi\377"..., width=512, height=512, st=0x7f4be896ec40, color=0x7f4be896ec80) at …/netradiant/tools/quake3/q3map2/light_bounce.c:221
#1  0x0000557fd26a312c in RadSample (lightmapNum=0, ds=0x7f4be6444bc4, lm=0x557fdaea4310, si=0x7f4bf2ae61c0, rw=0x7f4be898ee20, average=0x7f4be896ed90, gradient=0x7f4be897eda0, style=0x7f4be896ed1c) at …/netradiant/tools/quake3/q3map2/light_bounce.c:373
#2  0x0000557fd26a3a56 in RadSubdivideDiffuseLight (lightmapNum=0, ds=0x7f4be6444bc4, lm=0x557fdaea4310, si=0x7f4bf2ae61c0, scale=1, subdivide=256, original=qtrue, rw=0x7f4be898ee20, cw=0x7f4be899ee90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:484
#3  0x0000557fd26a4b46 in RadLightForTriangles (num=13609, lightmapNum=0, lm=0x557fdaea4310, si=0x7f4bf2ae61c0, scale=1, subdivide=256, cw=0x7f4be899ee90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:676
#4  0x0000557fd26a58cd in RadLight (num=13609) at …/netradiant/tools/quake3/q3map2/light_bounce.c:884
#5  0x0000557fd2675fe1 in ThreadWorkerFunction (threadnum=2) at …/netradiant/tools/quake3/common/threads.c:101
#6  0x00007f4bf5309609 in start_thread (arg=) at pthread_create.c:477
#7  0x00007f4bf4ed2103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7f4be4d10700 (LWP 183961)):
#0  0x0000557fd26a25e8 in RadSampleImage (pixels=0x7f4bf16c2010 "egh\377egh\377egh\377ggi\377iik\377ggi\377fhj\377ehi\377gij\377hii\377ghg\377ghh\377fgg\377ehh\377fii\377eij\377fhi\377ghi\377hij\377ghj\377ghj\377ggj\377dgi\377ehj\377egi\377ehj\377gik\377fij\377fii\377ehg\377egg\377ehi\377egi\377egi\377egh\377dgg\377dgg\377dgf\377dgg\377egi\377fij\377ehi\377dgg\377cfg\377dgg\377dgg\377dgg\377cfg\377dfg\377ffi\377"..., width=512, height=512, st=0x7f4be4cdec40, color=0x7f4be4cdec80) at …/netradiant/tools/quake3/q3map2/light_bounce.c:222
#1  0x0000557fd26a312c in RadSample (lightmapNum=0, ds=0x7f4be6444cec, lm=0x557fdaefb110, si=0x7f4bf2ae61c0, rw=0x7f4be4cfee20, average=0x7f4be4cded90, gradient=0x7f4be4ceeda0, style=0x7f4be4cded1c) at …/netradiant/tools/quake3/q3map2/light_bounce.c:373
#2  0x0000557fd26a3a56 in RadSubdivideDiffuseLight (lightmapNum=0, ds=0x7f4be6444cec, lm=0x557fdaefb110, si=0x7f4bf2ae61c0, scale=1, subdivide=256, original=qtrue, rw=0x7f4be4cfee20, cw=0x7f4be4d0ee90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:484
#3  0x0000557fd26a4b46 in RadLightForTriangles (num=13611, lightmapNum=0, lm=0x557fdaefb110, si=0x7f4bf2ae61c0, scale=1, subdivide=256, cw=0x7f4be4d0ee90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:676
#4  0x0000557fd26a58cd in RadLight (num=13611) at …/netradiant/tools/quake3/q3map2/light_bounce.c:884
#5  0x0000557fd2675fe1 in ThreadWorkerFunction (threadnum=1) at …/netradiant/tools/quake3/common/threads.c:101
#6  0x00007f4bf5309609 in start_thread (arg=) at pthread_create.c:477
#7  0x00007f4bf4ed2103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f4bdffff700 (LWP 183960)):
#0  0x0000557fd26a25fd in RadSampleImage (pixels=0x7f4bf16c2010 "egh\377egh\377egh\377ggi\377iik\377ggi\377fhj\377ehi\377gij\377hii\377ghg\377ghh\377fgg\377ehh\377fii\377eij\377fhi\377ghi\377hij\377ghj\377ghj\377ggj\377dgi\377ehj\377egi\377ehj\377gik\377fij\377fii\377ehg\377egg\377ehi\377egi\377egi\377egh\377dgg\377dgg\377dgf\377dgg\377egi\377fij\377ehi\377dgg\377cfg\377dgg\377dgg\377dgg\377cfg\377dfg\377ffi\377"..., width=512, height=512, st=0x7f4bdffcdc40, color=0x7f4bdffcdc80) at …/netradiant/tools/quake3/q3map2/light_bounce.c:221
#1  0x0000557fd26a312c in RadSample (lightmapNum=0, ds=0x7f4be644c08c, lm=0x557fdaf48f10, si=0x7f4bf2ae61c0, rw=0x7f4bdffede20, average=0x7f4bdffcdd90, gradient=0x7f4bdffddda0, style=0x7f4bdffcdd1c) at …/netradiant/tools/quake3/q3map2/light_bounce.c:373
#2  0x0000557fd26a3a56 in RadSubdivideDiffuseLight (lightmapNum=0, ds=0x7f4be644c08c, lm=0x557fdaf48f10, si=0x7f4bf2ae61c0, scale=1, subdivide=256, original=qtrue, rw=0x7f4bdffede20, cw=0x7f4bdfffde90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:484
#3  0x0000557fd26a4b46 in RadLightForTriangles (num=13811, lightmapNum=0, lm=0x557fdaf48f10, si=0x7f4bf2ae61c0, scale=1, subdivide=256, cw=0x7f4bdfffde90) at …/netradiant/tools/quake3/q3map2/light_bounce.c:676
#4  0x0000557fd26a58cd in RadLight (num=13811) at …/netradiant/tools/quake3/q3map2/light_bounce.c:884
#5  0x0000557fd2675fe1 in ThreadWorkerFunction (threadnum=0) at …/netradiant/tools/quake3/common/threads.c:101
#6  0x00007f4bf5309609 in start_thread (arg=) at pthread_create.c:477
#7  0x00007f4bf4ed2103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f4bf5b54f00 (LWP 52551)):
#0  __pthread_clockjoin_ex (threadid=139963857368832, thread_return=0x0, clockid=, abstime=, block=) at pthread_join_common.c:145
#1  0x0000557fd26764db in RunThreadsOn (workcnt=38977, showpacifier=qtrue, func=0x557fd2675fb6 ) at …/netradiant/tools/quake3/common/threads.c:576
#2  0x0000557fd267602e in RunThreadsOnIndividual (workcnt=38977, showpacifier=qtrue, func=0x557fd26a55da ) at …/netradiant/tools/quake3/common/threads.c:110
#3  0x0000557fd26a59c8 in RadCreateDiffuseLights () at …/netradiant/tools/quake3/q3map2/light_bounce.c:918
#4  0x0000557fd269db2c in LightWorld (BSPFilePath=0x7ffca8537f90 "…/maps/vega.bsp", fastLightmapSearch=qtrue, noBounceStore=qtrue) at …/netradiant/tools/quake3/q3map2/light.c:2062
#5  0x0000557fd26a1a00 in LightMain (argc=27, argv=0x7ffca85388f0) at …/netradiant/tools/quake3/q3map2/light.c:3056
#6  0x0000557fd26c8b0e in main (argc=28, argv=0x7ffca85388e8) at …/netradiant/tools/quake3/q3map2/main.c:244

@Garux said on DeFraG discord:

i guess these are img sts and they try to get positive values there normally they are not far from 0, so must be some fucked up projection in the bug case might worth to check for nan/inf even then

It would definitely be interesting to investigate why we get such wrong number there, we can reliably reproduce the bug with this map. But in all case, now that we have a way to reproduce it if we want to investigate, avoiding the infinite loop is good whatever the other bugs that may lie around.

NetRadiant
NetRadiant
Wednesday, 01 July 2020

Right, I renamed it Modulo1IfNegative().

Just a nit - modulo 1 would be return f - floor(f);. This does mod 1 only if the number is negative.

New code produces same result without loop at all, so it cannot fall in infinite loop, and it is faster in use cases requiring more than one loop in previous code.

The Unvanquished vega map is known to trigger the bug: github.com/UnvanquishedAssets/map-vega_src.dpkdir I reproduced it multiple time on various hardware (8 core FX-9590, 12 core/24 thread Ryzen 9 3900X) with commit af40508 and using final compilation profile edited to use -fastbounce instead of -fast option.

The symptom is simple, q3map2 stucks there (with an 8 core FX-9590 CPU):

--- Radiosity (bounce 1 of 8) ---
--- RadCreateDiffuseLights ---
0...1...2...3..

Or somewhere else in that progression bar given your hardware and the amount of core your CPU has.

For example, with a 12 core / 24 thread Ryzen 9 3900X CPU, q3map2 stucks there:

--- Radiosity (bounce 1 of 8) ---
--- RadCreateDiffuseLights ---
0...1...2...3...4..

When stuck, all the CPU cores are running 100% but the thread never returns (a strace can reveals it, a gdb backtrace too).

Thanks to @slipher for the precious advices and improving my first attempt to fix it.

For more information on the issue, I asked:

which negative value never can become positive when incremented infinitely?

slipher said:

for a double, any value less than -2^53 would have this property don't know for float off the top of my head

But then, it means that's theoretically verified this loop was able to run forever in some case.

I don't know what this code is doing anyway, but at least we can keep the behaviour without requiring to understand it.

NetRadiant
NetRadiant
Tuesday, 30 June 2020

Yes, I have come to the same solution as you ;)

ASE & OBJ model files will be empty if "deformVertexes autosprite" is used when compiling.

Thank you anyway, Garux.

try without deformVertexes autosprite

Daemon Engine
Daemon Engine
Monday, 29 June 2020
@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#343 Jun 29, 2020

I forgot to say, but I reproduce the bug on both 0.51 release and upcoming 0.52 branch, so that's unrelated to the recent renderer revamp.

@illwieckz
illwieckz commented on issue DaemonEngine/Daemon#343 Jun 29, 2020

It may be a driver issue but in all case we know it's possible to not trigger it in game because I reproduce the bug when loading the Xonotic erbiu…

@illwieckz
illwieckz opened an issue in DaemonEngine/Daemon Jun 29, 2020
Rendering bugs with Radeon HD 3650 (RV635) on Linux with Mesa #343

Given we recommend OpenGL 3.2 GPU (and the game may work with OpenGL 2.1) I may attempt to plug some older GPU to my computer to drive some tests. I…

NetRadiant
NetRadiant
Sunday, 28 June 2020

I provide a file for fast testing:

modeltest.pk3

It is a small map to build as model, in two versions:

modeltest_brushes.map & modeltest_patches.map

Some explanation:

If you compile/convert the file modeltest_brushes.map to have an ASE model then you will have the expected -and correct- ASE file.

If you compile/convert the file modeltest_patches.map then you will have an ASE file with no mesh (zero tris), only the materials are defined.

It seems clear to me that the -patchmeta switch of q3map2 is not working.

Daemon Engine
Daemon Engine
Saturday, 27 June 2020
@illwieckz
illwieckz pushed to DaemonEngine/DaemonMediaAuthoringKit Jun 27, 2020
1 commit to master
  • @illwieckz 949f50f
    better dependencies declaration for xiph tools
@illwieckz
illwieckz pushed to DaemonEngine/DaemonMediaAuthoringKit Jun 27, 2020
2 commits to master
  • @illwieckz a4cd721
    make build togglable per tool, disable cwebp and xiph tools like opus…
  • @illwieckz 6e9513c
    also build opusenc and other vorbis and flac tools
  • 1 more commits »

I'm trying to create some ASE/OBJ model in Netradiant using a few patch meshes but the output files are empty, -pachmeta doesn't seem to work.

My Netradiant is 1.5.0-20200328

My Netradiant's preset used to compile/convert is:


  [q3map2] -meta -patchmeta -subdivisions 8 "[MapFile]"
  [q3map2] -convert -format ase -shadersasbitmap "[BspFile]"
  [q3map2] -convert -format obj "[BspFile]"

P.D.: The generated BSP is also "empty" as there is nothing to show if I load it in the game. ITOH, everything is right if I made the same model with brushes instead of patches, but this would be an excessive limitation to create models with Netradiant.

Some screenshot of Netradiant output:

Daemon Engine
Daemon Engine
Thursday, 25 June 2020
@illwieckz
illwieckz pushed to DaemonEngine/DaemonMediaAuthoringKit Jun 25, 2020
2 commits to master
  • @illwieckz 76b62ee
    fix Urcheon installation
  • @illwieckz aa94542
    fetch old FTE's iqm revision from when it was standalone
@illwieckz
illwieckz pushed to DaemonEngine/Urcheon Jun 25, 2020
2 commits to master
  • @illwieckz 3f8d39e
    fix: dict values list is not iterable
  • @illwieckz fd19507
    also look for untracked file when building files since git reference
Unvanquished
Unvanquished
Sunday, 21 June 2020
@slipher
slipher deleted branch playerstate/sync at Unvanquished/Unvanquished Jun 21, 2020

Updated Jul 12

@slipher
slipher commented on pull request Unvanquished/Unvanquished#1201 Jun 21, 2020

Had to move this to #1205 due to Github bugs.

@slipher
slipher opened a pull request in Unvanquished/Unvanquished Jun 21, 2020
+deconstruct: hold to force-decon #1205

Same as #1201 which Github closed of its own accord, and mysteriously refuses to let me reopen.

+390 -142
@slipher
slipher closed a pull request in Unvanquished/Unvanquished Jun 21, 2020
+deconstruct: hold to force-decon #1201

My attempt at a press-and-hold-to-deconstruct implementation, based on the work by @illwieckz. I'm not comfortable overloading +attack2 with decons…

+685 -198
9 comments
@slipher
slipher deleted branch playerstate/sync at Unvanquished/Unvanquished Jun 21, 2020

Updated Jul 12

@slipher
slipher pushed to Unvanquished/Unvanquished Jun 21, 2020
2 commits to 0.52.0/sync
  • @slipher 28a0763
    Remove unused playerState_t field
  • @slipher d264c0b
    Move playerState_t definition into gamelogic
@slipher
slipher deleted branch playerstate/sync at DaemonEngine/Daemon Jun 21, 2020

Updated Jun 29

@slipher
slipher pushed to DaemonEngine/Daemon Jun 21, 2020
2 commits to 0.52.0/sync
@slipher
slipher merged a pull request in DaemonEngine/Daemon Jun 21, 2020
Gamelogic-configurable netcode for playerState_t #341

A lot of hacks! There are a few fields referenced in the engine code, so I'm keeping those hard-coded in for now. I have only implemented loading t…

+246 -433
4 comments
@illwieckz
illwieckz commented on pull request Unvanquished/Unvanquished#1197 Jun 21, 2020

I now see no issue on my end. I'm not sure to understand everything but I'm confident with what you've done.

@illwieckz
illwieckz commented on pull request DaemonEngine/Daemon#341 Jun 21, 2020

I now see no issue on my end. I'm not sure to understand everything but I'm confident in what you've done.

Daemon Engine
Daemon Engine
Saturday, 20 June 2020
@slipher
slipher commented on pull request DaemonEngine/Daemon#341 Jun 20, 2020

Whoops, accidentally put QVM as the syscall major number of GetNetcodeTablesMsg, when it was ended to be MISC. Now fixed.

@slipher
slipher pushed to DaemonEngine/Daemon Jun 20, 2020
1 commit to playerstate/sync
  • @slipher 3a50cf3
    Use a gamelogic-provided table for player state in netcode
@illwieckz
illwieckz commented on pull request DaemonEngine/Daemon#341 Jun 20, 2020

I pulled playerstate/sync on both side and I got that while loading a map: Warn: SGame VM: IPC: Unexpected end of message And the game returns to …

Daemon Engine
Daemon Engine
Tuesday, 16 June 2020
@slipher
slipher commented on pull request DaemonEngine/Daemon#341 Jun 16, 2020

This should be in a mergeable state now.

@slipher
slipher pushed to DaemonEngine/Daemon Jun 16, 2020
2 commits to playerstate/sync
@slipher
slipher pushed to Unvanquished/Unvanquished Jun 16, 2020
2 commits to playerstate/sync
  • @slipher 18f2c6d
    Remove unused playerState_t field
  • @slipher 89f8c1a
    Move playerState_t definition into gamelogic
Unvanquished
Unvanquished
Tuesday, 02 June 2020
@illwieckz
illwieckz commented on issue Unvanquished/Unvanquished#1111 Jun 2, 2020

I don't mind if it's contemporary or not, but I mind if it's good for player or not. A “Quick play” or “I’m Feeling Lucky” mechanism seems to be go…

Unvanquished
Unvanquished
Monday, 01 June 2020
@Zilor
Zilor commented on issue Unvanquished/Unvanquished#1111 Jun 1, 2020

* [ ] open server list at startup I don't think it's contemporary pointing users to the server browser. Nowadays matchmaking is the preferred wa…

Unvanquished
Unvanquished
Sunday, 31 May 2020
@DolceTriade
DolceTriade pushed to Unvanquished/Unvanquished May 31, 2020
1 commit to rmlui/sync
  • @DolceTriade 3ffe28c
    Fix circle menu selection
Unvanquished
Unvanquished
Saturday, 30 May 2020
@DolceTriade
DolceTriade pushed to Unvanquished/Unvanquished May 30, 2020
1 commit to rmlui/sync
Unvanquished
Unvanquished
Friday, 29 May 2020
@slipher
slipher commented on issue Unvanquished/Unvanquished#1185 May 29, 2020

OK, the yaw angle, i.e. the same one which you could control by moving around the target in a circle, is what I originally thought. But then my ori…

Unvanquished
Unvanquished
Thursday, 28 May 2020
@illwieckz
illwieckz commented on issue Unvanquished/Unvanquished#1185 May 28, 2020

When you're building on an horizontal floor, I'm speaking about using the vertical axis that go through the center of the buildable to rotate the b…

Unvanquished
Unvanquished
Wednesday, 27 May 2020
@slipher
slipher commented on pull request Unvanquished/Unvanquished#1201 May 27, 2020

The target is selected when you press +deconstruct and can't be changed without starting a new charge.

@slipher
slipher commented on issue Unvanquished/Unvanquished#1185 May 27, 2020

So the pitch angle is the one you want to change?

@illwieckz
illwieckz commented on pull request Unvanquished/Unvanquished#1201 May 27, 2020

The target lock requires you to stay near the targeted buildable when the charge completes. It intentionally does not require you to keep aiming a…

@illwieckz
illwieckz commented on issue Unvanquished/Unvanquished#1185 May 27, 2020

Hmm, I did not care about hitbox when I opened that issue. My concern is the rotation of the model itself, for example the direction you face when …

@slipher
slipher commented on issue Unvanquished/Unvanquished#1185 May 27, 2020

Now that I am remembering the fact that buildable bounding boxes are always axis-aligned, maybe it is not so interesting to be able to rotate them.…

@slipher
slipher commented on pull request Unvanquished/Unvanquished#1201 May 27, 2020

I implemented a form of target lock-on (supporting the early error message when the target is not valid for deconstruction) and allowed deconstruct…

NetRadiant
NetRadiant
Monday, 25 May 2020

It's a refactoring that came along some VFS work done for game features. It would have been possible to add more convolution to not factorize that code but that did not seem a good idea. Having a dedicated VFS code for notex only is as absurd as having some texwindow code only for WAD, and it looks like you're not happy yourself with that dedicated WAD texwindow code. So, you may be happy, VFS factorization is already done, no dedicated VFS for notex anymore!