The Rooms
Oscillationa has no place to be. This is one: four connected rooms you can walk around, hung with her own work — the same images the gallery is serving right now, not copies of them. You start in the Hall. A doorway in its east wall leads to the Long Gallery and on to the Cabinet; one in its west wall opens into the Atrium. Every doorway you walk through hangs twelve works you have not seen, forty-eight in all.
The gallery is the canonical place to view the art at full size. This room is a way to stand in it.
Record five seconds of the room
Press record and the next five seconds of the view above are encoded into a video file — walk, look around, or stand still, and the clip is exactly what was on screen. The clip never leaves your device. Your own browser does the encoding, the file is assembled in this tab's memory, and the only thing that ever touches it is the save button below. This page has no upload endpoint to send it to even if it wanted one.
Checking what this browser can encode…
How to move
- On a computer
- W A S D walks you forward, back and sideways the moment the page loads; hold Shift to move a little under twice as fast. Click the room to capture the mouse and look freely (press Esc to release it), or simply hold the left button and drag. The arrow keys walk you too, but only once the room has focus — click it or tab to it — because until then they are still the page's scroll keys, and there is a lot of page here to scroll.
- On a phone
- The pad at the bottom-left is a thumbstick — push it in the direction you want to walk. Drag anywhere else on the room to turn your head. No keyboard needed at any point.
- Either way
- You stay standing on the floor at 1.62 m eye height and you cannot walk through a wall or off the edge, so there is no way to get lost or fall out of the world. The only gaps in the walls are the doorways: 1.8 m wide, 2.4 m high, every one of them in an east or west wall. Walk into one and you are in the next room; turn round and walk back and you are where you started. The four rooms are a straight chain — Atrium, Hall, Long Gallery, Cabinet — so from where you come in, nothing is more than two doorways away, and walking one direction and then the other reaches all of it. Walk up to a piece and face it and a plaque appears with its name, its caption and a button that opens that exact work in the gallery — tap or click, no keyboard step in between.
What you are actually looking at
Four rooms, and they are four different sizes on purpose — you should be able to tell where you are with the plaques switched off. The Hall you start in is 14 metres by 10 with a 3.6 metre ceiling. East through its doorway, the Long Gallery is 16 by 12 under a 4.2 metre ceiling, so it reads as taller and longer the moment you are in it. East again, the Cabinet is the small one: 11 by 10 with the lowest ceiling in the building at 3.2 metres, and its twelve works are closer together than anywhere else. Back the other way, west of the Hall, the Atrium is the big one — 18 by 12 with a 5 metre ceiling, half again as tall as the Cabinet, so the same twelve pictures hang in a lot more air. Each room has a lamp above each of its twelve hanging positions, and each is lit by its own twelve — light does not spill between them through a doorway, which is a simplification you can see if you look for it. It is drawn with WebGL2 directly by one plain script reading one plain table of rooms — no 3D library, no scene file, no build step, nothing vendored. The shell of a room is a single mesh drawn in one call; each painting is one more, with its frame and mat computed in the shader instead of modelled. Fourteen draw calls, and four rooms did not make it fifty-six: the room you are in, its twelve works, and — only while a doorway could be on screen — the bare shell of the room beyond it. Rooms you cannot see are not drawn at all. A neighbour that is drawn is drawn empty on purpose; its works hang when you walk in, because twelve textures at a time is the budget and forty-eight is not. All twelve lamps are evaluated per vertex, on a mesh subdivided to about half a metre, rather than per pixel — which is also why every surface here is matte rather than polished.
A doorway is a real hole, not a door you press. The wall it sits in is built as four faces around the opening — a jamb either side, a head over it, and a sill under it that is empty because the opening reaches the floor — and a one-metre threshold is built out of the gap, so the rooms are joined rather than stacked. You can stand in one room and see into the next before you decide to go, and there is a moment, crossing, when you are standing inside the wall itself with a room on either side of you. Doorways are only ever cut into the walls that carry two works rather than four: on a 10-metre wall those two hang five metres apart, which leaves room for a 1.8 metre opening between them without a doorway ever being cut through a painting.
The art is not a fixed set baked into the page. When you open this URL,
a small worker fetches this site's own
/image-sitemap.xml — the file the nightly build writes from the same data the gallery
reads — hands back every entry in it, a second small file takes the
forty-eight that hang, and the page cuts those into four twelves, one per room: works 1–12 in the
Hall, 13–24 in the Long Gallery, 25–36 in the Cabinet, 37–48 in the Atrium.
The runs do not overlap, which is the whole reason walking on is worth doing. Each is requested at
512 pixels wide from the same image service the gallery grid uses. (The sitemap is about 400 KB and
899 entries, and the download happens on the worker so it never touches the thread that is drawing.
Reading all 899 records out of it instead of only the first forty-eight measured 26 ms against 23 ms
in headless Chrome while this was written: the parser has to walk the whole document either way, so
the extra 851 records cost about three milliseconds, once, at load. The textures are the expensive
part, and there are still only twelve of those.) So the rooms cannot show you a piece the
gallery does not have, they cannot drift out of date, and the captions below are the real captions,
never invented ones. Nothing on this page is fetched from anywhere but oscillationa.com.
The plaque follows the same rule, and it is deliberately dumb rather than clever: there is no ray
cast into the scene and nothing is picked out of the rendered pixels. Each of the twelve hanging
positions in the room you are standing in has a fixed spot on a wall and a fixed direction it faces.
A work counts as the one you
are standing in front of when its centre is within 5.2 metres of your eye, your view is aimed within
about 33 degrees of it, and you are on the side of the wall it hangs on. If more than one qualifies,
the nearer wins; if none does, the plaque goes away. That means it can miss: stand exactly between
two pieces on the same wall, or drift wide while walking past, and nothing is named until you turn
toward one. Every word it shows — the title and the caption — is the text this site's own sitemap
carries for that image, and the button's address is that image's real
/Gallery/view/… page. Nothing on the plaque is written here.
Honest limits
512-pixel textures are enough to recognise a piece from across the room and nowhere near enough to study one. Here is the arithmetic for the twelve works in the first room as this was written: 17 to 58 KB each at 512 pixels and 459 KB for the whole room, against 2.5 MB for the same twelve at full size — so the walls cost about what two full-size images cost, not twelve. Walking next door costs about the same again, and no more, however far you walk: the room you leave hands its twelve textures back to the graphics card as you cross, so there are twelve resident at a time whether you are in the first room or the fourth — never forty-eight. That is the reason the gallery could grow from two rooms to four without the page getting heavier to stand in. The rooms are budgeted by construction rather than benchmarked: a capped device-pixel ratio, 512-pixel textures, twelve hanging positions per space, and a render loop that stops dead the moment the tab is hidden. What that adds up to on your particular device is something only your device can tell you. When something catches your eye, open it in the gallery — every work below links straight to its own page at full resolution.
Forty-eight works hang at once — four rooms of twelve, about five per cent of the 899 in the
gallery. Which forty-eight is the part you control. The collection is walked in strides of
forty-eight in the gallery's own order, which makes nineteen exhibitions; Next 48 works
at the top of the room hangs the following one without leaving the page or moving you an inch, and
the address bar picks up a ?set= number so the exhibition you are standing in is a link
you can send to somebody. Walk it nineteen times and you have seen all 899. Two honest caveats: the
nineteenth set is short by thirteen — 899 does not divide by forty-eight — so it wraps and finishes
with the first thirteen works again rather than hanging a room with holes in its walls; and the
order is the sitemap's, which is the gallery's, so it is stable and shareable but it is not curated
and it is not shuffled. Two people opening ?set=7 a year apart see the same room.
Four rooms is still quiet: no audio, nothing to collect, and no way to hang a work the gallery does not already have. Only one room's art is ever loaded, so what you see through a doorway is the shape of the next room and not its pictures, and the room you walk into hangs blank for the moment its twelve are arriving. It needs a browser with WebGL2 (anything from about 2021 onward); if your browser cannot give it one, or the sitemap request fails, the page says so plainly and the list below is still the complete contents of all four rooms. If you have asked your system to reduce motion, the view is drawn once and then holds perfectly still — it only moves when you move it.
The five-second recording has limits worth knowing before you press it. It captures the canvas only: the room, and nothing drawn on top of it in HTML — no crosshair, no thumbstick, and no plaque, so a work you are standing in front of will be in the clip but its name will not. There is no audio track, because the page has no sound. The container is whatever your browser decides to encode; this page asks for VP9-in-WebM first and falls back through VP8, plain WebM, H.264-in-MP4 and Matroska, then reads back the type the browser actually produced and names that exact string under the button — the file extension follows the same reading, so nothing here calls a WebM an MP4. If you switch tabs mid-take the room stops drawing (the render loop is cancelled while the tab is hidden) and the clip freezes for that stretch. And if you have asked your system to reduce motion, the room only redraws while you are moving it, so a recording made while standing still is a still image five seconds long — walk during the take if you want it to move.
Every work hanging in these rooms
Loading the works from the site's image sitemap…