ASYNC has been discountinued and moved.
https://devforum.roblox.com/t/immerse%F0%9F%8F%9D%EF%B8%8F-awesome-premade-lighting/1473657
You canât really make a âgraphics enhancer scriptâ, each game looks best if itâs tuned specifically for the game, using a âgraphics enhance scriptâ is the equivalent of enabling ReShade and changing SSR to max, it wouldnât look good.
Also jesus damn christ your âterms and conditionsâ are bigger than any plugin LMFAO

also sorry not sorry to break your heart but 4k is auto downscaled to 1024x1024

After looking through it I see a few problems that should be adressed.
-
Pointless comments (this terms and conditions madness)
This massive ugly block of comments detailing your âterms and conditionsâ is not useful and if this is in the public toolbox, everyone already knows it is open-source and free for the taking. -
Exessive scripts
From my count, there are nearly 10 scripts that are at most 10 - 15 lines of real code and the other 150 lines are the terms and conditions and various redundant variables if you just grouped all these 10 liners into one script.Because most of these 10 liners just initialize lighting objects and then set its properties, you can create the object in studio then get your scripts to parent them to lighting later which will make things a lot more clean.
-
A little advice, change the config folder to a config module script
This will make it cleaner and I think easier to access config options.

Side note there is a really poorly formatted local script
![]()
This is what it looks like.
wait()local a=CFrame.Angles;local b=math.asin;local c=math.atan;local d=game.Workspace.CurrentCamera;local e=game.Players.LocalPlayer;local f=e:GetMouse()local g=e.Character or e.CharacterAdded:wait()local h=g:WaitForChild("Head")local i=g:WaitForChild("Humanoid")local j=g:WaitForChild("HumanoidRootPart")local k=i.RigType.Value==0;local l=k and g:WaitForChild("Torso")or g:WaitForChild("UpperTorso")local m=k and l:WaitForChild("Neck")or h:WaitForChild("Neck")local n=not k and l:WaitForChild("Waist")local o=false;local p=false;local q=1;local r=0.6;local s=0.5;local t=0.4;local u=0.5;local v=m.C0;local w=not k and n.C0;m.MaxVelocity=1/3;if p==true then o=true;q=0;s=0 end;game:GetService("RunService").RenderStepped:Connect(function()local x=d.CoordinateFrame;if(k and g["Torso"]or g["UpperTorso"])~=nil and g["Head"]~=nil then local y=l.CFrame.lookVector;local z=h.CFrame.p;if k and m or m and n then if d.CameraSubject:IsDescendantOf(g)or d.CameraSubject:IsDescendantOf(e)then local A=nil;local B=nil;if not o then A=(h.CFrame.p-x.p).magnitude;B=h.CFrame.Y-x.Y;if not k then m.C0=m.C0:lerp(v*a(b(B/A)*r,-(z-x.p).Unit:Cross(y).Y*q,0),u/2)n.C0=n.C0:lerp(w*a(b(B/A)*t,-(z-x.p).Unit:Cross(y).Y*s,0),u/2)else m.C0=m.C0:lerp(v*a(-(b(B/A)*r),0,-(z-x.p).Unit:Cross(y).Y*q),u/2)end else local C=f.Hit.p;A=(h.CFrame.p-C).magnitude;B=h.CFrame.Y-C.Y;if not k then m.C0=m.C0:lerp(v*a(-(c(B/A)*r),(z-C).Unit:Cross(y).Y*q,0),u/2)n.C0=n.C0:lerp(w*a(-(c(B/A)*t),(z-C).Unit:Cross(y).Y*s,0),u/2)else m.C0=m.C0:lerp(v*a(c(B/A)*r,0,(z-C).Unit:Cross(y).Y*q),u/2)end end end end end;if p==true then i.AutoRotate=false;j.CFrame=j.CFrame:lerp(CFrame.new(j.Position,Vector3.new(f.Hit.p.x,j.Position.Y,f.Hit.p.z)),u/2)else i.AutoRotate=true end end)
-- MousetoBody was taking to much space, if you want the source use a lua minifier decompiler.
Itâs likely not malicious but you should never format anything like this. This is horrible.
ik
sigh if only 4k would work
Okay, thank you for tellling me in the next update I will fix.
u stole my name 
aside from the crucial backstabbing, yeah this looks awesome! Keep up the good work
wdym? I had async for over a year then i changed
The acronym âasyncâ is typically used in CS, and stands for âasynchronousâ. A quick glance gave me an expectation that this would be a complementary library, but later found that the naming has no correlation with what the plugin entails.
Could you explain your naming choice for this plugin?
Probably named it to look cool. Its just a false name. Nothing is Async here.
I named Async because async was my name at that time, I decided to use async again for this.
I agree with @KhanPython. The module name is quite confusing and I was expecting a Promise library or something like that from the name.
Everything is laid out really poorly, and you should probably change the name.
I recommend you change the name, not gonna repeat what @R0bl0x10501050 and @KhanPython said.
Just edit the client files, where Roblox is installed at, and add 4K skies. Now you have 4K skies locally on your PC. 
who the hell needs a ToS for a graphics enhancer
Itâs a direct copy-paste of the Apache V2 Licence it seems. Still not sure why such licence is needed if itâs free on the toolbox for anybody to take and use.
