Ru/Adding PBR to Your Mod

Цель этой статьи - показать вам, как реализовать Thexa4's PBR шейдер в вашем моде. Реализация этого шейдера позволит вам использовать metalness/roughness PBR поверхности в материалах.
== Вступление ==
== Требования ==
* Умение компилировать шейдеры.
* Умение компилировать решения.
== Реализация == 
Прежде чем делать что-то, нам нужно скачать файлы.
Вы можете сделать это перейдя по ссылкам ниже, нажмите кнопку "Raw" и как только страница загрузится кликните правой кнопкой мыши и выберите "Save As...".
Все что от вас требуется, это сохранить эти файлы в директорию с исходным кодом вашего мода в .
* pbr_dx9.cpp
* pbr_vs30.fxc
* pbr_ps30.fxc
* pbr_vs20b.fxc
* pbr_ps20b.fxc
* pbr_common_ps2_3_x.h
После того как вы завершите сохранение файлов, откройте в соответствии с базированием вашего мода (base/hl2mp/hl2/episodic), и добавьте файлы PBR внутрь вот так:
Мы делаем это для того, чтобы когда мы обновим решение, файлы появились в обозревателе решений.
=== Компиляция шейдеров ===
Нам нужно скомпилировать шейдеры перед их использованием. Создайте 2 файла в с именем и , и вставьте это внутрь:
Добавление этих новых текстовых файлов для компиляции шейдера, позволит вам скомпилировать PBR шейдер без влияния на стандартные шейдеры.
Это также значительно сократит время компиляции.
Теперь откройте используя текстовый редактор и измените эту часть:
C:
На:
Это позволит вам использовать наши текстовые файлы, которые мы создали ранее, чтобы скомпилировать наш PBR шейдер.
После этого, мы можем начать компиляцию нашего шейдера запустив , или в зависимости от того, на чем базируется ваш мод.
Убедитесь что следовали статье до того момента, когда вновь скомпилированные шейдеры будут правильно помещены в папку вашего мода .
Если шейдеры скомпилировались без проблем, вернитесь назад в вашу директорию с исходым кодом и запустите .
Откройте решение и скомпилируйте шейдеры в .
== Исправления ==
Физические пропы становятся черными, если используют материал с PBR шейдером, после 2-3 секунд из-за Prop Sleeping. После указанного времени, пропы "запекают" свой свет для оптимизации.
Вы можете обойти это написав в консоли или прописать в .
Вот, как вы можете прописать это в коде:
Под добавьте это:
#define PBR_CHANGE
Затем найдите и замените его данным условием:
#ifdef PBR_CHANGE
	ConVar r_PhysPropStaticLighting( "r_PhysPropStaticLighting", "0" );
#else
	ConVar r_PhysPropStaticLighting( "r_PhysPropStaticLighting", "1" );
#endif
== Параметры ==
* - Albedo текстура.
* $normaltexture - карта нормалей (для обратной совместимости).
* - карта нормалей (новый вариант указания карты нормалей).
* $mraotexture - Текстура с metalness на красном канале, roughness на зеленом канале и ambient occlusion на синем канале.
* $speculartexture - Включает использование цветной F0 (карты отражений), перезаписывая текстуру с metalness из MRAO текстуры. 
* $emissiontexture - Позволяет установить текстуру c emission. Включает self illumination 
 .
* $useenvambient <> - Позволяет использовать самый низкий уровень mip карт кубмапов для окружающего освещения вместо кубов окружения. Может вызывать артефакты при перемещении пропов.
* - По умолчанию "env_cubemap", но также позволяет исвользовать свой вариант.
* - Связывает поверхность или с набором физических свойств.
* - Должно иметь значение "1" если материал используется для пропа.
* - Установка данного параметра на "1" включает Alpha-смешивание.
* - Выглядит так: "center 0.5 0.5 scale 0.1025 0.1025 rotate 0 translate 0 0" для 2m на 2m текстуры.
* - Позволяет обрезать пиксели, когда альфа-значение опускается ниже 
* - Задаёт минимальное значение цвета альфа-канала, в котором эффект округляется до 255. Значение «.3» создаст более толстую форму, а значение «.7» создаст более тонкую форму.
* - Список ключевых слов разделенных запятыми. Примеры ключевых слов: architectural,brown,gray,grime,hanger,industrial,metal,modern,shed,urban,wall,floor
* $useparallax <> - Использовать Parallax Occlusion Mapping.
* $parallaxdepth <> - Гулибна Parallax карты.
* $parallaxcenter <> - Средняя глубина Parallax карты
== Примеры ==
=== Браш (не модельные поверхности), образец материала ===
=== Модель, образец материала ===
=== Модель, образец материала с картой отражений ===
== Вывод ==
Вот и все! Теперь в вашем моде есть PBR.
==See also==
*PBR (shader)