Skip to content

Commit b251857

Browse files
authored
fix bloom the right way (#1011)
* fix bloom the right way * ok i guess
1 parent 70dc242 commit b251857

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

code/modules/lighting/lighting_corner.dm

+21-18
Original file line numberDiff line numberDiff line change
@@ -99,17 +99,6 @@
9999
lum_g += delta_g
100100
lum_b += delta_b
101101

102-
add_r = clamp((lum_r - 1.1) * 0.3, 0, 0.22)
103-
add_g = clamp((lum_g - 1.1) * 0.3, 0, 0.22)
104-
add_b = clamp((lum_b - 1.1) * 0.3, 0, 0.22)
105-
106-
// Client-shredding, does not cull any additive overlays.
107-
//applying_additive = add_r || add_g || add_b
108-
// Cull additive overlays that would be below 0.03 alpha in any color.
109-
applying_additive = max(add_r, add_g, add_b) > 0.03
110-
// Cull additive overlays whose color alpha sum is lower than 0.03
111-
//applying_additive = (add_r + add_g + add_b) > 0.03
112-
113102
if (!needs_update)
114103
needs_update = TRUE
115104
SSlighting.corners_queue += src
@@ -125,9 +114,13 @@
125114
if (largest_color_luminosity > 1)
126115
. = 1 / largest_color_luminosity
127116

128-
// var/old_r = cache_r
129-
// var/old_g = cache_g
130-
// var/old_b = cache_b
117+
var/old_r = cache_r
118+
var/old_g = cache_g
119+
var/old_b = cache_b
120+
121+
var/old_add_r = add_r
122+
var/old_add_g = add_g
123+
var/old_add_b = add_b
131124

132125
#if LIGHTING_SOFT_THRESHOLD != 0
133126
else if (largest_color_luminosity < LIGHTING_SOFT_THRESHOLD)
@@ -142,14 +135,24 @@
142135
cache_b = round(lum_b * ., LIGHTING_ROUND_VALUE)
143136
#endif
144137

138+
add_r = clamp((lum_r - 1.1) * 0.3, 0, 0.22)
139+
add_g = clamp((lum_g - 1.1) * 0.3, 0, 0.22)
140+
add_b = clamp((lum_b - 1.1) * 0.3, 0, 0.22)
141+
142+
// Client-shredding, does not cull any additive overlays.
143+
//applying_additive = add_r || add_g || add_b
144+
// Cull additive overlays that would be below 0.03 alpha in any color.
145+
applying_additive = max(add_r, add_g, add_b) > 0.03
146+
// Cull additive overlays whose color alpha sum is lower than 0.03
147+
//applying_additive = (add_r + add_g + add_b) > 0.03
148+
145149
src.largest_color_luminosity = round(largest_color_luminosity, LIGHTING_ROUND_VALUE)
146150
#ifdef VISUALIZE_LIGHT_UPDATES
147-
if(!SSlighting.allow_duped_corners && old_r == cache_r && old_g == cache_g && old_b == cache_b)
151+
if(!SSlighting.allow_duped_corners && old_r == cache_r && old_g == cache_g && old_b == cache_b && old_add_r == add_r && old_add_b == add_b && old_add_g == add_g)
148152
return
149153
#else
150-
// For some reason, preventing duped corners breaks bloom, so it's disabled.
151-
// if(old_r == cache_r && old_g == cache_g && old_b == cache_b)
152-
// return
154+
if(old_r == cache_r && old_g == cache_g && old_b == cache_b && old_add_r == add_r && old_add_b == add_b && old_add_g == add_g)
155+
return
153156
#endif
154157

155158
var/datum/lighting_object/lighting_object = master_NE?.lighting_object

0 commit comments

Comments
 (0)