World & rooms
Looks
Per-venue lighting, colour grading and surface colours in .ullook profiles.
How a room feels (warm and dim for a bar, bright and neutral for an office, cool at night) is set by look profiles: JSON files in Looks/*.ullook, chosen by venue tag.
A profile
json{
"profiles": [
{
"tag": "ynl_speakeasy",
"inherits": "bar",
"exposure_bias": 8.4,
"temperature": 5200,
"saturation": 1.02,
"contrast": 1.08,
"fixture_scale": 1.3,
"fixture_color": [1.0, 0.72, 0.45],
"bloom": 1.2,
"vignette": 0.24,
"wall_color": [0.55, 0.45, 0.4],
"night": { "exposure_bias": 8.2, "fixture_scale": 1.5 }
}
]
}
tagnames the venue;tags: [ … ]lets one profile cover a family of venues.inheritsbuilds on another profile; without it a new profile starts from*, the default.- A tag with no profile of its own uses
*. - Profiles merge: a later profile for the same tag (from your mod, or later in the same file) only changes the fields it sets.
nightholds values that override the day values after dark.
Fields
Exposure and grade
| Field | Meaning |
|---|---|
exposure_bias |
Exposure compensation in stops (the base rooms sit around 8–9) |
temperature |
White balance of the grade, in kelvin |
saturation, contrast |
1 = neutral |
global_gain, shadow_gain, highlight_gain |
[r, g, b] multipliers for the whole image, the shadows, the highlights |
bloom, bloom_threshold, bloom_size |
Glow around bright lights |
vignette |
Darkening of the corners |
indirect |
Strength of bounced light |
Lights
| Field | Meaning |
|---|---|
fixture_scale, fixture_color |
Brightness and colour of the room's lamps and ceiling lights |
window_scale, window_color |
Light through the windows |
fill_scale, fill_color |
A soft room-sized fill light |
sun_scale |
Scale of the sun while inside |
Surfaces and camera (with "art_direction": 1)
| Field | Meaning |
|---|---|
wall_color, accent_color, ceiling_color, floor_color |
[r, g, b] multiplied with the surface's texture |
floor_texture |
A named floor texture ("PolyHaven/laminate_floor_03") |
wall_texture |
A named wall texture for the plain wall tiles ("PolyHaven/brick_wall_13"); wall_color still multiplies it |
camera_height, camera_aim_height |
Where the room camera sits and aims, in cm |
Colours are linear RGB values from 0 to 1.
Advice that saves an evening
- Night overrides day. A value changed at the top level but also present in
nightchanges nothing after dark. Check both. - Surface colours multiply.
wall_colordoes not paint the wall, it tints its texture:0.8is "slightly tinted",0.3is "much darker than the texture". Values written as flat colours darken everything. - Brighten with lamps, not fill. Raise
fixture_scaleorindirectto light a room. A strongfill_scaleprints a pale patch in the middle of the floor; it is capped for this reason. - Warmth comes from the glow. A lamp reads warm because of its halo (
bloom), not because the bulb is brighter; very bright emissive light clips to white and loses its colour. - Judge with your eyes. Compare screenshots of several venues at the same hour; a number that looks right in the file can look wrong on screen.
Textures
Loose images for looks (backdrops seen through windows, for example) live in Looks/Textures/ next to the profile and are loaded at runtime.
The base profiles are in ul_Base/Looks/underlives.ullook: eleven families that between them cover every venue tag. Start from the family closest to your venue with inherits.