Difference between revisions of "HDR Skybox Creation"
Jorourke92 (talk | contribs) |
m (Released today) |
||
Line 1: | Line 1: | ||
− | |||
− | |||
[[Image:Ldrvshdr.jpg|thumb|200px|A Low Dynamic sky, compared to the same sky in High Dynamic.]] | [[Image:Ldrvshdr.jpg|thumb|200px|A Low Dynamic sky, compared to the same sky in High Dynamic.]] | ||
Revision as of 09:28, 14 September 2006
An LDR (Low Dynamic Range) skybox is made up of six 24-bit .TGA files (front, left, back, right, up, and down). This format does not contain enough information to look good when adjusted by large exposure values, and will not produce high contrast lightmaps and reflections. An HDR (High Dynamic Range) skybox is a 32-bit floating-point format, saved out from an application that supports HDR as a .PFM file. This format contains the multiple exposure information required for exposure adjustments, high contrast lightmaps, and reflections.

day of defeat source/dod
in directory locations for the appropriate game directory of the game you are creating the skybox for (e.g. hl2
or hl2dm
). Currently, HDR is only supported in Day of Defeat: Source, Counter-Strike: Source, Half-Life 2: Episode 1 and Half-Life 2: Lost CoastYou should have a basic understanding of the material system and creating Source materials to use this information.
Contents
Understanding the Sky at different exposures
Before creating a HDR skybox we need to know what the sky looks like at different exposures. The following images are a series of photos taken of the sky at different exposures. As you can see the sun is still bright even at the camera's fastest shutter speed…1/4000th of a second.
Create your base skybox
First you need to create the base .TGA files that make your skybox cube. This is done using the same method as standard (LDR) skyboxes. See Skybox (2D) for information on how to create base skybox materials.
Organize the skybox images into a single file
Once you've made the base skybox images, use your image editing software to assemble the separate six .TGA sides into one large single .TGA file, as shown in this sample image. For demonstration purposes, text was inserted into this image to show which piece of the skybox should go into each position. If you add this text yourself, it will show up in-game when the skybox is compiled.
The SDK includes this sample skybox. The .TGA files can be found in: sdk_content\dod\materialsrc\skybox\sdk_sky_example_hdr.tga
Edit and Save an HDR skybox
The following will demonstrate the basic steps for painting a "sun" effect into the different exposures and saving the file as a .PFM. We'll use HDR Shop for this demonstration. The HDR Shop program can be downloaded from www.hdrshop.com. After it is installed, launch the application, and then open the above .TGA you created above.
When this window appears leave the default settings and Select OK'.
To paint the 'sun' into the skybox you must first choose an exposure to edit. The '+' and '-' keys are used to adjust the image exposure up and down. The lower right hand corner of the screen indicates the exposure level, '+0.00 stops' indicates the base exposure level that was imported into HDR Shop. Adjust the exposure level so it reads '-3.00 stops' Then, go to the menu: File -> Edit in Image Editor. The image-editing program you have associated with .BMP format will automatically open up this file as HDRShopTEMP.bmp
Now paint the sun into this file.
When finished save the image and return to HDR Shop.
After clicking OK in this dialog, the current exposure level will be updated with the image that was just painted with the image-editing program.
Try adjusting the exposure up and down in HDR Shop with the '+' and '-' keys and you'll see that the sun is now integrated into the other exposures. 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.
When finished go to the File menu and choose Save as… and Select Portable Floatmap (.PFM) Save this file into your materialsrc content directory (e.g. sdk_content\dod\materialsrc\skybox
).
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"
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 Creating Materials.
- 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 |