×
Menu

PBR Shaders

ПБР - шейдеры это относительно новое веяние 3д технологий, позволяющее создавать "физически реалистичные прототипы" материалов.
*+карта бампа, особенно в нашем случае.
 
Вот эту вот новомодность завезли в Морровинд посредством МГЕ и МСП году в 2015ом.
Что позволило выжать из игры совершенно новую картинку, с блеском, полноценным бампом и другими эффектами.
Которые, в свою очередь, наложились на, уже имеющиеся, эффекты блеска и фейкового бампа.
Так что, по видимости, МВ утоптал многие другие игры одновременно используя сразу два типа эффектов на моделях.
 
Вдаваться в особые подробности о ПБРах не станем, для этого есть сеть и специализированные сайты.
Но отметим, что было накоплено за прошедший год.
 
На данный момент, 12 2016 - ПБР шейдеры в МВ находятся в самой ранней стадии становления.
Фактически - на экспериментальном уровне. А завезли из в начале 2015го...
(прим. ред. - до 2019го не было без изменений. В 2019ом Хрчмд продолжил работы, но увы, далеко не продвинулся.)
(прим. ред. - на начало 2020, тишина продолжается. )
(прим. ред. - 2022 год, все глухо. Т.е. направление не получает развития, хотя МГЕ и МВСЕ активно развиваются)
Т.е. МГЕ может их включать, но просад ФПС при этом происходит зверский.
Делающий СОВЕРШЕННО невозможным нормальную игру в этом режиме.
 
Особенно сильное падение происходит от нескольких источников света.
Когда объект освещен чем-то одним, фпс приемлемый, но сцена с двумя и более светильниками убивает фпс полностью.
Также, для включения этого режима потребуется МГЕ ХЕ version 0.10.0b16 с дополнительно настроенными режимами переключения освещения. Т.е. надо зайти в конфигуратор, выбрать раздел настроек клавиатуры и повесить на какую-нибудь клавишу "переключение режимов". После этого, зайдя в игру можно будет менять оные. На данный момент добавлено два новых режима линейного освещения и да, режим ПБР. При выборе которого игра сильно задумается, а потом, вы сможете увидеть нечто совсем новое.
См. внизу страницы.
 
А самое занятное!
ПБР шейдеры не требуют знаний кодинга шейдеров, как таковых, достаточно создать правильный набор текстур и объяснить игре, как это обрабатывать.
- Для первого потребуется 2д редактор ака Гимп, Фотошоп, ПайнтНет.
- Для второго, любой текстовый редактор.
 
Вкратце, требуется создания нескольких новых текстур с целевой и создания текстового файла с указанием параметров.
1. альбедо (более светла копия целевой текстуры)
2. Глосс карта (ака ParametersTexture)
3. RoughnessSource ака карта потертостей и доп. детализации.
4. Бамп, полноценная карта нормалей.
5. и возможно SpecOcclusionSource текстура.
 
За подробностями см. в этих статьях.
https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/
http://www.marmoset.co/toolbag/learn/pbr-theory
Что такое ПБР шейдер и как его готовят.
http://artisaverb.info/PBT.html
 
Полученные текстуры сохраняются в каталог  Morrowind\Data Files\materials\ВашаПапка.
Т.е. рекомендуется создать папку для своих текстур.
Где для удобства можно создать еще 5 подкаталогов, для каждого типа текстур, куда сохранять новые текстуры без переименования.
Получив текстуры, остается прописать их в текстовом файле и указать значения блеска.
 
Настройки эффектов хранятся в файле  с именем текстуры в папке materials.
Т.е. для начала надо создать копию файла _automaterial.txt и переименовать ее в; имявашейтекстуры.тхт
(для tx_bottle_02.dds -> будет tx_bottle_02.txt и т.д.)
Файл имеет достаточное кол-во комментариев, облегчающих его понимание.
Поскольку технология работает в экспериментальном режиме, возможно, что-то будет меняться в будущем.
Т.е. автор поменяет некоторые спецификации.
Поэтому не вдаемся в подробности.
 
Так, или иначе, но ПБР шейдеры способные полностью преобразить игру теперь с Нами!
Остается выразить ОГРОМНУЮ НАДЕЖДУ на их успешное внедрение и оптимизацию!
 
Примечание.
ПБР - потихоньку завозят и в ОпМВ, здесь производительнось несколько лучше

Всего 8 параметров.
При этом, 3-4 можно сокращать, т.к. они используются только для текстур с высоким показателем блеска.
MaterialVersion
2
всегда должно быть! видимо нужно для правильной работы шейдеров.
NormalsTexture
normals.dds
указывается  путь к карте нормалей. всегда должно быть!
AlbedoReplaceTexture
 albedo.dds
путь к текстуре Албедо. Не обязательно.
Автор пишет, мол, это для слишком темных текстур требуется, если оные плохо читаемы.
Эта текстура является ЗАМЕНОЙ оригинальной текстуре, т.е. полностью перекрывает оную.
Может не быть.
ParametersTexture
parameters.dds
текстура доп-параметров. Можно указать путь к Глосс карте.
Может не быть.
RoughnessSource
parameters_map
Ссылается на карту параметров, либо на иное значение из возможных.
Может не быть.
FresnelSource
parameters_map
Отражения по Фреснелю. Управляет уровнем блескучести объекта по карте или по значению.
Может не быть.
SpecOcclusionSource
parameters_map
Еще один параметр расширенной обработки света. Ссылается на карту, либо на иное значение из возможных.
Может не быть.
Roughness
 0.0, 1.0
Важный параметр локализации и ровности блеска объекта.
всегда должно быть!
FresnelReflectance
0.02 - 0.08 (0.20-1.0)
Коэфициент преломления по Френселю.
Т.е. также управляет блеском объекта.
всегда должно быть!
 
 
Примечание.
Данные могут быть не совсем точны, в связи с относительной сыростью технологии и отсутствия достаточного кол-ва накопленных данных.
 ; Example material data
; Place a text file matching the relative texture path in Data Files/materials/
; e.g. Data Files/Textures/author/tx_example.dds -> Data Files/materials/author/tx_example.txt
 
; Material version [required]
MaterialVersion=2
 
; Normals texture path [required]
; Uses all three channels, positive green faces up
; Optional alpha contains roughness or specular occlusion
NormalsTexture=materials/author/tx_example_normals.dds
 
; Albedo replacement texture path [optional]
; Replaces original texture, useful if original has too much baked in lighting
AlbedoReplaceTexture=materials/author/tx_example_albedo.dds
 
; Optical parameters texture path [optional]
; red channel = metallicity, this is a binary property where 255 = non-metal, 0 = metal
; green channel = roughness, range 0-1, linear encoded; note that values <0.05 do not render well,
; blue channel = fresnel reflectance at normal incidence, only applies to non-metals, blue 255 maps to reflectance 0.20
; alpha channel = specular occlusion map/cavity map
ParametersTexture=materials/author/tx_example_parameters.dds
 
; Roughness source enum: constant (default), normals_alpha, parameters_map
; from Roughness constant, normal map alpha, or parameters map (green channel)
RoughnessSource=parameters_map
 
; Fresnel source enum: constant (default), metallic, parameters_map
; from FresnelReflectance constant, from albedo rgb, or parameters map (red+blue channels)
; metallic automatically removes diffuse contribution from albedo
FresnelSource=constant
 
; Specular occlusion source enum: none, normals_alpha, parameters_map, albedo_luma (default)
; none, normal map alpha or parameters map (alpha channel), or albedo luma
SpecOcclusionSource=parameters_map
 
; Roughness constant, range 0-1 (default 1.0), note that values <0.05 do not render well
; Controls how matte or smooth the material is, and the strength and focus of reflections
; 0.0 = mirror smooth, 1.0 = maximum roughness
Roughness=0.5
 
; Fresnel reflectance constant at normal incidence, default 0.04
; Can be sensitive to changes, most materials are 0.02 - 0.08
FresnelReflectance=0.04
Автор заботливо прокомментировал значения и возможные параметры оных.
MaterialVersion=2
NormalsTexture=materials\@tx\Nm\@_cr_scmp.dds
AlbedoReplaceTexture=materials\@tx\Abc\@_cr_scmp.dds
ParametersTexture=materials\@tx\prm\@_cr_scmp.dds
RoughnessSource=materials\@tx\rgh\@_cr_scmp.dds
FresnelSource=parameters_map
SpecOcclusionSource=materials\@tx\Gsn\@_cr_scmp.dds
Roughness=0.5
FresnelReflectance=0.4
 
 
 
Это пример шейдера для текстур Скампа из Симфонии.
Вот такой вот серебряный посох, с бампом и бликами, на фоне пиксельной мазни ванильной текстуры.
MaterialVersion=2
NormalsTexture=materials\tx_keening_normals.dds
AlbedoReplaceTexture=materials\tx_keening_albedo.dds
ParametersTexture=materials\tx_keening_parameters.dds
RoughnessSource=parameters_map
FresnelSource=parameters_map
SpecOcclusionSource=parameters_map
Roughness=0,750
FresnelReflectance=0,040
 
А это шейдер одного из орудий Кагренака из плагина тов.  Flash3113  с http://www.nexusmods.com/morrowind/mods/44500/
Можно посмотреть другие работы этого автора.
http://www.nexusmods.com/morrowind/images/2965/
http://www.nexusmods.com/morrowind/Images/2895/
 
Бочка с ПБРом.
Грязекраб с ПБР шейдером, от того же автора.
... что-то сразу Курицей повеяло(С)
 
 
Несколько примеров.
 
 
 
Сталь, до и после включения ПБР.
Вот такая вот земелька с ПБР шейдером!