Tried to make a custom skybox.
It looked like a box.
Couldnt find tool to make one properly.
So I used LOVE2D engine to write a quick generator to get proper gradient for the top and side images (calculate pixel coordinate as it would be in world, set color accordingly), complete with dithering to eliminate banding.
local text="" function love.draw() love.graphics.print(text, 400, 300) end function love.update(dt) end local r,g,b=31,182,255 local w,h=512,512 local dithering=64 local imageData=love.image.newImageData(w,h) for x=0, w-1 do for y=0,h-1 do local px,py,pz=(x-w/2),(y-h/2), (w/2) local magnitude = math.sqrt(px^2 + py^2 + pz^2) px=px/magnitude py=py/magnitude pz=pz/magnitude local gradient = (py + 1)/2.0 --exact color local er,eg,eb = 255*gradient + r*(1-gradient), 255*gradient + g*(1-gradient), 255*gradient + b*(1-gradient) --quantified colors local r1,g1,b1 = math.floor(er),math.floor(eg),math.floor(eb) --previous quantization local r2,g2,b2 = math.ceil(er),math.ceil(eg),math.ceil(eb) --next quantization local wr,wg,wb = er-r1, eg-g1, eb-b1 --weights --Choose which quantization to use randomly (dither) local pr,pg,pb = (math.random()+0.5)>wr,(math.random()+0.5)>wg,(math.random()+0.5)>wb imageData:setPixel(x,y,pr and r1 or r2, pg and g1 or g2, pb and b1 or b2,255) end end imageData:encode("png","SkyBoxGradientSide.png") for x=0, w-1 do for y=0,h-1 do local px,py,pz=(x-w/2),(h/2), (y-w/2) local magnitude = math.sqrt(px^2 + py^2 + pz^2) px=px/magnitude py=py/magnitude pz=pz/magnitude local gradient = 1 - (py + 1)/2.0 --exact color local er,eg,eb = 255*gradient + r*(1-gradient), 255*gradient + g*(1-gradient), 255*gradient + b*(1-gradient) --quantified colors local r1,g1,b1 = math.floor(er),math.floor(eg),math.floor(eb) --previous quantization local r2,g2,b2 = math.ceil(er),math.ceil(eg),math.ceil(eb) --next quantization local wr,wg,wb = er-r1, eg-g1, eb-b1 --weights --Choose which quantization to use randomly (dither) local pr,pg,pb = (math.random()+0.5)>wr,(math.random()+0.5)>wg,(math.random()+0.5)>wb imageData:setPixel(x,y,pr and r2 or r1, pg and g2 or g1, pb and b2 or b1,255) end end imageData:encode("png","SkyBoxGradientTop.png")
Well, it turns out, that its actually roblox making it look like a box when they do the day/night gradient thing
Im guessing they also break my dithering because theres very obvious banding ingame. Maybe theyre compressing my images? (I uploaded as 512*512) The dithering will not really work if theyre blurred or jpg-ified or something, I dont think. (could just be decreased brightness tho)
edit:
Switched to 1024*1024 and fixed the dithering so its now some heavy noise, but still gives banding in studio Not a big issue tho