Interior mapping (fake interiors)
A shader technique that shows rooms behind windows without modelling them, by tracing view rays against virtual floors, ceilings and walls inside a flat facade.
Interior mapping is a shader technique that makes a flat building facade look as if it has real rooms behind its windows. Joost van Dongen, who developed it in 2007 for his thesis, sums it up: "the geometry for the interiors isn't actually there and is generated using a shader" (80 Level: Interior Mapping: Rendering Real Rooms…). It is the standard way to fill thousands of windows in a city without modelling thousands of rooms.
#How the technique works
The shader works per pixel. For each pixel of the window, it follows the ray from the camera through that pixel into the building and asks which surface of the room the ray would hit first (80 Level: Interior Mapping: Rendering Real Rooms…).
The key restriction is that rooms are evenly spaced. Van Dongen: "with interior mapping, ceilings and walls are at regular distances" (80 Level: Interior Mapping: Rendering Real Rooms…). Because of that, every ceiling, floor and wall is an infinite plane at a known spacing, and testing a ray against a plane is cheap. Only three of the six planes need to be tested, chosen by view direction; the nearest hit decides whether the pixel shows ceiling, floor or wall, and the hit position gives the texture coordinate (80 Level: Interior Mapping: Rendering Real Rooms…).
Alan Zucconi describes it as "at its core, a very advanced parallax effect" (alanzucconi.com: Shader Showcase Saturday #9: Interior Mapping). Ordinary parallax mapping offsets a texture using a height and displacement maps; interior mapping replaces the height map with a fixed box shape, so it can show steep walls that a height field cannot.
#Cubemap interiors
The original paper used separate textures for walls, floor and ceiling. Most modern versions store the whole room in a cubemap: the ray direction inside the room picks a texel of the cube, so one texture holds the full interior. Unreal Engine ships this as a material function, InteriorCubemap (80 Level: Interior Mapping: Rendering Real Rooms…). Murchison's Unity implementation uses the same idea, with cubemaps made "in 3D or from a 360 camera" and rows and columns of windows set per facade (ArtStation: Interior Mapping Shader).
#Limits of the illusion
Interior mapping is convincing at a distance and breaks up close. Van Dongen lists the main limits (80 Level: Interior Mapping: Rendering Real Rooms…):
- Furniture is flat. In Marvel's Spider-Man "the desks in the rooms are in fact flat textures on the walls".
- Rooms are simple boxes. Extra layers (curtains, furniture cards) add cost.
- Seams appear, such as a door where a window should be, or a room that looks different from two corners of the building.
AUTOMATON quotes developer Galupeno, who explains that building interiors in recent games work because "it looks almost perfect when seen from a moderate distance or far away" (AUTOMATON: Are there really rooms behind every window in…). For a hero room the player can walk up to, model the interior instead.
#How to make one
These steps follow Jen Abbott's Unreal Engine 5 tutorial, which builds a small room, captures it to a cubemap and maps it with InteriorCubemap (ArtStation blog: How to use parallax mapping for environments…).
- Build the room. Block out a room box: back and side walls, floor and ceiling, with simple tiling materials. Add a light inside.
- Capture it. In an Actor Blueprint, place a Scene Capture Component Cube in the centre of the room. Disable Capture Every Frame and assign a Cube Render Target. Set the front wall to be visible in scene capture only, so the capture sees the room from inside (ArtStation blog: How to use parallax mapping for environments…).
- Bake the cubemap. Right-click the render target and choose Create Static Texture. This is the room texture (ArtStation blog: How to use parallax mapping for environments…).
- Build the material. Add an InteriorCubemap node. Make two scalar parameters,
X_TilingandY_Tiling(default 1), combine them with Append and feed the node's tiling input. Add a static bool parameter,randomize, for the random rotation input (ArtStation blog: How to use parallax mapping for environments…). - Sample the room. Turn the baked room texture into a parameter, drive its UVs from the InteriorCubemap output, and connect it to Base Color (ArtStation blog: How to use parallax mapping for environments…). Emissive is a common choice for night windows.
- Apply it. Assign the material to a plane set just behind the window glass, and tile it so each window shows one room.
#Video tutorials
#Use in recent games
- Marvel's Spider-Man (Insomniac Games, 2018). The game made the technique widely known to players (AUTOMATON: Are there really rooms behind every window in…). Van Dongen thinks it uses interior mapping but notes "I haven't seen any official statement by Insomniac" (80 Level: Interior Mapping: Rendering Real Rooms…). Murchison credits a MIGS 2018 Insomniac talk as a reference for his own shader (ArtStation: Interior Mapping Shader).
- SimCity (2013). A programmer on the game told van Dongen it used interior mapping, improved by storing all rooms in one atlas and allowing rooms of different depth (80 Level: Interior Mapping: Rendering Real Rooms…). Zucconi calls the technique "notoriously predominant" in the game (alanzucconi.com: Shader Showcase Saturday #9: Interior Mapping).
- Ghostwire: Tokyo* and *Cyberpunk 2077 are the examples in Galupeno's 2023 posts about convincing building interiors (AUTOMATON: Are there really rooms behind every window in…).
- Assassin's Creed III*, Saints Row: The Third and *BioShock Infinite are described by AUTOMATON as using "interior mapping-like techniques" (AUTOMATON: Are there really rooms behind every window in…).
#In different tools
- Unreal Engine: the InteriorCubemap material function is built in (80 Level: Interior Mapping: Rendering Real Rooms…); feed it tiling values and use its output as UVs for a cube texture (ArtStation blog: How to use parallax mapping for environments…).
- Unity (URP and HDRP): no built-in node. Zucconi points to van Dongen's original code, Einar Öberg's 2011 Unity port and Ben Golus's forum recreation of the SimCity version as starting points (alanzucconi.com: Shader Showcase Saturday #9: Interior Mapping); Murchison's URP shader combines "interior and facade in one shader" (ArtStation: Interior Mapping Shader).
- Godot and other engines: no built-in feature; the method is a short shader and ports easily, since it only needs ray-plane tests (80 Level: Interior Mapping: Rendering Real Rooms…).
- Cubemap authoring: model the room in Blender or any DCC and render a cube or 360° panorama, or capture it in the engine as in the Unreal steps above (ArtStation: Interior Mapping Shader; ArtStation blog: How to use parallax mapping for environments…).
#Further reading and watching
References
- · Interior Mapping: Rendering Real Rooms Without Geometry · 80 Level (reposted with permission from the author's blog), 2018 · article · accessed 2026-10-22
- · Shader Showcase Saturday #9: Interior Mapping · alanzucconi.com, 2018 · article · accessed 2026-10-22
- · Interior Mapping Shader · ArtStation, 2020 · web · accessed 2026-10-22
- · Are there really rooms behind every window in Marvel's Spider-Man? This is how developers create the illusion · AUTOMATON, 2023 · article · accessed 2026-10-22
- · Marvel's Spider-Man 2: Window Shader and Pipeline · ArtStation, 2023 · web · accessed 2026-10-22
- · How to use parallax mapping for environments in Unreal Engine 5 | Tutorial · ArtStation blog, 2024 · article · accessed 2026-10-22
- · Interior Mapping - Shader Graph Basics - Episode 34 · YouTube · video · accessed 2026-10-22
Also consulted
- · How to use parallax mapping for environments in Unreal Engine 5 | Tutorial #VFX · YouTube, 2024 · video · accessed 2026-10-22
Pages that link here
- Parallax occlusion mapping Key term
Last updated 2026-10-22