Cubemaps

From Valve Developer Community
Jump to navigation Jump to search
Under construction.png
This page is actively undergoing a major edit.
As a courtesy, please do not edit this while this message is displayed.
If this page has not been edited for at least several hours to a few days, please remove this template. This message is intended to help reduce edit conflicts; please remove it between editing sessions to allow others to edit the page.

The person who added this notice will be listed in its edit history should you wish to contact them.

Info content.png
This page needs to be translated.
This page either contains information that is only partially or incorrectly translated, or there isn't a translation yet.
If this page cannot be translated for some reason, or is left untranslated for an extended period of time after this notice is posted, the page should be requested to be deleted.
Also, please make sure the article tries to comply with the alternate languages guide.
English (en)Español (es)Français (fr)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)
Pendência: Precisa de informações sobre os cube maps da Source 2. Veja Draft:Cubemaps (Source 2).
Env cubemap.png
Um exemplo de reflexos especulares em alguns modelos (exagerados por causa do r_showenvcubemap).

Um cubemap é uma textura que representa uma representação tridimensional de uma área. Source Source usa entidades env_cubemap como pontos de amostragem para gerar estas texturas, que são depois integradas no arquivo do mapa. Os cubemaps, quando construídos, são refletidos em materiais que usam o parâmetro $envmap (superfícies como vidro refletor, azulejos, água, etc.) Um mapa sem entidades env_cubemap construídas ou existentes usará outros tipos de “reflexões” que não o retratam corretamente.


Construindo Cubemaps

BConstruir cubemaps é o processo de gerar texturas para usar como reflexões. Por razões técnicas, este processo não é automatizado ( Exceto no translation Mapbase) e cabe ao usuário fazê-lo; até lá, as entidades env_cubemap existentes permanecerão sem uso e o mapa, dependendo do jogo, mostrará uma textura genérica, preta ou texturas “ em falta” como reflexos devido a cubemaps inexistentes.

Warning.pngAtenção:
  • PARA PESSOAS COM EPILEPSIA: A criação de cubemaps em jogos executados em Vulkan, como Left 4 Dead 2 Left 4 Dead 2, faz com que a tela pisque violentamente em preto e branco. Também em sistemas com CPU/GPU mais rápida , a criação de cubemaps HDR em jogos do ramo pré-L4D, como Counter-Strike: Source Counter-Strike: Source, mesmo com Direct3D 9/DX9, também fará a tela piscar em preto e branco repetidamente.
  • Se o comando nav_show_ladder_bounds tiver sido usado antes da criação de cubemaps, as caixas verdes também serão incorporadas ao cubemap.
  • Se estiver criando cubemaps para o Half-Life 2 Half-Life 2 (exceto os episódios) após a Atualização do Aniversário de 20 anos, você deverá iniciar o jogo com -game hl2 argumento da linha de comando. Caso contrário, o jogo tentará acessar o episodic/maps (Half-Life 2: Episode One) em vez do diretório de mapas Half-Life 2, fazendo com que o jogo não salve os cubemaps criados no mapa. Da mesma forma, se estiver criando cubemaps para mapas localizados no diretório Episode One ou Episode Two, inicie o jogo com -game episodic (para EP1) ou -game ep2 (para o EP2), respectivamente (ou inicie o Episódio Um/Episódio Dois em Steam > Ferramentas).

Antes de construir

Broom icon.png
This article or section needs to be cleaned up to conform to a higher standard of quality because:
Os jogos Source modernos, nomeadamente Portal 2 e P2:CE, não precisam de todos estes parâmetros e passos complicados, pelo menos na minha experiência -Equalizer (talk) 10:56, 22 março 2024 (PDT)

Também alguns jogos Source (como o CS:S), não parecem necessitar que os cheats estejam activados para construir cubemaps. -leonidakarlach (talk) 02:50, 25 agosto 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.
Icon-Important.pngImportante:Mapas para jogos Source 2013 Source 2013 e outros, como Counter-Strike: Source Counter-Strike: Source, são conhecidos por incluírem cubemaps pré-construídos e em branco depois de serem compilados (mesmo que não existam entidades env_cubemap' neles); estes devem ser apagados antes de construir novos, como detalhado aqui. Tal foi corrigido no Mapbase Mapbase
Tip.pngDica:
  • As entidades env_cubemap permitem gerar reflexos de alta ou baixa qualidade, embora a qualidade da textura do jogo também entre em jogo; considere maximizar as configurações visuais do jogo antes de criar cubemaps.
  • Para criar cubemaps, a resolução da tela do seu jogo precisa ser pelo menos 4 vezes maior do que o maior tamanho de um env_cubemap existente, caso contrário, a tentativa de criá-los falhará ou até mesmo causará o travamento do jogo.
    Por exemplo, se o maior env_cubemap tiver o tamanho 128x128, será necessária uma resolução não inferior a 512x512. (128 × 4 = 512 -> 720x576 (como uma resolução válida) ou superior)
    Note.pngNota:O jogo pode parecer congelar ou deixar de responder durante o processo, e o tempo depende de vários fatores. Para obter resultados bem-sucedidos, não se afaste do jogo até que ele seja concluído.
  • Se estiver usando o Mapbase Mapbase, adicione -autocubemap à sua linha de comando em Hammer. O jogo criará automaticamente cubemaps
  • O Slammin' Source Map Tools Slammin' VBSP apresenta o comando -nodefaultcubemap, que ignora a geração automática de cubemaps skybox na compilação do mapa

.

LDR

Note.pngNota:Esta etapa não se aplica a Left 4 Dead Left 4 Dead nem a Counter-Strike: Global Offensive Counter-Strike: Global Offensive, pois seus mapas são compilados somente no modo HDR. Embora o Portal 2 Portal 2 seja compatível com LDR, o jogo usa HDR por padrão, portanto, recomendamos a criação de cubemaps somente em HDR.

A criação de cubemaps em um mapa compilado no modo LDR (Low Dynamic Range) gerará texturas somente para esse modo, independentemente da configuração de vídeo High Dynamic Range do jogo. Para criar os cubemaps, envie os seguintes comandos para o console do jogo:

Comando Descrição
mat_specular 0 Desativa os reflexos, o que é necessário se estiver usando apenas uma iteração de buildcubemaps. Isso também significa que a desativação dos reflexos evitaria alguns casos em que as texturas ausentes ou a textura padrão do cubemap (materials/engine/defaultcubemap.vtf, também conhecida como um deserto com céu laranja ao pôr do sol), poderiam acabar refletidas no próprio cubemap.
map map_name Carrega o mapa; substitua "map_name" pelo nome real do mapa
sv_cheats 1 Habilita o uso de comandos de trapaça; necessário para criar cubemaps
Confirmar:Half-Life 2 não parece exigir trapaças para criar cubemaps, portanto esta etapa pode ser ignorada. Confirme se outros jogos também exigem trapaças para criar cubemaps.
buildcubemaps Inicia a criação de cubemaps. Opcionalmente, especifique o número de iterações (e.g.: buildcubemaps 2 (default is 1))
disconnect Descarrega o mapa e retorna ao menu principal
mat_specular 1 Ativa os reflexos.
quit (opcional) Sai do jogo. Em alguns jogos, é necessário reiniciar o jogo para exibir os cubemaps recém-construídos

LDR + HDR

A construção de cubemaps no jogo Source 2006 - Source 2013, com um mapa compilado com suporte a HDR, precisa ser executada duas vezes - uma para cada modo (HDR e LDR). Ao contrário do caso de um mapa LDR, a configuração de vídeo High Dynamic Range do seu jogo deve ser definida como “Full” para criar cubemaps HDR e como “None” para criar cubemaps LDR (ou usando o comando mat_hdr_level. Para criar os cubemaps para LDR + HDR, envie os seguintes comandos para o console do jogo:

Note.pngNota:Os mapas criados em Left 4 Dead ou posteriores (e alguns jogos Source de terceiros) não exigem a criação de cubemaps em LDR. Veja #HDR
Comando Descrição
mat_specular 0 Desativa os reflexos, o que é necessário se estiver usando apenas uma iteração de buildcubemaps. Isso também significa que a desativação dos reflexos evitaria alguns casos em que as texturas ausentes ou a textura padrão do cubemap (materials/engine/defaultcubemap.vtf, também conhecida como um deserto com céu laranja ao pôr do sol), poderiam acabar refletidas no próprio cubemap.
map map_name Carrega o mapa; substitua "map_name" pelo nome real do mapa
sv_cheats 1 Habilita o uso de comandos de trapaça; necessário para criar cubemaps
Confirmar:Half-Life 2 não parece exigir trapaças para criar cubemaps, portanto, esta etapa pode ser ignorada. Confirme se outros jogos também exigem trapaças para criar cubemaps
.
building_cubemaps 1 Define a exposição HDR em um valor consistente. Isso será redefinido automaticamente para 0 depois que os cubemaps forem criados.
buildcubemaps Começa a criar cubemaps. Opcionalmente, especifique o número de iterações (e.g.: buildcubemaps 2 (o padrão é 1))
disconnect Descarrega o mapa e retorna ao menu principal
sv_cheats 0 Desativa os comandos de trapaça; evita que o comando mat_reloadallmaterials se autoexecute desnecessariamente (o que congela o jogo por um breve período)
mat_hdr_level 0 Muda para o modo LDR (de HDR); em vez disso, envie mat_hdr_level 2 se os cubemaps LDR tiverem sido criados primeiro
map map_name Carrega o mapa novamente para criar cubemaps para o novo modo
sv_cheats 1
buildcubemaps Begins building cubemaps for the new mode
disconnect
mat_specular 1 Ativa os reflexos.
mat_hdr_level 0/1/2 Se necessário, retorna ao modo em que estava antes de ter enviado mat_hdr_level 0/2
quit (opcional) Sai do jogo. Em alguns jogos, é necessário reiniciar o jogo para exibir os cubemaps recém-construídos

HDR

Esta seção destina-se a jogos que executam Left 4 Dead engine branch Left 4 Dead engine branch e ramificações de mecanismo posteriores ou ramificações de mecanismo que suportam apenas HDR (Xengine). Para criar cubemaps apenas em HDR, envie os seguintes comandos para o console do jogo:

Comando Descrição
mat_specular 0 Desativa os reflexos, o que é necessário se estiver usando apenas uma iteração de buildcubemaps. Isso também significa que a desativação dos reflexos evitaria alguns casos em que as texturas ausentes ou a textura padrão do cubemap (materials/engine/defaultcubemap.vtf, também conhecida como um deserto com céu laranja ao pôr do sol), poderiam acabar refletidas no próprio cubemap.
map map_name Carrega o mapa; substitua "map_name" pelo nome real do mapa
sv_cheats 1 Permite o uso de comandos de trapaça; necessário para criar cubemaps
building_cubemaps 1 Define a exposição HDR em um valor consistente. Isso será redefinido automaticamente para 0 depois que os cubemaps forem criados.
buildcubemaps Inicia a criação de cubemaps. Opcionalmente, especifique o número de iterações
disconnect Descarrega o mapa e retorna ao menu principal
mat_specular 1 Ativa os reflexos.
quit (opcional) Sai do jogo. Em alguns jogos, é necessário reiniciar o jogo para exibir os cubemaps recém-construídos

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.pngErro: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.pngGambiarra: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.
Confirmar:Fixed in Half-Life Deathmatch: Source?
  [todo tested in?]

Half-Life 2 (20th Anniversary Update)

Icon-Bug.pngErro:Building cubemaps in Half-Life 2 Half-Life 2, Half-Life 2: Episode One Half-Life 2: Episode One and Half-Life 2: Episode Two Half-Life 2: Episode Two, after 20th anniversary update, might fail. In Half-Life 2 case, the game may access the wrong directory (example: episodic/maps), instead of hl2/maps, preventing the cubemaps from embedded into the map file.

You may also see this error message generated on the console: vtex failed to compile cubemap! Unable to remove \steamapps\common\half-life 2\episodic\materials\maps\<map name>\<cubemap location>.vtf

PlacementTip.pngGambiarra:Launch Half-Life 2 with -game hl2 command line argument. For Episodes, launch the game through Steam > Tools (or using -game episodic or -game ep2).

Portal 2

Icon-Bug.pngErro: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.pngGambiarra: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.pngErro:Amount of iterations (e.g.: buildcubemaps 2) doesn't currently work in Portal 2: Community Edition Portal 2: Community Edition.
PlacementTip.pngGambiarra: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.pngErro: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.pngGambiarra: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.pngNota: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.pngNota: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.pngGambiarra: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.pngNota:Replace "map_name" with the map's actual name.
Warning.pngAtenção: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.pngNota: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.pngNota: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.pngNota: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