HDR Skybox Creation:ru
Обычный LDR (Low Dynamic Range) скайбокс делается из шести 24-битных изображений (front, left, back, right, up, and down).
Такой формат прекрасно подходит для LDR, но содержит недостаточно информации чтобы хорошо смотреться через широкий спектр воздействий, как должно быть когда используется HDR-lit окружение.
Unlike most textures in a game a skybox typically represents very large 3D objects which behave very differently across different lighting conditions, making HDR imaging a far more pressing issue than normal.
An HDR (High Dynamic Range) skybox is a 32-bit floating-point format, saved by an application that supports HDR as a Portable Float Map. It contains enough information to allow the resulting texture to change considerably across different exposures.
Contents
Skies at different exposures
Before creating a HDR skybox we need to know what the sky looks like at different exposures:
As you can see, the captured image changes as the exposure is altered. A single 24-bit image could never be used to create those effects: at 24-bit white is white, and the sun would only stand out if it was literally a different colour from the rest of the sky.
Create a base skybox
First you need to create a basic skybox cube, as you would for an LDR skybox. See Skybox (2D).
With your images ready, arrange them in one large file as seen below. This step is required only if you are using the splitskybox tool. If you aren't then you are quite free to handle each texture separately.
Save this assembled image as a TGA file. If you are prompted, do not use RLE compression and do place the origin at the bottom left.
Adding HDR data
We will now paint a sun into our skybox, which will behave in the same way as the 'exposures' photographs above. A good tool to use for this step is HDR Shop.

HDR Shop works by taking files created by other image editors for different exposures and merging them together at 32-bit floating point. You can adjust the exposure you are working on with the + and - buttons on your keypad, or from the menu with View > Exposure
. The current value is displayed in the lower-right corner of the screen.
When you've reached the exposure you are looking for, choose File -> Edit in image editor
and you will get an image to edit. HDR Shop will open the image in your default BMP editor at this point, but you can use whatever tool you want so long as you're saving the right file.
There is a more detailed tutorial available on HDR Shop's website.
When you are finished, OK away the HDR Shop's dialogue and choose File -> Save as...
and select the 'Portable Floatmap' format. Name and save this PFM file as you would a 2D skybox source image.
sdk_sky_exampleup
Let's do this with sourcesdk_content\dod\materialsrc\skybox\sdk_sky_exampleup.tga
. Open it up and adjust the exposure to -3 stops, then edit the image externally. Now paint in a sun.
After returning to HDR Shop and OKing the dialogue, the current exposure level will be updated with the image that you just painted.
Try adjusting the exposure up and down and you'll see that the sun is now integrated into the other exposures as well. Continue editing the different exposures until the desired result is achieved. It will be a good idea to spend some time emulating the blown-out effects around the sun and the highlights on the clouds as seen in the photographic reference.
Creating the auxiliary skybox files

The next stage is to create all the auxiliary skybox files: separate .PFM, .TXT, and .VMT files. A new application called splitskybox.exe
was created to split the single .PFM skybox into the six separate files needed by the Source Engine. Copy a shortcut of the Splitskybox.bat
(located in the sourcesdk\bin\
directory) onto your desktop, then drag the .PFM file onto this shortcut.
Which should give you output similar to this:
splitskybox.exe "C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdr.pfm" filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrft.pfm filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrlf.pfm filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrbk.pfm filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrrt.pfm filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrup.pfm filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrdn.pfm Press any key to continue . . .
When finished the content directory (e.g. sdk_content\dod\materialsrc\skybox
) will include six new files based one the same name but appended with (ft, lf, bk, rt, up, and dn) this designates the different directions of the skybox (front, left, back, right, up, and down).
Next, create six new .TXT files based on the new file names in the same directory. These .TXT files tell the Source Engine that the skybox is a .PFM file for compression reasons, and that the base exposure level matches '+0.00' in HDR Shop. If needed you can adjust the "pfmscale" so the base level is either higher or lower, but it is recommended to author skybox textures for a scale of 1.
With Notepad or another text editor, create these files:
- sdk_sky_example_hdrft.txt
- sdk_sky_example_hdrlf.txt
- sdk_sky_example_hdrbk.txt
- sdk_sky_example_hdrrt.txt
- sdk_sky_example_hdrup.txt
- sdk_sky_example_hdrdn.txt
With the following text in each file:
"pfm" "1" "pfmscale" "1" "nocompress" "1"
Then, create six new .vmt files in the Game Directory (e.g. day of defeat source\dod\materials\skybox
) and enter the following into each.

$hdrbasetexture
field for HDR. The standard $basetexture
field is used for the LDR skybox fallback.- sdk_sky_example_hdrft.vmt
"sky" { "$hdrbaseTexture" "skybox/sdk_sky_example_hdrft" "$nofog" "1" "$ignorez" "1" "$basetexture" "skybox/sdk_sky_exampleft" }
- sdk_sky_example_hdrlf.vmt
"sky" { "$hdrbaseTexture" "skybox/sdk_sky_example_hdrlf" "$nofog" "1" "$ignorez" "1" "$basetexture" "skybox/sdk_sky_examplelf" }
- sdk_sky_example_hdrbk.vmt
"sky" { "$hdrbaseTexture" "skybox/sdk_sky_example_hdrbk" "$nofog" "1" "$ignorez" "1" "$basetexture" "skybox/sdk_sky_examplebk" }
- sdk_sky_example_hdrrt.vmt
"sky" { "$hdrbaseTexture" "skybox/sdk_sky_example_hdrrt" "$nofog" "1" "$ignorez" "1" "$basetexture" "skybox/sdk_sky_examplert" }
- sdk_sky_example_hdrup.vmt
"sky" { "$hdrbaseTexture" "skybox/sdk_sky_example_hdrup" "$nofog" "1" "$ignorez" "1" "$basetexture" "skybox/sdk_sky_example_01up" }
- sdk_sky_example_hdrdn.vmt
"sky" { "$hdrbaseTexture" "skybox/sdk_sky_example_hdrdn" "$nofog" "1" "$ignorez" "1" "$basetexture" "skybox/sdk_sky_exampledn" }
Creating LDR fallbacks
The LDR fallback for the skybox will be based on the original six .TGA files that were used to create the HDR version.
Go ahead and save these six files into your content directory (e.g. sdk_content\dod\materialsrc\skybox
):
- sdk_sky_exampleft.tga
- sdk_sky_examplelf.tga
- sdk_sky_examplebk.tga
- sdk_sky_examplert.tga
- sdk_sky_exampleup.tga
- sdk_sky_exampledn.tga
Create these text files into the same directory (just like standard LDR skybox materials):
- sdk_sky_exampleft.txt
- sdk_sky_examplelf.txt
- sdk_sky_examplebk.txt
- sdk_sky_examplert.txt
- sdk_sky_exampleup.txt
- sdk_sky_exampledn.txt
With the following text in each file:
"dxt5" "1" "skybox" "1"
Compiling the skybox
The final stage is to compile all these files so they can be used in the engine. Copy a shortcut of the vtex.exe
(from the sourcesdk\bin\
directory) onto your desktop, then drag the following .TGA and .PFM files onto this shortcut. For a full description of how to compile textures, see Vtex.
- sdk_sky_example_hdrft.pfm
- sdk_sky_example_hdrlf.pfm
- sdk_sky_example_hdrbk.pfm
- sdk_sky_example_hdrrt.pfm
- sdk_sky_example_hdrup.pfm
- sdk_sky_example_hdrdn.pfm
- sdk_sky_exampleft.tga
- sdk_sky_examplelf.tga
- sdk_sky_examplebk.tga
- sdk_sky_examplert.tga
- sdk_sky_exampleup.tga
- sdk_sky_exampledn.tga
If all went well, there should be 12 new .VTF files in your Game directory (e.g. day of defeat source\dod\materials\skybox
) for a HDR skybox with a LDR fallback.
See also
- HDR Lighting Basics - How to add basic HDR lighting effects.
- HDR Lighting Settings - Information on customizing HDR lighting settings.
- Skybox (2D)
- Material
Environment articles: | |
---|---|
Skies and environment maps | Skybox (2D) • Skybox (3D) • HDR Skies • Skybox with Terragen • Skybox with Terragen - Advanced • List of skies |
Terrain and displacement mapping | Displacements • Holes in displacements • Digital Elevation Models |