aura_env.grad = function(c)
	--c expected as [0, 1]
	if c > 0.5 then
		c = 1 - (2 * (c - 0.5))
		return c, 1, 0, 1
	else
		c = c * 2
		return 1, c, 0, 1
	end
end

local function hexgrad(val, min, max)
	local function tohex(input)
		local output = string.format("%x", input * 255)
		return output
	end
	local function grad(c, min, max)
		c = (((max - c) / (max - min)) * 1)
		if c > 0.5 then
			c = 1 - (2 * (c - 0.5))
			return c, 1, 0, 1
		else
			c = c * 2
			return 1, c, 0, 1
		end
	end
	local color1, color2, color3, color4 = 0, 0, 0, 0
	color1, color2, color3, color4 = grad(val, min, max)
	color1, color2, color3, color4 = tohex(color1), tohex(color2), tohex(color3), tohex(color4)
	color1, color2, color3, color4 = tostring(color1), tostring(color2), tostring(color3), tostring(color4)
	if string.len(color1) == 1 then color1 = "0" .. color1 end
	if string.len(color2) == 1 then color2 = "0" .. color2 end
	if string.len(color3) == 1 then color3 = "0" .. color3 end
	if string.len(color4) == 1 then color4 = "0" .. color4 end
	local color = "\124c" .. color4 .. color1 .. color2 .. color3
	return color
end

local function RGBtoHex(rgb)
	local hexadecimal = "FF"
	for key, value in pairs(rgb) do
		local hex = ""

		while value > 0 do
			local index = math.fmod(value, 16) + 1
			value = math.floor(value / 16)
			hex = string.sub("0123456789ABCDEF", index, index) .. hex
		end

		if string.len(hex) == 0 then
			hex = "00"
		elseif string.len(hex) == 1 then
			hex = "0" .. hex
		end

		hexadecimal = hexadecimal .. hex
	end
	return hexadecimal
end
