Template:Archived Page History/Cubemaps/en: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (You can avoid generating cubemaps automatically if you use Slammin VBSP's -nodefaultcubemap)
Line 5: Line 5:




== Building cubemaps ==
==Building cubemaps==
Building cubemaps is the process of generating textures to use as reflections. For technical reasons, this process isn't automated {{mapbase|in|addtext-front=''Except''{{nbsp}}}} and is up to the user to do so; until then, existing '''env_cubemap''' entities will remain unused and the map, depending on the game, will display either generic or [[Missing content|"missing" textures]] as reflections due to nonexistent cubemaps.
Building cubemaps is the process of generating textures to use as reflections. For technical reasons, this process isn't automated {{mapbase|in|addtext-front=''Except''{{nbsp}}}} and is up to the user to do so; until then, existing '''env_cubemap''' entities will remain unused and the map, depending on the game, will display either generic or [[Missing content|"missing" textures]] as reflections due to nonexistent cubemaps.
{{warning|{{clr}}
{{warning|{{clr}}
Line 11: Line 11:
* If the {{Command|nav_show_ladder_bounds}} command was used before building cubemaps, the green boxes will also be baked into the cubemap.}}
* If the {{Command|nav_show_ladder_bounds}} command was used before building cubemaps, the green boxes will also be baked into the cubemap.}}


=== Before building ===
===Before building===
{{Cleanup|Modern Source games, namely {{portal2|1}} and {{p2ce|1|nt=1}}, do not need all these complicated params and steps, at least in my experience -[[User:Equalizer5118|Equalizer]] ([[User talk:Equalizer5118|talk]]) 10:56, 22 March 2024 (PDT)}}
{{Cleanup|Modern Source games, namely {{portal2|1}} and {{p2ce|1|nt=1}}, do not need all these complicated params and steps, at least in my experience -[[User:Equalizer5118|Equalizer]] ([[User talk:Equalizer5118|talk]]) 10:56, 22 March 2024 (PDT)}}
{{classicImportant|Maps for {{src13|4.1}} games and others, such as {{css|4.1}}, are known to include pre-built, blank cubemaps after being compiled (even if there are no '''env_cubemap''' entities in them); these should be deleted before building new ones, as detailed [[#Deleting cubemaps|here]]. This is fixed in {{mapbase|4}}}}
{{classicImportant|Maps for {{src13|4.1}} games and others, such as {{css|4.1}}, are known to include pre-built, blank cubemaps after being compiled (even if there are no '''env_cubemap''' entities in them); these should be deleted before building new ones, as detailed [[#Deleting cubemaps|here]]. This is fixed in {{mapbase|4}}}}
Line 17: Line 17:
* {{ent|env_cubemap}} entities [[Env cubemap#Keyvalues|allow]] for generating higher- or lower-quality reflections, though the game's texture quality also comes into play; consider maxing out your game's visual settings before building cubemaps.
* {{ent|env_cubemap}} entities [[Env cubemap#Keyvalues|allow]] for generating higher- or lower-quality reflections, though the game's texture quality also comes into play; consider maxing out your game's visual settings before building cubemaps.
*  To build cubemaps, your game's screen resolution needs to be at least 4 times higher than the highest [[Env cubemap#Keyvalues|size]] of an existing '''env_cubemap''', or else attempting to build them will either fail or even cause the game to crash.<br>For example, if the highest '''env_cubemap''' sizes 128x128, a resolution no lower than 512x512 will be required. (''128 &times; 4 &#61; '''512''' -&gt; 720x576'' (as a valid resolution) or higher){{note|The game may appear to freeze or become unresponsive during the process, and the amount of time depends on various factors. For successful results, don't switch away from the game until it's done.}}
*  To build cubemaps, your game's screen resolution needs to be at least 4 times higher than the highest [[Env cubemap#Keyvalues|size]] of an existing '''env_cubemap''', or else attempting to build them will either fail or even cause the game to crash.<br>For example, if the highest '''env_cubemap''' sizes 128x128, a resolution no lower than 512x512 will be required. (''128 &times; 4 &#61; '''512''' -&gt; 720x576'' (as a valid resolution) or higher){{note|The game may appear to freeze or become unresponsive during the process, and the amount of time depends on various factors. For successful results, don't switch away from the game until it's done.}}
* If you are using {{mapbase|4.1}}, you can add <code>-autocubemap</code> to your command line in {{hammer|4}}. The game will automatically build cubemaps}}
* If you are using {{mapbase|4.1}}, you can add <code>-autocubemap</code> to your command line in {{hammer|4}}. The game will automatically build cubemaps
* {{slamminsrc|4.1|nt=1}} features the {{code|-nodefaultcubemap}} command, which skips automatically generating skybox cubemaps on map compile.}}


=== LDR ===
===LDR===
{{note|This step doesn't apply to {{l4d|4.1}} nor {{csgo|4.1}} as their maps are compiled in [[#HDR|HDR mode]] only. While {{p2|4.1}} does support LDR, the game uses HDR by default, so we recommend building cubemaps in HDR only.}}
{{note|This step doesn't apply to {{l4d|4.1}} nor {{csgo|4.1}} as their maps are compiled in [[#HDR|HDR mode]] only. While {{p2|4.1}} does support LDR, the game uses HDR by default, so we recommend building cubemaps in HDR only.}}
Building cubemaps in a map compiled in '''LDR''' (''Low Dynamic Range'') mode will generate textures only for that mode, regardless of your game's ''High Dynamic Range'' video setting. To build the cubemaps, submit the following commands into the game's console:
Building cubemaps in a map compiled in '''LDR''' (''Low Dynamic Range'') mode will generate textures only for that mode, regardless of your game's ''High Dynamic Range'' video setting. To build the cubemaps, submit the following commands into the game's console:
Line 41: Line 42:
|}
|}


=== HDR ===
===HDR===
Building cubemaps in a map compiled with [[HDR]] support needs to be performed twice - once for each mode ('''HDR''' and '''LDR'''), depending on the game (games after {{L4d|1}} does not requires building cubemaps in LDR). As opposed to an '''LDR''' map's case, your game's ''High Dynamic Range'' video setting has to be set to "Full" to build '''HDR''' cubemaps, and to "None" to build '''LDR''' ones. To build the cubemaps, submit the following commands into the game's console:
Building cubemaps in a map compiled with [[HDR]] support needs to be performed twice - once for each mode ('''HDR''' and '''LDR'''), depending on the game (games after {{L4d|1}} does not requires building cubemaps in LDR). As opposed to an '''LDR''' map's case, your game's ''High Dynamic Range'' video setting has to be set to "Full" to build '''HDR''' cubemaps, and to "None" to build '''LDR''' ones. To build the cubemaps, submit the following commands into the game's console:
{| class="wikitable"
{| class="wikitable"
Line 78: Line 79:
|}
|}


== Building cubemaps in specific games ==
==Building cubemaps in specific games==
=== Black Mesa: Source ===
===Black Mesa: Source===
To build cubemaps in {{bms|4.1}} maps, the game has to be launched with these parameters: <code>-oldgameui -dev -console +r_4way_use_fast_normals 0 +mat_specular 0</code><br>Then, load the map and submit the <code>buildcubemaps</code> command into the console.
To build cubemaps in {{bms|4.1}} maps, the game has to be launched with these parameters: <code>-oldgameui -dev -console +r_4way_use_fast_normals 0 +mat_specular 0</code><br>Then, load the map and submit the <code>buildcubemaps</code> command into the console.


=== Half-Life: Source ===
===Half-Life: Source===
{{bug|Building cubemaps in {{hls|4.1}} is currently not possible as their textures, despite being generated, aren't embedded into the map file afterward.
{{bug|Building cubemaps in {{hls|4.1}} is currently not possible as their textures, despite being generated, aren't embedded into the map file afterward.
{{workaround|Move the map file into the {{path|maps}} folder of a game in the same engine branch (such as {{hl2|4.1}}), build its cubemaps in that game, then move the file back into '''Half-Life: Source'''<nowiki>'</nowiki>s folder.}}{{modernConfirm|Fixed in {{hldms}}?}}}}
{{workaround|Move the map file into the {{path|maps}} folder of a game in the same engine branch (such as {{hl2|4.1}}), build its cubemaps in that game, then move the file back into '''Half-Life: Source'''<nowiki>'</nowiki>s folder.}}{{modernConfirm|Fixed in {{hldms}}?}}}}


=== Portal 2 ===
===Portal 2===
{{bug|Building cubemaps in {{portal2|4.1}} will fail if the map file is not in the highest-numbered DLC folder ({{path|dlc2}} by default).
{{bug|Building cubemaps in {{portal2|4.1}} will fail if the map file is not in the highest-numbered DLC folder ({{path|dlc2}} by default).


{{workaround|Move the map to that folder before building cubemaps and, if necessary, edit the "'''Place compiled maps in this directory before running the game'''" path in [[Hammer Build Programs|Hammer's Build Programs]] options so that the map is automatically generated there.}}}}
{{workaround|Move the map to that folder before building cubemaps and, if necessary, edit the "'''Place compiled maps in this directory before running the game'''" path in [[Hammer Build Programs|Hammer's Build Programs]] options so that the map is automatically generated there.}}}}


 
===Portal 2: Community Edition===
 
=== Portal 2: Community Edition ===
{{bug|Amount of iterations (e.g.: {{command|buildcubemaps|2}}) doesn't currently work in {{p2ce|4.1}}.
{{bug|Amount of iterations (e.g.: {{command|buildcubemaps|2}}) doesn't currently work in {{p2ce|4.1}}.
{{workaround|Run the {{command|buildcubemaps}} command, reload the map, then run the command again. Successively repeat these steps if necessary.}}}}
{{workaround|Run the {{command|buildcubemaps}} command, reload the map, then run the command again. Successively repeat these steps if necessary.}}}}




 
===Source Filmmaker===
=== Source Filmmaker ===
[[File:Cubemap_bug_sfm.jpg|thumb|right|300px|Improper rendering of an HDR cubemap's face in Source Filmmaker.]]
[[File:Cubemap_bug_sfm.jpg|thumb|right|300px|Improper rendering of an HDR cubemap's face in Source Filmmaker.]]
{{bug|'''HDR''' cubemaps sizing lower than 64x64 built-in {{tf2|4.1}} and some other games usually display graphical artifacts on reflections due to the last face of each cubemap not rendering properly in {{sfm|4.1}}. While rebuilding cubemaps in it would normally fix the issue, it is currently not possible to do so as {{sfm|4.1}} generates blank textures.
{{bug|'''HDR''' cubemaps sizing lower than 64x64 built-in {{tf2|4.1}} and some other games usually display graphical artifacts on reflections due to the last face of each cubemap not rendering properly in {{sfm|4.1}}. While rebuilding cubemaps in it would normally fix the issue, it is currently not possible to do so as {{sfm|4.1}} generates blank textures.
Line 118: Line 116:
:{{workaround|Another option is to manually remove the [[$envmapsphere|sphere map]] (face #7) from the existing HDR cubemap textures. See [[$envmap#Creating a custom static cubemap texture|Creating a custom static cubemap texture]] for more info.<br>Alternatively, deleting the affected HDR cubemap texture files will cause the LDR versions to be used, which do not suffer from this bug.}}}}
:{{workaround|Another option is to manually remove the [[$envmapsphere|sphere map]] (face #7) from the existing HDR cubemap textures. See [[$envmap#Creating a custom static cubemap texture|Creating a custom static cubemap texture]] for more info.<br>Alternatively, deleting the affected HDR cubemap texture files will cause the LDR versions to be used, which do not suffer from this bug.}}}}


== Deleting cubemaps ==
==Deleting cubemaps==
Several tools make it possible to delete unnecessary or outdated cubemaps; [[BSPZIP]] is one official, command-line tool which is usually the preferred option for this procedure, allowing for an usage unlikely of corrupting the map file due to misuse. To delete cubemaps, execute the following command within the {{path|maps}} folder:
Several tools make it possible to delete unnecessary or outdated cubemaps; [[BSPZIP]] is one official, command-line tool which is usually the preferred option for this procedure, allowing for an usage unlikely of corrupting the map file due to misuse. To delete cubemaps, execute the following command within the {{path|maps}} folder:
  ..\..\bin\bspzip -deletecubemaps map_name.bsp
  ..\..\bin\bspzip -deletecubemaps map_name.bsp
Line 124: Line 122:
{{warning|Deleting cubemaps actually deletes all the texture ("[[Valve Texture Format|.vtf]]") files currently embedded into the map, so it's recommended not to embed custom textures before deleting cubemaps.}}
{{warning|Deleting cubemaps actually deletes all the texture ("[[Valve Texture Format|.vtf]]") files currently embedded into the map, so it's recommended not to embed custom textures before deleting cubemaps.}}


== Extracting cubemaps ==
==Extracting cubemaps==
In cases where a map has to be recompiled with minor changes (and its built cubemaps vanish as a result), extracting them beforehand will make it not necessary to go through the whole cubemap-building process again. To extract cubemaps with '''BSPZIP''', create a folder that will contain the extracted cubemaps inside the {{path|maps}} one, then execute the following command:
In cases where a map has to be recompiled with minor changes (and its built cubemaps vanish as a result), extracting them beforehand will make it not necessary to go through the whole cubemap-building process again. To extract cubemaps with '''BSPZIP''', create a folder that will contain the extracted cubemaps inside the {{path|maps}} one, then execute the following command:
  ..\..\bin\bspzip -extractcubemaps map_name.bsp "foldername"
  ..\..\bin\bspzip -extractcubemaps map_name.bsp "foldername"
Line 130: Line 128:




=== Embedding cubemaps ===
===Embedding cubemaps===
For '''BSPZIP''' to make a map use extracted cubemaps, create a text file inside the {{path|maps}} folder. The file's content should look like this:
For '''BSPZIP''' to make a map use extracted cubemaps, create a text file inside the {{path|maps}} folder. The file's content should look like this:
  materials/maps/map_name/c-128_384_64.hdr.vtf
  materials/maps/map_name/c-128_384_64.hdr.vtf
Line 147: Line 145:
{{note|Replace "''map_name''" with the map's actual name, "''textfile''" with the text file's actual name, and "''newmap_name''" with either the map's actual name, or a new name not to overwrite the original file (and instead create a separate one).}}
{{note|Replace "''map_name''" with the map's actual name, "''textfile''" with the text file's actual name, and "''newmap_name''" with either the map's actual name, or a new name not to overwrite the original file (and instead create a separate one).}}


== Renaming a map ==
==Renaming a map==
For built cubemaps to work, they must be located in a folder that is named after the map; this folder is automatically created within the map file during the building process. Renaming the map file will not also rename said folder, and therefore cubemaps will not be accessed. Some third-party apps allow renaming the folder, though it is not advisable to do so as it may corrupt the file. Instead, either delete and then rebuild the cubemaps, or revert the map to its original name.
For built cubemaps to work, they must be located in a folder that is named after the map; this folder is automatically created within the map file during the building process. Renaming the map file will not also rename said folder, and therefore cubemaps will not be accessed. Some third-party apps allow renaming the folder, though it is not advisable to do so as it may corrupt the file. Instead, either delete and then rebuild the cubemaps, or revert the map to its original name.


== See also ==
==See also==
* [[env_cubemap]]
* [[env_cubemap]]
* [[$envmap]]
* [[$envmap]]
* [[parallax_obb]] - For Parallax Corrected Cubemaps.
* [[parallax_obb]] - For Parallax Corrected Cubemaps.

Revision as of 04:28, 8 July 2024

Flag-white.pngEnglish (en)
Env cubemap.png
An example of specular reflections on some models (exaggerated through r_showenvcubemap).

A cubemap is a texture that represents a three-dimensional rendering of an area. Source Source uses env_cubemap entities as sampling points to generate these textures, which are then integrated into the map file. Cubemaps, when built, are reflected on materials that use the $envmap parameter (surfaces such as reflective glass, tiles, water, etc.) A map without built or existing env_cubemap entities will instead use other kinds of "reflections" that don't properly depict it.


Building cubemaps

Building cubemaps is the process of generating textures to use as reflections. For technical reasons, this process isn't automated (Except in Mapbase) and is up to the user to do so; until then, existing env_cubemap entities will remain unused and the map, depending on the game, will display either generic or "missing" textures as reflections due to nonexistent cubemaps.

Warning.pngWarning:
  • For people with epilepsy: Building cubemaps on games running on Vulkan, such as Left 4 Dead 2 Left 4 Dead 2, causes the screen to flash black and white violently.
  • If the nav_show_ladder_bounds command was used before building cubemaps, the green boxes will also be baked into the cubemap.

Before building

Broom icon.png
This article or section needs to be cleaned up to conform to a higher standard of quality because:
Modern Source games, namely Portal 2 and P2:CE, do not need all these complicated params and steps, at least in my experience -Equalizer (talk) 10:56, 22 March 2024 (PDT)
For help, see the VDC Editing Help and Wikipedia cleanup process. Also, remember to check for any notes left by the tagger at this article's talk page.

Template:ClassicImportant

Tip.pngTip:
  • env_cubemap entities allow for generating higher- or lower-quality reflections, though the game's texture quality also comes into play; consider maxing out your game's visual settings before building cubemaps.
  • To build cubemaps, your game's screen resolution needs to be at least 4 times higher than the highest size of an existing env_cubemap, or else attempting to build them will either fail or even cause the game to crash.
    For example, if the highest env_cubemap sizes 128x128, a resolution no lower than 512x512 will be required. (128 × 4 = 512 -> 720x576 (as a valid resolution) or higher)
    Note.pngNote:The game may appear to freeze or become unresponsive during the process, and the amount of time depends on various factors. For successful results, don't switch away from the game until it's done.
  • If you are using Mapbase Mapbase, you can add -autocubemap to your command line in Hammer Hammer. The game will automatically build cubemaps
  • Slammin' Source Map Tools Slammin' VBSP features the -nodefaultcubemap command, which skips automatically generating skybox cubemaps on map compile.

LDR

Note.pngNote:This step doesn't apply to Left 4 Dead Left 4 Dead nor Counter-Strike: Global Offensive Counter-Strike: Global Offensive as their maps are compiled in HDR mode only. While Portal 2 Portal 2 does support LDR, the game uses HDR by default, so we recommend building cubemaps in HDR only.

Building cubemaps in a map compiled in LDR (Low Dynamic Range) mode will generate textures only for that mode, regardless of your game's High Dynamic Range video setting. To build the cubemaps, submit the following commands into the game's console:

Command Description
mat_specular 0 Turns reflections Off; required to properly build cubemaps
map map_name Loads the map; replace "map_name" with the map's actual name
sv_cheats 1 Enables the use of cheat commands; required to build cubemaps
buildcubemaps Begins building cubemaps. Optionally, specify the number of iterations (e.g.: buildcubemaps 2 (default is 1))
disconnect Unloads the map and returns to the main menu
mat_specular 1 Turns reflections On
quit (optional) Exits the game. Relaunching it is required to display newly-built cubemaps

HDR

Building cubemaps in a map compiled with HDR support needs to be performed twice - once for each mode (HDR and LDR), depending on the game (games after Left 4 Dead does not requires building cubemaps in LDR). As opposed to an LDR map's case, your game's High Dynamic Range video setting has to be set to "Full" to build HDR cubemaps, and to "None" to build LDR ones. To build the cubemaps, submit the following commands into the game's console:

Command Description
mat_specular 0 Turns reflections off, which is necessary if using only one iteration of buildcubemaps.
map map_name Loads the map; replace "map_name" with the map's actual name
sv_cheats 1 Enables the use of cheat commands; required to build cubemaps
buildingcubemaps 1 Sets HDR exposure to a consistent value. This will automatically reset back to 0 after cubemaps are built.
buildcubemaps Begins building cubemaps. Optionally, specify the number of iterations (e.g.: buildcubemaps 2 (default is 1))
disconnect Unloads the map and returns to the main menu
sv_cheats 0 Disables cheat commands; prevents command mat_reloadallmaterials from unnecessarily self-executing (which briefly freezes the game)
mat_hdr_level 0 Switches to LDR mode (from HDR); submit mat_hdr_level 2 instead if LDR cubemaps were built first
map map_name Loads the map again to build cubemaps for the new mode
sv_cheats 1
buildcubemaps Begins building cubemaps for the new mode
disconnect
mat_specular 1 Turns reflections On
mat_hdr_level 0/1/2 If necessary, switches back to the mode it was before having submitted mat_hdr_level 0/2
quit (optional) Exits the game. Relaunching it is required to display newly-built cubemaps

Building cubemaps in specific games

Black Mesa: Source

To build cubemaps in Black Mesa Black Mesa maps, the game has to be launched with these parameters: -oldgameui -dev -console +r_4way_use_fast_normals 0 +mat_specular 0
Then, load the map and submit the buildcubemaps command into the console.

Half-Life: Source

Icon-Bug.pngBug:Building cubemaps in Half-Life: Source Half-Life: Source is currently not possible as their textures, despite being generated, aren't embedded into the map file afterward.
PlacementTip.pngWorkaround:Move the map file into the 🖿maps folder of a game in the same engine branch (such as Half-Life 2 Half-Life 2), build its cubemaps in that game, then move the file back into Half-Life: Source's folder.
Confirm:Fixed in Half-Life Deathmatch: Source?
  [todo tested in ?]

Portal 2

Icon-Bug.pngBug:Building cubemaps in Portal 2 Portal 2 will fail if the map file is not in the highest-numbered DLC folder (🖿dlc2 by default).
PlacementTip.pngWorkaround:Move the map to that folder before building cubemaps and, if necessary, edit the "Place compiled maps in this directory before running the game" path in Hammer's Build Programs options so that the map is automatically generated there.
  [todo tested in ?]

Portal 2: Community Edition

Icon-Bug.pngBug:Amount of iterations (e.g.: buildcubemaps 2) doesn't currently work in Portal 2: Community Edition Portal 2: Community Edition.
PlacementTip.pngWorkaround:Run the buildcubemaps command, reload the map, then run the command again. Successively repeat these steps if necessary.
  [todo tested in ?]


Source Filmmaker

Improper rendering of an HDR cubemap's face in Source Filmmaker.
Icon-Bug.pngBug:HDR cubemaps sizing lower than 64x64 built-in Team Fortress 2 Team Fortress 2 and some other games usually display graphical artifacts on reflections due to the last face of each cubemap not rendering properly in Source Filmmaker Source Filmmaker. While rebuilding cubemaps in it would normally fix the issue, it is currently not possible to do so as Source Filmmaker Source Filmmaker generates blank textures.
PlacementTip.pngWorkaround:If recompiling a special version of an affected map with env_cubemap's now sizing 64x64 (or higher) is not an option, move the map file into Alien Swarm Alien Swarm's 🖿maps folder, build its cubemaps in that game, then move the file back into Source Filmmaker Source Filmmaker's folder.
  [todo tested in ?]
Note.pngNote:Alien Swarm's "gameinfo.txt" file needs to be modified for this procedure so that the game can have access to assets used by other games' maps not to build cubemaps with missing textures or models. The file's "SearchPaths" section should look like this:
"SearchPaths"
{
	"Game"	"|gameinfo_path|."
	"Game"	"swarm_base"
	"Game"	"platform"
	"Game" "..\SourceFilmmaker\game\usermod"
	"Game" "..\SourceFilmmaker\game\tf_movies"
	"Game" "..\SourceFilmmaker\game\tf"
	"Game" "..\SourceFilmmaker\game\hl2"
}
Note.pngNote:Team Fortress 2 Team Fortress 2 configurations were used for the example; consider replacing game subfolders (only those within Source Filmmaker Source Filmmaker paths) with the ones needed.
PlacementTip.pngWorkaround:Another option is to manually remove the sphere map (face #7) from the existing HDR cubemap textures. See Creating a custom static cubemap texture for more info.
Alternatively, deleting the affected HDR cubemap texture files will cause the LDR versions to be used, which do not suffer from this bug.

Deleting cubemaps

Several tools make it possible to delete unnecessary or outdated cubemaps; BSPZIP is one official, command-line tool which is usually the preferred option for this procedure, allowing for an usage unlikely of corrupting the map file due to misuse. To delete cubemaps, execute the following command within the 🖿maps folder:

..\..\bin\bspzip -deletecubemaps map_name.bsp
Note.pngNote:Replace "map_name" with the map's actual name.
Warning.pngWarning:Deleting cubemaps actually deletes all the texture (".vtf") files currently embedded into the map, so it's recommended not to embed custom textures before deleting cubemaps.

Extracting cubemaps

In cases where a map has to be recompiled with minor changes (and its built cubemaps vanish as a result), extracting them beforehand will make it not necessary to go through the whole cubemap-building process again. To extract cubemaps with BSPZIP, create a folder that will contain the extracted cubemaps inside the 🖿maps one, then execute the following command:

..\..\bin\bspzip -extractcubemaps map_name.bsp "foldername"
Note.pngNote:Replace "map_name" with the map's actual name, and "foldername" with the actual name of the folder to extract cubemaps into.


Embedding cubemaps

For BSPZIP to make a map use extracted cubemaps, create a text file inside the 🖿maps folder. The file's content should look like this:

materials/maps/map_name/c-128_384_64.hdr.vtf
foldername\materials\maps\map_name\c-128_384_64.hdr.vtf
materials/maps/map_name/c-128_384_64.vtf
foldername\materials\maps\map_name\c-128_384_64.vtf
materials/maps/map_name/c448_-256_64.hdr.vtf
foldername\materials\maps\map_name\c448_-256_64.hdr.vtf
materials/maps/map_name/c448_-256_64.vtf
foldername\materials\maps\map_name\c448_-256_64.vtf
materials/maps/map_name/cubemapdefault.vtf
foldername\materials\maps\map_name\cubemapdefault.vtf
Note.pngNote:Replace "map_name" with the map's actual name, the cubemaps' filenames with correct ones, and "foldername" with the actual name of the folder that contains the extracted cubemaps.

A file requires two dedicated lines (paths): the first line represents the path it will use within the map file, whereas the second one is the actual location of the file to embed into the map file. Relative location paths were used for the example, but they can also be Absolute. Once the text file is ready, execute the following command:

..\..\bin\bspzip -addlist map_name.bsp textfile.txt newmap_name.bsp
Note.pngNote:Replace "map_name" with the map's actual name, "textfile" with the text file's actual name, and "newmap_name" with either the map's actual name, or a new name not to overwrite the original file (and instead create a separate one).

Renaming a map

For built cubemaps to work, they must be located in a folder that is named after the map; this folder is automatically created within the map file during the building process. Renaming the map file will not also rename said folder, and therefore cubemaps will not be accessed. Some third-party apps allow renaming the folder, though it is not advisable to do so as it may corrupt the file. Instead, either delete and then rebuild the cubemaps, or revert the map to its original name.

See also