From b95562a2ff37cd62c0073de11ba45fefcadae1fb Mon Sep 17 00:00:00 2001 From: Neerti Date: Sat, 10 Feb 2018 07:16:56 -0500 Subject: [PATCH] Planetary Lighting Optimization Attempt Changes how lighting is applied to the Surface. The current method works by making every tile glow in a specific color and intensity. The issue is that when it is time to change the color/intensity, it can take the light controller a considerable amount of time for it to update every tile (estimated to be around 14,000 tiles), which can take a minute or two for the lighting controller to finish. New method is to have a special light source for the surface, with different properties to the 'regular' light source that most things use for making light. The special version doesn't care about line of sight or lighting falloff. This special light source is applied to a series of invisible 'sun' objects that get generated as the planetary controller gets created. When the lights need to change, the lighting controller has to change a much smaller group of objects instead of literally every outdoor tile. --- code/controllers/Processes/planet.dm | 8 ++ code/modules/lighting/lighting_atom.dm | 19 ++++- code/modules/lighting/lighting_source.dm | 100 +++++++++++++++++++++++ code/modules/planet/planet.dm | 19 ++++- icons/effects/effects.dmi | Bin 396498 -> 396837 bytes 5 files changed, 144 insertions(+), 2 deletions(-) diff --git a/code/controllers/Processes/planet.dm b/code/controllers/Processes/planet.dm index f9fd57f788..63c7c8ad53 100644 --- a/code/controllers/Processes/planet.dm +++ b/code/controllers/Processes/planet.dm @@ -61,6 +61,13 @@ var/datum/controller/process/planet/planet_controller = null if(P.needs_work & PLANET_PROCESS_SUN) P.needs_work &= ~PLANET_PROCESS_SUN //Redraw sun overlay + var/new_brightness = P.sun["brightness"] + var/new_color = P.sun["color"] + for(var/A in P.planet_suns) + var/obj/effect/sun/sun = A + sun.set_light(sun.light_range, new_brightness, new_color) + SCHECK + /* var/new_range = P.sun["range"] var/new_brightness = P.sun["brightness"] var/new_color = P.sun["color"] @@ -68,6 +75,7 @@ var/datum/controller/process/planet/planet_controller = null var/turf/simulated/turf = T turf.set_light(new_range, new_brightness, new_color) SCHECK + */ //Temperature needs updating if(P.needs_work & PLANET_PROCESS_TEMP) diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm index 8700a65c6e..2742d7590b 100644 --- a/code/modules/lighting/lighting_atom.dm +++ b/code/modules/lighting/lighting_atom.dm @@ -5,6 +5,7 @@ var/datum/light_source/light var/list/light_sources + var/light_datum_type = /datum/light_source // Nonsensical value for l_color default, so we can detect if it gets set to null. #define NONSENSICAL_VALUE -99999 @@ -41,7 +42,7 @@ if(light) light.update(.) else - light = new /datum/light_source(src, .) + light = new light_datum_type(src, .) /atom/New() . = ..() @@ -109,3 +110,19 @@ /obj/item/dropped() . = ..() update_light() + +/obj/effect/sun + name = "sun" + desc ="SUNTHESUNTHESUNTHESUNTHE" + icon = 'icons/effects/effects.dmi' + icon_state = "sun" + invisibility = 100 + anchored = TRUE + light_datum_type = /datum/light_source/sun + light_color = "#FFFFFF" + light_range = 65 + +/obj/effect/sun/Destroy(force = FALSE) + if(!force) + return QDEL_HINT_LETMELIVE + return ..() \ No newline at end of file diff --git a/code/modules/lighting/lighting_source.dm b/code/modules/lighting/lighting_source.dm index d878d8c4b6..e4d58466f2 100644 --- a/code/modules/lighting/lighting_source.dm +++ b/code/modules/lighting/lighting_source.dm @@ -284,6 +284,106 @@ C.affecting -= src effect_str -= C +#define APPLY_CORNER_NO_FALLOFF(C) \ + . = 1; \ + . *= light_power; \ + \ + effect_str[C] = .; \ + \ + C.update_lumcount \ + ( \ + . * applied_lum_r, \ + . * applied_lum_g, \ + . * applied_lum_b \ + ); + +// Special snowflake subtype used to light the Surface. +// The big differences is that this ignores FOV calculations (and as such doesn't use DVIEW) and instead applies it to all +// 'outdoor' turfs within range. +// Another difference is it has no falloff, meaning that it creates a big flat square instead of a circle that gets darker towards the edges. +/datum/light_source/sun + +/datum/light_source/sun/recalc_corner(var/datum/lighting_corner/C) + if(effect_str.Find(C)) // Already have one. + REMOVE_CORNER(C) + + APPLY_CORNER_NO_FALLOFF(C) + +/datum/light_source/sun/apply_lum() + var/static/update_gen = 1 + applied = 1 + + // Keep track of the last applied lum values so that the lighting can be reversed + applied_lum_r = lum_r + applied_lum_g = lum_g + applied_lum_b = lum_b + + for(var/thing in RANGE_TURFS(light_range, source_turf) ) + var/turf/T = thing + if(!T.lighting_corners_initialised) + T.generate_missing_corners() + + if(!T.outdoors) + continue + + for(var/datum/lighting_corner/C in T.get_corners()) + if(C.update_gen == update_gen) + continue + + C.update_gen = update_gen + C.affecting += src + + if(!C.active) + effect_str[C] = 0 + continue + + APPLY_CORNER_NO_FALLOFF(C) + + if(!T.affecting_lights) + T.affecting_lights = list() + + T.affecting_lights += src + affecting_turfs += T + + update_gen++ + +/datum/light_source/sun/smart_vis_update() + var/list/datum/lighting_corner/corners = list() + var/list/turf/turfs = list() + + for(var/thing in RANGE_TURFS(light_range, source_turf) ) + var/turf/T = thing + if(!T.lighting_corners_initialised) + T.generate_missing_corners() + corners |= T.get_corners() + turfs += T + + var/list/L = turfs - affecting_turfs // New turfs, add us to the affecting lights of them. + affecting_turfs += L + for(var/turf/T in L) + if(!T.affecting_lights) + T.affecting_lights = list(src) + else + T.affecting_lights += src + + L = affecting_turfs - turfs // Now-gone turfs, remove us from the affecting lights. + affecting_turfs -= L + for(var/turf/T in L) + T.affecting_lights -= src + + for(var/datum/lighting_corner/C in corners - effect_str) // New corners + C.affecting += src + if(!C.active) + effect_str[C] = 0 + continue + + APPLY_CORNER_NO_FALLOFF(C) + + for(var/datum/lighting_corner/C in effect_str - corners) // Old, now gone, corners. + REMOVE_CORNER(C) + C.affecting -= src + effect_str -= C + #undef effect_update #undef LUM_FALLOFF #undef REMOVE_CORNER diff --git a/code/modules/planet/planet.dm b/code/modules/planet/planet.dm index 97c7847fde..59183c8a98 100644 --- a/code/modules/planet/planet.dm +++ b/code/modules/planet/planet.dm @@ -13,12 +13,13 @@ var/sun_position = 0 // 0 means midnight, 1 means noon. var/list/sun = list("range","brightness","color") - var/expected_z_levels = list() + var/list/expected_z_levels = list() var/turf/unsimulated/wall/planetary/planetary_wall_type = /turf/unsimulated/wall/planetary var/list/turf/simulated/floor/planet_floors = list() var/list/turf/unsimulated/wall/planetary/planet_walls = list() + var/list/obj/effect/sun/planet_suns = list() var/needs_work = 0 // Bitflags to signal to the planet controller these need (properly deferrable) work. Flags defined in controller. @@ -27,6 +28,8 @@ ..() weather_holder = new(src) current_time = current_time.make_random_time() + if(expected_z_levels.len) + build_suns() update_sun() /datum/planet/proc/process(amount) @@ -50,3 +53,17 @@ sun["color"] = new_color needs_work |= PLANET_PROCESS_SUN +/datum/planet/proc/build_suns() + var/desired_suns_per_row = 15 + + var/sun_spacing = Ceiling(max(world.maxx, world.maxy) / desired_suns_per_row) + + for(var/z_level in expected_z_levels) // Z + for(var/i = 1 to desired_suns_per_row) // X + for(var/j = 1 to desired_suns_per_row) // Y + var/turf/T = locate(i * sun_spacing, j * sun_spacing, z_level) + if(T) // We might've walked off the map if this is null. + var/obj/effect/sun/new_sun = new(T) + new_sun.light_range = sun_spacing-1 + planet_suns += new_sun + diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index adcd4fbee2c4c547797e51230d64150bc89bd1ac..93ff2d2ff9fa6d4d435003dbce488ac899e73a7a 100644 GIT binary patch delta 21629 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 COlJWA delta 21287 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�P(yLcLUBVWmg3Y|%^1!ooash+g*Vnh~ zYS5MEQ^xvhD`1-*Pjt0-s~LK3>M{byUa!|P4jnuggTfW_6yCJ`8zezu#Oh9#q12)UPE>MIk_ezbUo5sS>GpI!VJxk#PX3v2Y&4*Fp$#|s z>dt*$5I#y?zI=HcRPWY`wpvWRsR*@mCyUkm@6fa{eN_5Q5S}{Na7WqN*#+a+E}3+q z39nh7&2lSe8HA_jU0R;9Jg{N(G;Df#NY?y7)`j@swVY?jWf;$Q?5j7<`4Wf#D8Bmk z;Q56wIyxpn>#NISWJ}y)K!T$>8&C!=L{ZJ%L7}Ip!A>)NcwUL&>ti-(OoU zH%Kg+)5}b)f7Vmmy#xQ_9I&DDi5P^W5iu3pco54kx_!tO2n1R5=37p-naP+Y?U3os z5Dw>$a4uZKa2yyMym0a2NP07sIhlg_vki-*j&d5g0iLn*#*IBGe5D(eu-p8#9~KHw zMPJD-lLL{9t8zyHblj6`C1?oY?r-ARbffv@%Mb*I`WtXRwBRb~8yrl=3-C)ofMR!{ zVxXGAh8(?!1BuBW3FH7g?rR#%82_}i;USmoJ>weVQLN$uy>$lYwM6??ogAJ;h9Qh}5e{D!y=eR^$#) zhYIA7jB2YIb5EHtUi_HR3az~>+WB8?D$JjE$r*g}v