Commit Graph

156 Commits

Author SHA1 Message Date
Eric Wasylishen d4d63efd87 light/trace.c: Adjust the trace algorithm to match that in q3map.
Fixes some weird artifacts I noticed when experimenting with lava surface lights in jam6_ericwtronyn.map
2015-09-25 00:13:25 -06:00
Eric Wasylishen 532704f54e light: fix duplicate surface lights being generated 2015-09-14 22:16:53 -06:00
Eric Wasylishen 1cf7af0c17 light: remove unused FaceArea function 2015-09-12 19:07:58 -06:00
Eric Wasylishen 8e29319309 light: avoid doing the trace twice when there is no obstruction 2015-09-12 18:53:56 -06:00
Eric Wasylishen 46cbcfd12b light: add -dirtangle flag to control dirtmapping cone angle 2015-08-28 20:22:54 -06:00
Eric Wasylishen 3c918db489 light: add -onlyents switch 2015-08-20 12:14:13 -06:00
Eric Wasylishen b345dccfe7 light: disable deviance if samples <= 1 or deviance <= 0. 2015-08-14 14:28:53 -06:00
Eric Wasylishen 79d1871e56 light: document -surflight_subdivide key 2015-08-10 10:04:25 -06:00
Eric Wasylishen 72a5885437 light: fix crash in "Bad texture axes on face:" error. Print more detailed face info. 2015-08-09 12:27:55 -06:00
Eric Wasylishen 18dce775dd light: fix lighting of rotatating entities (hiprotate). the model offset was not being used correctly.
todo: the trace code needs to take the model offset into account too, so shadow casting and self-shadowing are broken for hiprotate.
2015-08-08 21:37:58 -06:00
Eric Wasylishen b68ba8c983 light: average the color to get the value to write to the .bsp lightmap.
This avoids issues with some engines that require the lit and internal lightmap to have the same intensity. (MarkV, some QW engines).
Previously, if you used low-value colors (e.g. "0.2 0 0"), the .bsp lightmap and .lit file could have vastly different brightness.
2015-08-05 13:47:04 -06:00
Eric Wasylishen bc0e1778dc light: allow negative surface offsets for niche use 2015-08-05 12:10:17 -06:00
Eric Wasylishen 3005504fe5 vis, light: set low process priority on windows 2015-08-05 12:10:17 -06:00
Eric Wasylishen 5302a3b539 light: add -surflight_subdivide command line flag to control subdivision size 2015-08-05 12:10:14 -06:00
Eric Wasylishen 6004e1b94c light: log total number of lights including generated ones 2015-08-05 12:08:55 -06:00
Eric Wasylishen f24b1a1101 light: update usage text 2015-07-13 15:07:46 -06:00
Eric Wasylishen a56dad56c2 light: add logprint for "_anglescale"/"_anglesense" worldspawn key (to control angle sensitivity of sunlight) 2015-07-13 14:33:21 -06:00
Eric Wasylishen e9f240b623 light: .lux file support from Spike 2015-07-09 16:34:12 -06:00
Eric Wasylishen a219d3e0a0 light: WriteEntitiesToString: add explanation from Spike 2015-07-09 16:34:06 -06:00
Eric Wasylishen 6ca1c6957a light: fence texture tracing: fix handling of negative texture coords 2015-07-09 16:33:44 -06:00
Eric Wasylishen e242a9c910 light: Add gamma control with -gamma flag and "_gamma" key 2015-07-09 16:33:07 -06:00
Eric Wasylishen 26a03ace45 light: optimization: avoid iterating over non-light entities in light thread. 2015-06-02 00:51:37 -06:00
Eric Wasylishen 4105bc505f light: optimization: avoid unnecessary memsets, from spike 2015-06-01 23:14:19 -06:00
Eric Wasylishen e0d3f872ff light: rewrite part of WriteLightmaps for more readable code 2015-05-31 12:27:40 -06:00
Eric Wasylishen c39971bb94 light: rename -dirty flag to -dirt for consistency 2015-05-19 12:11:17 -06:00
Eric Wasylishen ab78c07320 light: make fence texture tracing opt-in 2015-05-16 23:33:39 -06:00
Eric Wasylishen 1996bce56d light: support switchable lights with any light* classname, not just "light" 2015-05-15 09:54:19 -06:00
Eric Wasylishen 8bde00a732 light: ensure "_surface" value is case-insensitive 2015-05-14 17:42:26 -06:00
Eric Wasylishen 3a109ac84d build: split up cmake build system into subprojects.
-DDOUBLEVEC_T now correctly used for qbsp only.
2015-05-05 12:34:39 -06:00
Eric Wasylishen 86d3aa990d light: remove "Jittering" debug message 2015-05-04 14:13:18 -06:00
Eric Wasylishen 0a6d3f4167 light: fix hang when using _deviance, make _samples default to 16 when _deviance is set. 2015-05-01 02:17:29 -06:00
Eric Wasylishen d2840f4cba light: fix for always generating a .lit file when surface lights are used 2015-04-30 14:54:23 -06:00
Eric Wasylishen 54e7c2ab8e light: fence texture tracing 2015-04-27 00:26:42 -06:00
Eric Wasylishen a33c4b0136 light: surface light support via "_surface" "texturename" light key 2015-04-26 02:24:57 -06:00
Eric Wasylishen 59bb786880 light: remove unused bsp_origin constant 2015-04-25 21:18:28 -06:00
Eric Wasylishen aa5dfa8b19 light: respect "_dirt" "-1" bmodel key in -dirtdebug mode 2015-04-25 20:46:05 -06:00
Eric Wasylishen 6fe67cd2fb light: allow setting _dist and _range in worldspawn 2015-04-25 20:46:00 -06:00
Eric Wasylishen ef471ee44f Support "_dirt" "-1" on bmodels to disable dirtmapping 2015-04-25 20:45:54 -06:00
Eric Wasylishen be8c42460c _sunlight2 (sky light, light dome) support from q3map2
_sunlight penumbra (deviance) from q3map2
light penumbra from q3map2
2015-04-25 20:45:44 -06:00
Eric Wasylishen 741d341332 Dirtmapping (ambient occlusion) from q3map2 2015-04-25 20:45:32 -06:00
Eric Wasylishen 2d5ea4fe73 light: accept _sunlight_mangle as an alternative for _sun_mangle 2015-03-27 00:35:28 -06:00
Eric Wasylishen 2cd885729a light: MatchTargets: disable copying 'style' key/value to the targeting entity. Don't see any reason why that would be done. 2015-03-27 00:33:32 -06:00
Eric Wasylishen c51326e8b0 trace.c: Undo part of cc36d8e that flipped the signs of ON_EPSILON for one of the checks in the TraceLine.
This fixes cracks in sunlight shadows spotted by Lunaran, and greatly improves the AO quality
2015-02-05 11:36:59 -07:00
Eric Wasylishen 11678eaa74 trace.c: fix bug in determining hitpoint->point 2015-02-05 11:35:15 -07:00
Eric Wasylishen 24c6b9524a _color support: support values in the range 0-1 by automatically scaling them to 0-255 2015-02-05 11:33:21 -07:00
Eric Wasylishen 4df394f9fe light: Increase precision of lightmap extents calculations
This bug is a counterpart to this bug in quakespasm:
   https://sourceforge.net/p/quakespasm/patches/15/

If the precision of the calculation in WorldToTexCoord done by ‘light’
is significantly different than the precision of the same calculation
in the engine, you can get corrupted lightmaps. The problem affects
light when it’s built as something other than vanilla 32-bit
x86. (e.g. x86_64 on a mac).

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2014-06-30 12:58:30 +09:30
Kevin Shanahan d68748d1d8 light: fix minlight clamping for coloured lights
Colours need to be scaled correctly by the light intensity.
Thanks to Mechtech for reporting this issue.

Reported-by: Paul R <automan1001@yahoo.com>
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2014-02-15 18:56:44 +10:30
Kevin Shanahan 4b1e3aec1a light, vis, bsputil, bspinfo: Add BSP2 support
Add BSP2 support to the remaining utils.  Since these share the common
bspfile.[ch] files, it was more effort than is justifiable to break this
into multiple staged patches - so you just get this disgustingly big
commit instead.  Here is basically what was done:

 * Modify the bspdata_t struct with a union of the two bsp formats
 * Modify the tools to use bsp2_t for all internal processing
 * Split out the byte swapping routines for the different bsp data types
 * Add simple (although verbose) code to convert bsp29 <-> bsp2

Hundreds of lines added to bspfile.c, but mostly trivial stuff.  The tools
internally had little modification except to substitute the bsp2 type
names.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-09-25 15:18:50 +09:30
Kevin Shanahan e970bea8c7 common: save the bsp version in the bspdata struct
Adjust the Load and Write API functions as appropriate.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-08-22 13:25:47 +09:30
Kevin Shanahan 89abf25218 common: convert all tools to instanced bsp data
Transition all tools to access the BSP data via the bspdata struct instead
of the shared globals.  Remove the compatibility code from bspfile which
copied the global values to/from the instanced bspdata struct.

Mostly the changes just involved passing along the bspdata struct to the
various functions which needed to reference the data.  TraceLine and
MakeTNodes in light got some extra changes so that we cache the node
dplane pointer and remove the need to pass the bspdata struct to every
trace operation!

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-08-22 11:01:08 +09:30