Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local fade_speed = 5
- -- if you're not in an area, this will apply instead (like if you're in space and not on a planet)
- local fallback =
- {
- color_mul = Vector(1,1,1),
- color_add = Vector(0,0,0),
- color_brightness = 0,
- color_contrast = 1,
- color_saturation = 2,
- }
- local locations =
- {
- {
- location = Vector(7625.0327148438, 7992.2504882812, -7691.0395507812),
- radius = 500,
- params =
- {
- color_mul = Vector(1,1,1),
- color_add = Vector(0,0,0),
- color_brightness = 0.5,
- color_contrast = 1,
- color_saturation = 1,
- bloom_multiply = 0.1,
- bloom_darken = 0,
- bloom_color_mul = Vector(1,1,1),
- bloom_size = Vector(1,1),
- bloom_saturation = 10,
- bloom_passes = 1,
- sharpen_contrast = 5,
- sharpen_distance = 5,
- motionblur_draw_alpha = 0.5,
- }
- },
- {
- location = Vector(10274.5546875, 7951.13671875, -7501.1787109375),
- radius = 500,
- params =
- {
- color_mul = Vector(1,1,1),
- color_add = Vector(0,0,0),
- color_brightness = 0.5,
- color_contrast = 1,
- color_saturation = -1,
- bloom_multiply = 0.1,
- bloom_darken = 0,
- bloom_color_mul = Vector(1,1,1),
- bloom_size = Vector(1,1),
- bloom_saturation = 10,
- bloom_passes = 1,
- sharpen_contrast = 5,
- sharpen_distance = 5,
- motionblur_draw_alpha = 0.5,
- }
- },
- }
- table.insert(locations, 1, {params = fallback})
- for key, data in pairs(locations) do
- local temp = {}
- temp.params = {}
- temp.radius = data.radius
- temp.location = data.location
- temp.params.color = {}
- local p = temp.params.color
- p["$pp_colour_addr"] = data.params.color_add.r or 0
- p["$pp_colour_addg"] = data.params.color_add.g or 0
- p["$pp_colour_addb"] = data.params.color_add.b or 0
- p["$pp_colour_mulr"] = data.params.color_mul.r or 1
- p["$pp_colour_mulg"] = data.params.color_mul.g or 1
- p["$pp_colour_mulb"] = data.params.color_mul.b or 1
- p["$pp_colour_brightness"] = data.params.color_brightness or 0
- p["$pp_colour_contrast"] = data.params.color_contrast or 1
- p["$pp_colour_colour"] = data.params.color_saturation or 1
- temp.params.bloom = {}
- local p = temp.params.bloom
- data.params.bloom_size = data.params.bloom_size or Vector(1,1)
- data.params.bloom_color_mul = data.params.bloom_color_mul or Vector(1,1,1)
- p[1] = data.params.bloom_darken or 1
- p[2] = data.params.bloom_multiply or 1
- p[3] = data.params.bloom_size.x
- p[4] = data.params.bloom_size.y
- p[5] = data.params.bloom_passes or 1
- p[6] = data.params.bloom_saturation or 1
- p[7] = data.params.bloom_color_mul.r
- p[8] = data.params.bloom_color_mul.g
- p[9] = data.params.bloom_color_mul.b
- temp.params.sharpen = {}
- local p = temp.params.sharpen
- p[1] = data.params.sharpen_contrast or 0
- p[2] = data.params.sharpen_distance or 0
- temp.params.motionblur = {}
- local p = temp.params.motionblur
- p[1] = data.params.motionblur_add_alpha or 0
- p[2] = data.params.motionblur_draw_alpha or 0
- p[3] = 0 -- delay... is this useful for anything?
- locations[key] = temp
- end
- local origin = Vector()
- local params = {}
- hook.Add("RenderScene", "planet_colors", function(pos) origin = pos end)
- hook.Add("RenderScreenspaceEffects", "planet_colors", function()
- local delta = FrameTime() * fade_speed
- local cur_params = locations[1].params
- for key, data in pairs(locations) do
- if data.location and data.location:Distance(origin) < data.radius then
- cur_params = data.params
- break
- end
- end
- for mod, pp in pairs(cur_params) do
- params[mod] = params[mod] or {}
- for key, cur in pairs(pp) do
- local prev = params[mod][key] or 0
- params[mod][key] = (prev + (cur - prev) * delta)
- end
- end
- if params.bloom[1] ~= 1 and params.bloom[2] ~= 0 then
- DrawBloom(unpack(params.bloom))
- end
- if params.sharpen[1] ~= 0 then
- DrawSharpen(unpack(params.sharpen))
- end
- if params.motionblur[2] ~= 0 then
- DrawMotionBlur(unpack(params.motionblur))
- end
- DrawColorModify(params.color)
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement