Speeds up client side rendering of lighting by selectively swapping out full dark and full light tiles with easier to render options.

Visually no difference should be noticeable
This commit is contained in:
Incoming
2017-04-01 19:09:15 -04:00
parent 51f8fcce7b
commit eef57ac6b0
6 changed files with 52 additions and 13 deletions

View File

@@ -75,21 +75,50 @@
var/max = max(cr.cache_mx, cg.cache_mx, cb.cache_mx, ca.cache_mx)
color = list(
cr.cache_r, cr.cache_g, cr.cache_b, 0,
cg.cache_r, cg.cache_g, cg.cache_b, 0,
cb.cache_r, cb.cache_g, cb.cache_b, 0,
ca.cache_r, ca.cache_g, ca.cache_b, 0,
0, 0, 0, 1
)
var/rr = cr.cache_r
var/rg = cr.cache_g
var/rb = cr.cache_b
var/gr = cg.cache_r
var/gg = cg.cache_g
var/gb = cg.cache_b
var/br = cb.cache_r
var/bg = cb.cache_g
var/bb = cb.cache_b
var/ar = ca.cache_r
var/ag = ca.cache_g
var/ab = ca.cache_b
#if LIGHTING_SOFT_THRESHOLD != 0
luminosity = max > LIGHTING_SOFT_THRESHOLD
var/set_luminosity = max > LIGHTING_SOFT_THRESHOLD
#else
// Because of floating points™️, it won't even be a flat 0.
// Because of floating points<EFBFBD>?, it won't even be a flat 0.
// This number is mostly arbitrary.
luminosity = max > 1e-6
var/set_luminosity = max > 1e-6
#endif
if((rr & gr & br & ar) && (rg + gg + bg + ag + rb + gb + bb + ab == 8))
//anything that passes the first case is very likely to pass the second, and addition is a little faster in this case
icon_state = "transparent"
color = null
else
icon_state = null
if(!set_luminosity)
color = "#00000000" //RGBA
else
color = list(
rr, rg, rb, 00,
gr, gg, gb, 00,
br, bg, bb, 00,
ar, ag, ab, 00,
00, 00, 00, 01
)
luminosity = set_luminosity
// Variety of overrides so the overlays don't get affected by weird things.
/atom/movable/lighting_object/ex_act(severity)
@@ -111,4 +140,4 @@
// Override here to prevent things accidentally moving around overlays.
/atom/movable/lighting_object/forceMove(atom/destination, var/no_tp=FALSE, var/harderforce = FALSE)
if(harderforce)
. = ..()
. = ..()