Ports /tg/ and CM planemasters to replace our renderers. (#21458)

Part one of our nefarious plans to destroy lag forever, and also
accomplish some cool shit.

This replaces our renderer system with plane masters, this will also be
used to turn skyboxes into backdrops and thus totally remove skybox
updating lag. Additionally, this will let us manipulate entire planes
very easily to do all sorts of zany shit. All credit goes to the
original coders, this is some seriously cool stuff.

Also fixes some bizarre smoothing behaviour, reduces updateoverlays
calls since now not every single structure in the game tries smoothing
with nothing.

<img width="1349" height="1349" alt="image"
src="https://github.com/user-attachments/assets/9b7cecd7-3c47-448b-9dd8-9b904640bf82"
/>
<img width="1349" height="1349" alt="image"
src="https://github.com/user-attachments/assets/647d75a2-1bff-45ca-ab92-0aea10631afd"
/>

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
This commit is contained in:
Matt Atlas
2025-10-16 11:39:15 +00:00
committed by GitHub
co-authored by Matt Atlas
parent e30443943a
commit cca0dfe7b6
83 changed files with 789 additions and 734 deletions
@@ -82,63 +82,3 @@
layer = BELOW_TABLE_LAYER
alpha = 128
//Spawner object
//Maybe we could pool them in and out
/obj/particle_emitter
name = ""
anchored = TRUE
mouse_opacity = 0
appearance_flags = PIXEL_SCALE
var/particle_type = null
/obj/particle_emitter/Initialize(mapload, time, _color)
. = ..()
if (particle_type)
particles = GLOB.all_particles[particle_type]
if (time > 0)
QDEL_IN(src, time)
color = _color
/obj/particle_emitter/heat
particle_type = "heat"
render_target = HEAT_EFFECT_TARGET
appearance_flags = PIXEL_SCALE | NO_CLIENT_COLOR
/obj/particle_emitter/heat/Initialize()
. = ..()
filters += filter(type = "blur", size = 1)
/obj/particle_emitter/heat/high
particle_type = "high heat"
/obj/particle_emitter/mist
particle_type = "mist"
layer = FIRE_LAYER
/obj/particle_emitter/mist/back
particle_type = "mist_back"
layer = BELOW_OBJ_LAYER
/obj/particle_emitter/mist/back/gas
render_target = COLD_EFFECT_BACK_TARGET
/obj/particle_emitter/mist/back/gas/Initialize(mapload, time, _color)
. = ..()
filters += filter(type="alpha", render_source = COLD_EFFECT_TARGET, flags = MASK_INVERSE)
//for cold gas effect
/obj/particle_emitter/mist/gas
render_target = COLD_EFFECT_TARGET
var/obj/particle_emitter/mist/back/b = /obj/particle_emitter/mist/back/gas
/obj/particle_emitter/mist/gas/Initialize(mapload, time, _color)
. = ..()
b = new b(null)
vis_contents += b