Skip to content

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 01:04
· 18 commits to main since this release

rocco v0.10.0

Built with the Roc nightly nightly-2026-10-11-7d256b9. Use the same nightly to run an app on these bundles.

Bundle URL
platform https://github.com/Pixelsprout/rocco-engine/releases/download/v0.10.0/platform-6EpFLWeepZohGJzcaQELqfi5pXjyqXGXrqqFTpxQwXhm.tar.zst
linalg https://github.com/Pixelsprout/rocco-engine/releases/download/v0.10.0/linalg-4N62Pw77Sky6ba8RiBfvULjHuAQeQiqHbUor7qSeor7F.tar.zst
mesh https://github.com/Pixelsprout/rocco-engine/releases/download/v0.10.0/mesh-CdWwEzqqVE9DthN144ub9ri6e33gPWv19K5FvNbpX5Na.tar.zst
ui https://github.com/Pixelsprout/rocco-engine/releases/download/v0.10.0/ui-6TR19D16FSiRaVJ1A2tVsutNw2Ja4UJiHm2MCL5rheHF.tar.zst
camera https://github.com/Pixelsprout/rocco-engine/releases/download/v0.10.0/camera-5QBbZpo1tidPXJ9PEMUCazZCeKoKdmeDwQ2Qhtz22TsR.tar.zst

What changed

Milestone 37, Post and Environment. A game now sets the whole look of the 3D view in one record, Scene.environment: the sky, the clear colour, the tone map, the exposure, fog and bloom.

Breaking: sky and clear moved into Scene.environment

Scene no longer has sky or clear fields. Set them in environment, starting from Environment.default:

import pf.Environment

{ ..Scene.empty, nodes, environment: { ..Environment.default, sky: my_sky } }

Scene.empty holds Environment.default: no sky, a black clear colour, the ACES tone map, an exposure of 1, and fog and bloom off.

Look change: unlit surfaces, the sky and the clear colour are a little darker

The Main pass now draws into an HDR target, and a Post pass applies the tone map to everything in it. Lit surfaces look the same as before under ACES. Unlit surfaces, the sky and the clear colour now also go through the tone map, so they darken a little. To brighten the whole view, raise exposure. The Neutral tone map keeps a colour closest to its authored value.

New

  • tone_map: Aces (Stephen Hill's fit, the default), AgX or Neutral (Khronos PBR Neutral).
  • exposure: a linear multiplier on every colour before the tone map.
  • fog: linear fog by distance from the camera, { color, start, end, amount }. An amount of 0 turns it off. Fog mixes every mesh, glow and unlit surfaces included. The sky and the clear colour do not fog, so match the fog colour to the sky's horizon or to clear.
  • bloom: a halo around light above threshold, { strength, threshold, knee }. A strength of 0 turns it off and runs no bloom pass. The default threshold is 2, so a glow of about 3 blooms and a lit surface does not. A strength near 0.2 is a good start.
  • The host clamps a bad value, such as an exposure at or below 0, and logs it once per run. The Bridge scene op shows the record.
  • examples/glow turns bloom on. B toggles bloom and T cycles the tone map.
  • The primitive Sphere has 32 rings of 64 segments (was 16 by 32), so a large orb has a smooth outline.

See The environment in the guide and ADR 0026.