env_cubemap

env_cubemap
is an internal point entity available in all Source games. It specifies a location for which a cubemap will be generated when the buildcubemaps console command is executed. Materials with $envmap will use the nearest cubemap as their reflection.


, so turn your flashlight off if you're on a dark map, else whatever you're looking at will be bright in the cubemap.
Also, in Half-Life 2, NPCs such as npc_combine_camera will have its sprites reflected into the cubemap. These NPCs should be removed by running the ent_remove_all npc_combine_camera command before building cubemaps.
Keyvalues
- Cubemap Size (cubemapsize) <choices>
- The resolution of each face of the cubemap. Remember that the actual number of pixels stored will be your selection times six (or seven, depending upon engine branch), so higher numbers will make for very large file sizes!
¹ - To render higher resolution cubemaps than 256x256, see below.
² - Higher resolution (1024px or higher), may not work in some games. See #Higher_Resolution_Cubemaps.
³ - Building cubemaps on 4096x4096 requires the game runs on 16K resolution (which requires very powerful GPU (such as RTX 4090) with large VRAM to handle).
- Brush faces (sides) <sidelist>
- An optional override for individual brush faces, forcing them to use this cubemap instead of one closest to them. To select faces, press the Pick button then click on them in the 3D view. Hold Ctrl to toggle a face on or off.
- Cubemap Bounds (parallaxobb) <targetname> (only in
Strata Source and
Mapbase games)
- Optionally assigns this cubemap a bounding box for parallax correction (brush entity tied to parallax_obb). This means the cubemap reflection will move as the camera moves, similar to func_reflective_glass.
- Name (targetname) <string>
- Name of this entity. Displayed in Hammer's 2D views and Entity Report.
Higher Resolution Cubemaps
Simply type in a value 10 or more (you don't need to disable SmartEdit). That will give the resolution corresponding to the next powers of 2 (512x512, 1024x1024, 2048x2048).




If you have a monitor less than 4K and DSR only allows resolution up to 4K, you will also need Custom DSR Tool to build cubemaps at 1024x1024 (requires resolution above 4096x4096), or 2048x2048 (requires resolution above 8192x8192).

Placement
Declaring areas for cubemaps to cover is simple, just place an env_cubemap
point entity inside the space of a map. When the map is compiled with VBSP, world geometry surfaces automatically associate themselves with the nearest env_cubemap
and will use the cubemap generated from it. Entities associate themselves with the env_cubemap
closest to their origin (alternatively, a cubemap can be applied to specific brush faces in the cubemap's properties); moving entities will dynamically change which cubemap they use. It is important to choose env_cubemap
positions properly for both aesthetic and performance issues.
Cubemaps are used in a few specific ways, and should be placed accordingly. Some cubemaps are used for reflections on static world geometry. Others are used with player entities, including NPCs. And the rest are used for any non-player reflective entities. The optimal placement of env_cubemap
entities corresponds with each of these uses, to ensure the maximal benefit, visually and in performance. Here are a few simple heuristics to follow:
- If a cubemap is intended for NPCs or the player, the
env_cubemap
should be placed at eye-level (usually 64 hammer units) above the ground. This way, the cubemap will most accurately represent the world from the perspective of the player.

env_cubemap
entities around the map floor and then use Hammer's Entity Report function to select all env_cubemap
entities and then moving them 64 units upward by using the Transform tool Ctrl+M.- If a cubemap is intended for static world geometry, the
env_cubemap
should be a fair distance (as a rule of thumb, 16 Hammer units) away from all brush surfaces. - A different cubemap should be taken in each area of distinct visual contrast. A hallway with bright yellow light will need its own
env_cubemap
, especially if it is next to a room with low blue light. Without twoenv_cubemap
entities, reflections and specular highlights will seem incorrect on entities and world geometry in one of the areas. - Location changes, such as one room-to-room, room-to-outside and general location changes with great visual changes need
env_cubemap
entities with equal distance in both locations to the transition point. For example 16 units away from the doorway into each rooms. That way the cubemap transition between locations is smooth. This will prevent the cubemap from showing the outside location inside the room and vice versa. - Cubemaps set in a very dark area, as well as cubemaps outside of the playable area can use very small resolutions. Dark cubemaps barely reflect anything but the few bright spots to begin with, Using smaller ones barely makes any visual difference.

But otherwise, cubemaps in instances work as intended.
Building Cubemaps
For general and game specific information about building cubemaps, visit the Cubemaps page.