Ru/HDR Skybox Creation

В отличие от большинства текстур в игре, Skybox представляет собой коллекцию больших и ярких объектов. Это делает более актуальным.
 текстуры используются HDR-Skybox для хранения цветов либо в слегка сжатых 16-битных значениях (RGBA16161616f), либо в сильно сжатых 8-битных (BGRA8888). В любом случае, они будут созданы из несжатых 32-битных с плавающей точкой Portable Float Map (.pfm) файлов. 
 
== Создание отдельных текстур кубической карты из панорамы ==
Вы можете создать HDR скайбокс с помощью этого аддона. Просто создайте сферу с количеством сегментов равным 64 и выполните шаги третьего абзаца. Далее идут инструкции как сделать это без этого аддона в ручную.
Для того, чтобы создать HDR скайбокс, нужно иметь отдельные файлы .exr или .hdr для каждой стороны скайбокса, которые будут преобразован в .pfm, а затем уже в .vtf.
Чтобы из панорамы сделать отдельные текстуры, нужно каждую из них отрендерить с текстуры шара. Для этого удобнее всего использовать blender.
Имя	Поворот (x y z)
ft 	90 0 90
lf 	90 0 0
bk 	90 0 -90
up 	180 0 180
rt 	90 0 -180
dn 	0 0 -180
# Создайте новую сцену и удалите все объекты.
# Создайте шар и установите количество сегментов с 32, на 64.
# Создайте камеру в центре сцены. В её настройках измените тип на перспективный, установите фокусное расстояние 64мм и конец на 100000, подгонку сенсора на горизонтальное и там же ширину на 128. Скопируйте эту камеру ещё 5 раз. В итоге у вас должно получиться 6 одинаковых камер, находящихся в центре сцены. Каждая из камер будет рендерить за свою текстуру определённой грани скайбокса.
# Для каждой из камер задайте поворот из таблицы. При рендере каждой текстуры их нужно будет назвать особым именем, так что рекомендуется переименовать камеры, чтобы не запутаться.
Теперь нужно подготовить рендер для каждой камеры.
# На временной шкале сделайте начальный кадр №1, а конечный кадр №7.
# Перетащите курсор воспроизведения на первый кадр.
# Выберете камеру и нажмите ctrl+b с курсором мыши на временной шкале.
# Перетащите курсор воспроизведения на второй кадр.
# Выберете другую камеру и нажмите ctrl+b с курсором мыши на временной шкале.
Сделайте так со всеми камерами.
Отлично! Теперь нужно подготовить панораму.
# Перейдите в окно shading и создайте новый материал и нанесите его на сферу.
# Удалите все ноды кроме вывода материала.
# Добавьте нод "Излучение" ("Emission") и подключите вывод этого нода к "Поверхности" вывода материала. Этот нод отвечает за яркость скайбокса.
# Добавьте нод "Изображение-текстура" и подключите вывод цвета к вводу цвета нода "Излучение".
# Загрузите .exr или .hdr панораму в ноде "Изображение-текстура".
Теперь пришло время рендерить текстуры. Убедитесь что в выводе у вас стоит формат файла "Open EXR" с параметром RGB, а в поле "Постобработка" убрана галочка с поля "Видеоредактор" ("Sequencer").
Теперь можно перетаскивать курсор воспроизведения на кадр с камерой и рендерить каждую грань скайбокса с помощью кнопки F12. Каждый файл .exr нужно назвать по следующему шаблону:
*
Например для камеры ft и названием скайбокса skyday01 будет соответствовать файл .
По итогу у вас должно быть 6 файлов разных сторон кубмапа:
*
*
*
*
*
*
== Создание PFM ==
=== Небо с различной экспозицией ===
Перед созданием HDR-Skybox Вы должны запомнить, что небо выглядит в разных экспозициях:
Как вы видите, захваченные изображения меняются в зависимости от экспозиции. Одно 8-битное изображение никогда не используется при создании таких эффектов: в 8-битном белый и есть белый, а солнце, чтобы выделиться, должно хоть немного отличаться от всех остальных цветов неба.
=== Создание базового Skybox ===
Первое, что Вы должны сделать - создать базовый куб Skybox, таким же образом, как и для LDR-Skybox. Посмотрите 
Расположите Ваши приготовленные изображения в один большой файл, как показано ниже. Этот пункт необходим только, если вы используете инструмент . Если это не так, то Вы вполне можете обрабатывать каждую текстуру отдельно.
Сохраните это изображение в формате .TGA. Если появится окно с запросом, то отключите RLE-сжатие и поместите оригинал в нижний левый угол.
=== Добавление HDR-Данных ===
Теперь мы будем рисовать солнце на нашем Skybox, которое будет себя вести так же, как на фотографиях выше. Для этого есть хороший инструмент - 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 ====
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.
== 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 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 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 ==
* 
* - How to add basic HDR lighting effects.
* - Information on customizing HDR lighting settings.
* 
* 
* - Аддон для blender для удобного создания hdr скайбокса
* - 3ds Max tool that renders your scene into PFM and compiles to VTF.