The open-source, cross-platform level editor for id Tech based games.
Go to file
Thomas Debesse 1cf7b72e6b 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:
https://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:

--- 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.

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 theorically 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.
2020-08-19 08:32:36 +03:00
contrib fix infinite loop in bobtoolz modal dialog after "enter illegal data;ok;get msg box;ok;close dialog window;get msg box" 2020-06-06 12:18:28 +03:00
docs docs: shaderManual: note working block comments 2020-05-04 11:22:05 +03:00
icons Radiant: 2017-08-02 09:12:17 +03:00
include * new filter: Point Entities (nongroup entities besides misc_models and lights) 2020-06-12 20:41:27 +03:00
libs fix Gdk-CRITICAL **: IA__gdk_window_get_window_type: assertion 'GDK_IS_WINDOW (window)' failed 2020-06-05 23:49:04 +03:00
plugins * new filter: Point Entities (nongroup entities besides misc_models and lights) 2020-06-12 20:41:27 +03:00
radiant * entity inspector: select entities by key, value, key+value buttons 2020-08-19 08:23:04 +03:00
regression_tests/q3map2 simplify map file 2012-04-02 11:46:02 +02:00
setup link and use the binary, not the symlink (macOS) 2020-05-08 15:56:53 +03:00
tools q3map2/light_bounce: prevent infinite loop on obscure bias compute 2020-08-19 08:32:36 +03:00
.cproject import 85332bd850 2018-02-07 22:45:04 +03:00
.gitattributes update gitattributes 2011-08-27 17:08:46 +02:00
.gitignore .gitignore .vscode 2020-07-22 19:57:51 +03:00
.patchsets branch-manager fixes 2009-03-09 13:27:02 +00:00
.project import 77c538c0c7 2018-02-07 22:27:59 +03:00
branch-manager branch-manager fixes 2009-03-09 13:27:02 +00:00
ChangeLog trash a bunch of outdated and confusing things 2012-03-17 14:07:19 -05:00
ChangeLog.idsoftware update changelog; make the Makefile support a MAKEFILE_CONF parameter to not have to symlink cross-Makefile.conf all the time 2008-12-09 09:04:07 +00:00
COMPILING update OSX COMPILING info #40 2020-04-04 23:53:31 +03:00
conftest.cpp my own uncrustify run 2012-03-27 12:03:21 +02:00
CONTRIBUTORS Merge commit '515673c08f8718a237e90c2130a1f5294f966d6a' 2012-03-27 11:43:50 +02:00
cross-Makefile.conf split up mingw-Makefile.inc into mingw-Makefile.inc, mingw-radiantdeps-Makefile.inc 2013-01-14 11:52:27 +01:00
download-gamepacks.sh import d9a21ba865 2018-02-07 22:48:05 +03:00
DoxyConfig trash a bunch of outdated and confusing things 2012-03-17 14:07:19 -05:00
Doxyfile trash a bunch of outdated and confusing things 2012-03-17 14:07:19 -05:00
generic_cpp.py fix lots of CRLFs 2010-04-17 21:02:26 +02:00
generic_h.py fix lots of CRLFs 2010-04-17 21:02:26 +02:00
generic_module.py initial 2008-09-13 18:28:57 +00:00
GPL initial 2008-09-13 18:28:57 +00:00
install-dlls-fedora.sh updates to install-dlls-fedora.sh by maci and me 2013-01-15 11:13:32 +01:00
install-dlls-msys2-mingw.sh install-dlls-msys2-mingw.sh: also copy new external gdk-pixbuf stuff 2018-12-21 11:05:30 +03:00
install-dlls.sh also include libjpeg8 here 2012-03-01 11:25:48 +01:00
install-dylibs.sh leave out 4 files 2012-01-23 20:49:53 +01:00
install-gamepack.sh Fix/add gamepacks links; workarounds for some games 2017-10-17 12:19:10 +03:00
install-gamepacks.sh Fix/add gamepacks links; workarounds for some games 2017-10-17 12:19:10 +03:00
LGPL initial 2008-09-13 18:28:57 +00:00
LICENSE initial 2008-09-13 18:28:57 +00:00
Makefile * Model Browser: default bind '/' 2020-04-26 07:28:23 +03:00
Makefile.conf Update these files as well 2010-08-29 20:47:06 +02:00
merge-from-zerowing.sh ::zerowing-base=336 2010-11-18 10:30:36 +01:00
mingw-fedora-Makefile.conf Fedora support patch by maci (make DLL finding work with Fedora's mingw) 2013-01-14 21:21:37 +01:00
mingw-Makefile.conf split up mingw-Makefile.inc into mingw-Makefile.inc, mingw-radiantdeps-Makefile.inc 2013-01-14 11:52:27 +01:00
mingw-Makefile.inc split up mingw-Makefile.inc into mingw-Makefile.inc, mingw-radiantdeps-Makefile.inc 2013-01-14 11:52:27 +01:00
mingw-radiantdeps-Makefile.inc split up mingw-Makefile.inc into mingw-Makefile.inc, mingw-radiantdeps-Makefile.inc 2013-01-14 11:52:27 +01:00
msys2-Makefile.conf simplify msys2-Makefile.conf 2018-02-08 13:17:44 +03:00
README.md update readme 2019-07-06 14:39:12 +03:00
TODO Q3map2: 2017-08-01 13:26:50 +03:00
uncrustify.cfg uncrustify config - not applying until more sync with internal versions are done 2012-03-27 11:45:20 +02:00

NetRadiant-custom

The open-source, cross-platform level editor for id Tech based games.

NetRadiant-custom is a fork of NetRadiant (GtkRadiant 1.4→massive rewrite→1.5→NetRadiant→this)


screenshot

Downloads

Ready-to-use packages are available in the Releases section.

Supported games

Main focus is on Quake, Quake3 and Quake Live.

Though other normally supported games should work too; See unverified game configs.

Features

Development is focused on smoothing and tweaking editing process.

Random feature highlights

  • WASD camera binds
  • Fully supported editing in 3D view (brush and entity creation, all manipulating tools)
  • Uniform merge algorithm, merging selected brushes, components and clipper points
  • Free and robust vertex editing, also providing abilities to remove and insert vertices
  • UV Tool (edits texture alignment of selected face or patch)
  • Autocaulk
  • Left mouse button click tunnel selector, paint selector
  • Numerous mouse shortcuts (see help->General->Mouse Shortcuts)
  • Focus camera on selected (Tab)
  • Snapped modes of manipulators
  • Draggable renderable transform origin for manipulators
  • Quick vertices drag / brush faces shear shortcut
  • Simple shader editor
  • Texture painting by drag
  • Seamless brush face to face texture paste
  • Customizable keyboard shortcuts
  • Customizable GUI themes, fonts
  • MeshTex plugin
  • Patch thicken
  • All patch prefabs are created aligned to active projection
  • Filters toolbar with extra functions on right mouse button click
  • Viewports zoom in to mouse pointer
  • 'all Supported formats' default option in open dialogs
  • Opening *.map, sent via cmd line (can assign *.map files in OS to be opened with radiant)
  • Texture browser: show alpha transparency option
  • Texture browser: gtk search in directories and tags trees
  • Texture browser: search in currently shown textures
  • CSG Tool (aka shell modifier)
  • Working region compilations (build a map with region enabled = compile regioned part only)
  • QE tool in a component mode: perform drag w/o hitting any handle too
  • Map info dialog: + Total patches, Ingame entities, Group entities, Ingame group entities counts
  • Connected entities selector/walker
  • Build->customize: list available build variables
  • 50x faster light radius rendering
  • Light power is adjustable by mouse drag
  • Anisotropic textures filtering
  • Optional MSAA in viewports
  • New very fast entity names rendering system
  • Support 'stupid quake bug'
  • Arbitrary texture projections for brushes and curves
  • Fully working texture lock, supporting any affine transformation
  • Texture locking during vertex and edge manipulations
  • Brush resize (QE tool): reduce selected faces amount to most wanted ones
  • Support brush formats, as toggleable preference: Axial projection, Brush primitives, Valve 220
  • Autodetect brush type on map opening
  • Automatic AP, BP and Valve220 brush types conversion on map Import and Paste
  • New bbox styled manipulator, allowing any affine transform (move, rotate, scale, skew)
  • Incredible number of fixes and options

Q3Map2:

  • Allowed simultaneous samples+filter use, makes sense
  • -vertexscale
  • -novertex works, (0..1) sets globally
  • Fixed _clone _ins _instance (_clonename) functionality
  • -nolm - no lightmaps
  • -bouncecolorratio 0..1 (ratio of colorizing light sample by texture)
  • q3map_remapshader remaps anything fine, on all stages
  • Fixed model autoclip, added 20 new modes
  • Automatic map packager (complete Q3 support)
  • -brightness 0..alot, def 1: mimics q3map_lightmapBrightness, but globally + affects vertexlight
  • -contrast -255..255, def 0: lighting contrast
  • Report full / full pk3 path on file syntax errors
  • New area lights backsplash algorithm (utilizing area lights instead of point ones)
  • -backsplash (float)scale (float)distance: adjust area lights globally (real area lights have no backsplash)
  • New slightly less careful, but much faster lightmaps packing algorithm (allocating... process)
  • Valve220 mapformat autodetection and support
  • Correct .obj and .mtl loading
  • Guessing model shaders paths
see changelog-custom.txt for more

COMPILING