HDR Skybox Creation

From Valve Developer Community
Jump to: navigation, search
English
Выгода HDR-Skybox (слева) в том, что они позволяют использовать более широкий диапазон яркости.

В отличие от большинства текстур в игре, Skybox представляет собой коллекцию больших и ярких объектов. Это делает HDR более актуальным.

VTF текстуры используются HDR-Skybox для хранения цветов либо в слегка сжатых 16-битных значения с плавающей точкой с плавающей точкой (RGBA16161616f), либо в сильно сжатых 8-битных целых (BGRA8888). В любом случае, они будут созданы VTEX из несжатых 32-битных с плавающей точкой Portable Float Map (.pfm) файлов.

Tip:Несжатые HDR VTF могут быть декомпилированы в PFM с помощью vtf2tga. Не обращайте внимания на название программы.

Создание PFM

Tip:
Половина всего изображения
Поскольку нижнюю половину Skybox практически не видно, разумно отрезать "ненужную" часть. Для этого скомпилируйте стороны VTF с особой командой:
clamps 1
clampt 1

И добавьте её в материалы:

$basetexturetransform "center 0 0 scale 1 2 rotate 0 translate 0 0"

Поподробнее об использовании команд можно прочитать ниже, в подпункте "Создание материалов".

Небо с различной экспозицией

Перед созданием HDR-Skybox Вы должны запомнить, что небо выглядит в разных экспозициях:


Фотографии неба с различной экспозицией.

Как вы видите, захваченные изображения меняются в зависимости от экспозиции. Одно 8-битное изображение никогда не используется при создании таких эффектов: в 8-битном белый и есть белый, а солнце, чтобы выделиться, должно хоть немного отличаться от всех остальных цветов неба.

Создание базового Skybox

Первое, что Вы должны сделать - создать базовый куб Skybox, таким же образом, как и для LDR-Skybox. Посмотрите Skybox (2D)

Расположите Ваши приготовленные изображения в один большой файл, как показано ниже. Этот пункт необходим только, если вы используете инструмент деления Skybox. Если это не так, то Вы вполне можете обрабатывать каждую текстуру отдельно.

Рекомендованное расположение Skybox (стороны помечены)

Сохраните это изображение в формате .TGA. Если появится окно с запросом, то отключите RLE-сжатие и поместите оригинал в нижний левый угол.

Добавление HDR-Данных

Теперь мы будем рисовать солнце на нашем Skybox, которое будет себя вести так же, как на фотографиях выше. Для этого есть хороший инструмент - HDR Shop

Note:При открытии вашего TGA-Файла в HDR Shop Вы увидите диалоговое окно с ползунком. Поэкспериментируйте с ним, но лучше оставить все как есть.

HDR Shop работает так: берет файлы из редакторов изображений для разнообразных экспозиций, чтобы затем их объединить в 32-битный формат с плавающей точкой. Вы можете регулировать изменения с помощью клавиш + и - на клавиатуре, или из меню View -> Exposure (Вид -> Экспозиция). Значение отображается в правом нижнем углу экрана.

По достижении необходимой экспозиции, выберите File -> Edit in image editor (Файл -> Изменить в редакторе изображений). Вы сможете редактировать изображение. HDR Shop откроет его в стандартном BMP-Редакторе, но можно использовать любой инструмент, который сохранит в правильном формате.

Более подробный урок находится на сайте HDR Shop]

Когда закончите, нажмите OK в диалоговом окне HDR Shop и выберите File -> Save as..., выберите формат 'Portable Floatmap'. Назовите и сохраните этот PFM-Файл туда же и так же, как исходное изображение 2D Skybox.

sdk_sky_exampleup

sdk_sky_exampleup


sourcesdk_content\dod\materialsrc\skybox\sdk_sky_exampleup.tga. Откройте и установите экспозицию на шаг -3, затем отредактируйте изображение. Начнем рисовать солнце.

После возвращения в HDR Shop и закрытия диалогового окна, установленная экспозиция будет обновляться с изображением.

Попытайтесь настроить экспозиции по-разному, и Вы увидите, что солнце теперь отлично сочетается в любых вариациях. Продолжайте редактировать различные экспозиции до желаемого результата. Потратить время на имитацию эффектов солнечного свечения и бликов на облаках, как показано на референсах.

Деление Skybox

If you created your skyboxes in a single file as in the above image, you will need to use splitskybox.exe to split it into six. Just drag the PFM onto it.

Note:splitskybox:ru Ep1 does not currently function. However, the OB version will work with either version of the engine.
Note:Left 4 Dead 2:ru Splitskybox is not a required step. And in fact will not work without lots of retyping of suffixes of multiple files. Left 4 Dead 2's iteration of VTEX:ru is able to take your "T" image array (both tga into LDR and pfm into HDR) and process it directly into the proper <name_bk>vtf format. In order to do this, create your "T" array as above. Recommended simply for the sake of sanity to get proper orientation for the top (and bottom if needed) images in your custom skybox. Create your txt file as normal and drag it onto Left 4 Dead 2's Vtex. Create materials and use in game as normal. A caveat here is, although the vtf files are compiled properly for LDR, if you are opting out of an HDR skybox and plan to use a LDR skybox only, the supplied LDR material template in the skybox_(2D):ru tutorial does not work. You will get the checkerboard pattern. I am still working on this problem. If you are trying to import an HDR skybox (meaning, if you rendered out a set of skybox textures in your external software, and then used HDRShop to create the hdr data) of a night sky, you will experience extreme banding in the darker areas which resemble dx compression. This banding is actually a result of the way HDRShop handles color information and can be observed directly in HDRShop if you adjust down the exposure and inspect your image. I am currently experimenting with solutions and will keep you posted.

Creating the materials

At this stage you should have six files:

  • <skyname>_hdrft.pfm
  • <skyname>_hdrlf.pfm
  • <skyname>_hdrbk.pfm
  • <skyname>_hdrrt.pfm
  • <skyname>_hdrup.pfm
  • <skyname>_hdrdn.pfm

Make sure they are under your_mod\materialsrc\skybox\. You now need to create six corresponding TXT files (e.g. <skyname>_hdrft.txt) alongside them, in order to compile to VTF. Each must contain:

pfm 1 // Flag as HDR texture
pfmscale 1 // brightness multiplier
nonice 1 // prevent seams appearing at low texture detail
nocompress 1 // optional; removing halves filesize, but causes color banding under close inspection

Drag these text files onto VTEX and it will compile them (unfortunately VTFEdit:ru doesn't import PFMs). The VTFs will appear in the corresponding materials subfolder (e.g. your_mod\materials\skybox\).

Now you just need to create six VMTs named <skyname>_hdr<face>.vmt. These should read:

Sky
{
	// if you compiled with nocompress:
	$hdrbasetexture		"skybox/sdk_sky_example_hdrft"

	// if you didn't:
	$hdrcompressedtexture	"skybox/sdk_sky_example_hdrft"

	$basetexture		"skybox/sdk_sky_exampleft"
}

Creating LDR fallbacks

You must also create standard low dynamic range VTFs for users who do not play in HDR. Compile with these settings:

nonice 1
dxt5 1 // or nocompress

These are ordinary textures, so you can use VTFEdit:ru if you prefer. There is no need to create new materials for LDR users; they will load the _hdr ones.

Usage

In Hammer, go to Main Menu > Map > Map Properties > Skybox Texture Name and type the name of your skybox, relative to materials\skybox\ and without any of the face suffixes. (e.g. just MySky.)

See also

Environment articles:
Skies and environment maps Skybox (2D)Skybox (3D)HDR SkiesSkybox with TerragenSkybox with Terragen - AdvancedList of skies
Terrain and displacement mapping DisplacementsHoles in displacementsDigital Elevation Models