Roblox Studio's visual pipeline is confusing until it clicks
I spent about three weeks fighting with the default lighting setup before I realized the problem wasn't the tools — it was the order in which I was using them. Most people start by tweaking the SunRaysEffect or slapping a glow onto everything, which is backwards. The foundation has to be lighting first, then post-processing, then shader tweaks. If you skip that sequence, you will spend hours chasing visual artifacts that have nothing to do with your actual aesthetic choices. Here is how I actually set up a cohesive aesthetic build in Roblox Studio, including the parts the official documentation glosses over.
Aesthetic Roblox Studio Tutorial
The first thing you need to understand is that Roblox Studio handles lighting in two separate systems that fight each other if you let them. There is the built-in Lighting service, which controls ambient color, skybox rendering, and the sun's direction. Then there is the newer ExponentialHeightFog and volumetric fog system, which lives under the same Lighting service but renders on a completely different pass. I ran into a specific problem where my custom skybox colors looked totally wrong once I enabled height fog, and it took me about an hour to figure out that the fog was sampling the skybox texture at a different brightness than the raw image file. The workaround was turning down the fog's ColorIntensity property from the default 1.0 down to around 0.3, then rebalancing the ambient light to compensate. Without that adjustment, every exterior scene ended up looking washed out regardless of what skybox I used. For the actual lighting setup, start with the Lighting service properties. Set Ambient to something close to the sky color you are going for — not pure black, because that kills shadow detail and makes everything look flat. Set the OutdoorAmbient to roughly half the brightness of your desired final look, since the sun will add on top of it. The clock time matters more than people realize. A time between 17:00 and 18:30 gives you long shadows and warm tones without requiring any extra work. You can fine-tune from there, but starting in that window saves adjustment time. Next, configure the sun itself. The DirectionalLight inside Lighting controls shadow softness and color temperature. I keep the ShadowSoftness somewhere between 0.25 and 0.5. Anything lower and the shadows look like hard cutouts, which breaks immersion in most aesthetic scenes. Anything higher and you lose definition entirely. The Color property should match your skybox warmth — warm oranges for golden hour, cool blues for overcast or night scenes. Do not use pure white daylight unless you are going for a clinical look, because white shadows in Roblox read as sterile and lifeless on most displays.
After lighting is locked in, move to post-processing. This is where most people go too far. The Effects folder under Lighting contains ColorCorrectionEffect, Bloom, and the older SunRaysEffect. I recommend using only ColorCorrectionEffect and Bloom for a clean aesthetic build. Set Bloom's Threshold to around 0.9 and Strength to 0.4 or lower. The default Strength of 1.0 will make every bright surface bleed into its neighbors, which looks like a mistake rather than a style choice. For ColorCorrectionEffect, adjust Brightness in small increments — 0.05 at a time — and use the Saturation slider to desaturate slightly if your scene feels too vibrant. Aesthetic builds usually benefit from a Saturation value between 0.7 and 0.9, not the default 1.0. One counter-intuitive thing about Roblox's rendering is that putting lights directly on parts creates more problems than it solves for aesthetic purposes. PointLights and SpotLights in Roblox use a baked approximation that looks fine up close but falls apart at distance, especially on mobile devices where they get culled entirely. Instead of placing lights everywhere, I use a single well-placed DirectionalLight for the main fill and rely on surface materials to do the heavy lifting. Materials like Neon, SmoothPlastic, and Translucent give you natural glow and light diffusion without any performance cost. If a specific area needs to feel brighter, adjust the material's Brightness property rather than adding another light source. This keeps your frame rate stable across all platforms. The real edge case I hit involved reflections and the ReflectionEffect. When you enable ReflectionEffect with a high Intensity value, Roblox tries to render a cubemap of the entire scene every frame. On map builds with more than roughly 500 unique parts, this drops mobile framerates to single digits. The workaround is to set ReflectionEffect's Enabled property to false and instead use a pre-baked reflection probe via a Decal on specific reflective surfaces. It is not perfect — it does not update dynamically — but it looks acceptable for static aesthetic scenes and runs on nearly every device. I also learned the hard way that ReflectionEffect's Color property should match your skybox tint, or the reflections will look completely disconnected from the rest of the scene. A mismatched reflection color is one of the fastest ways to make a polished scene look amateur.
Get the Full Details

For interior spaces, the approach changes slightly. Interior lighting relies heavily on the Ambient property of the Lighting service and on SurfaceLights on ceiling or wall parts. SurfaceLights are cheaper than PointLights because they only affect a cone-shaped volume instead of a full sphere. Use a warm color temperature around 3200K to 4000K for interiors that feel cozy, and push toward 5000K to 6500K for sterile or clinical aesthetics. The Range property on SurfaceLights is where people waste performance — setting it to 50 when your room is 20 studs wide means the light is calculating collision and fade for empty space outside your build. Keep Range at about 1.5 times the farthest distance the light needs to reach. If you are building specifically for an aesthetic Roblox Studio Tutorial workflow, the most important habit is checking your work on an actual device before finalizing anything. The Roblox Studio preview window runs on your PC's GPU and does not represent mobile or console rendering accurately. Colors shift, bloom intensifies, and shadow softness changes between platforms. I usually export a build test and run it on my phone before considering a lighting setup done. The difference between the editor view and mobile output is where most aesthetic choices either succeed or completely fall apart. There is no single correct palette for an aesthetic build. The systems I described above are just the controls available to you. The actual look comes from how those controls interact with your specific build materials, your chosen skybox, and the intended mood of the experience. Once you understand which property affects which rendering pass, you stop guessing and start constructing intentional visuals instead of spraying effects and hoping they look good together.