Формат файлов постпроцессинга (ppe)

Материал из Mod Wiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 07:01, 21 августа 2007 (править)
Green Hawk (Обсуждение | вклад)
(Новая: Представляю на суд общественности результаты моих изысканий по формату файлов постпроцессинга (ppe) Н...)
← К предыдущему изменению
Текущая версия (15:27, 3 марта 2011) (править) (отменить)
Myha (Обсуждение | вклад)
(Практика)
 
(5 промежуточных версий не показаны.)
Строка 1: Строка 1:
-Представляю на суд общественности результаты моих изысканий по формату файлов постпроцессинга (ppe)+==Вступление==
-Нераскрытыми для меня осталось 4 переменных, но простенькие ppe можно делать и без них.+ 
-Вообще, оказалось, что возможности ppe были сильно мною переоценены (например тепловизор сделать с их помощью если и можно, то крайне проблематично). Основной недостаток - ppe можно применить только ко всему экрану, на отдельный обьект это не предусмотрено движком (даже стелс-режим кровососа реализуется тупо - подменой модели). Так что могу предложить только слегка улучшеный прибор ночного зрения.+Представляю на суд общественности результаты моих изысканий по формату файлов постпроцессинга ('''.ppe''')
 + 
 +Нераскрытыми для меня осталось 6 переменных (переменные, которые я для себя назвал free, обязательно идут перед каждой триадой цепочек, управляющих цветом и 3 коэффициента, идут в каждом правиле после байта функции), но простенькие '''ppe'''-файлы можно делать и без них.
 + 
 +Вообще, оказалось, что возможности '''ppe''' были сильно мною переоценены (например тепловизор сделать с их помощью если и можно, то крайне проблематично). Основной недостаток - '''ppe''' можно применить только ко всему экрану, на отдельный обьект это не предусмотрено движком (даже стелс-режим кровососа реализуется подменой модели). Так что могу предложить только слегка улучшеный прибор ночного зрения.
 + 
Получилось так себе, просто убрал шумы, добавил яркости/контрастности, но зато теперь со включенным nv днем не побегаешь - засветка почти как на настоящем (как в кино показывают) и туман гораздо сильнее мешает, клубы тумана почти непрозрачны. Получилось так себе, просто убрал шумы, добавил яркости/контрастности, но зато теперь со включенным nv днем не побегаешь - засветка почти как на настоящем (как в кино показывают) и туман гораздо сильнее мешает, клубы тумана почти непрозрачны.
-По поводу компилятора/декомпилятора, пришел к выводу, что фильтр постпроцесса изделие штучное, смысла в отдельных утилитах нет - я все анализировал, клепал, менял только с помощью блокнота и WinHEX (кстати, выяснил, что при смене файла постпроцесса необязательно перезапускать сталкера и даже релоад делать ни к чему - изменения подхватываются при следующем выключении постпроцесса в данном случае nv).+ 
-При анализе ppe сильно помог тот факт, что постпроцесс существует в игре в текстовом и компилированом виде (кому интересно копайте script\[[postprocess.script]] - полный разбор текстовых файлов написан обычным скриптом, там же, в самом конце функция main загружает погоду и файл постпроцессинга, сами файлы лежат \config\scripts например [[proba.ltx]]). Компилированные ppe лежат в anims.+По поводу компилятора/декомпилятора, пришел к выводу, что фильтр постпроцесса изделие штучное, смысла в отдельных утилитах нет - я все анализировал, клепал, менял только с помощью блокнота и шестнадцатиричного редактора (кстати, выяснил, что при смене файла постпроцесса необязательно перезапускать сталкера и даже релоад делать ни к чему - изменения подхватываются при следующем выключении постпроцесса в данном случае nv).
-Итак, ppe файл - это набор правил, как должен изменяться тот или иной параметр изображения во времени, всего этих параметров - 16(названия взяты из текстовых версий, чтобы путаницы не было).+ 
-В отличие от текстовой версии, цепочки должны идти только в этом порядке и их всегда должно быть только 16 (если игра вывалилась с сообщением в логах noise.grain cannot be zero, значит вы что-то пропустили).+При анализе ppe сильно помог тот факт, что постпроцесс существует в игре в текстовом и компилированом виде (кому интересно, копайте '''\gamedata\script\postprocess.script''' - полный разбор текстовых файлов написан обычным скриптом, там же, в самом конце функция ''main'' загружает погоду и файл постпроцессинга, сами файлы лежат '''\gamedata\config\scripts''' например '''proba.ltx'''). Компилированные ppe лежат в anims.
 + 
 + 
 +==Практика==
 + 
 +Итак, '''ppe'''-файл - это набор правил, как должен изменяться тот или иной параметр изображения во времени, всего этих параметров - 16 (названия взяты из текстовых версий, чтобы путаницы не было). В отличие от текстовой версии, цепочки должны идти только в этом порядке и их всегда должно быть только 16 (если игра вывалилась с сообщением в логах ''noise.grain cannot be zer''o, значит вы что-то пропустили).
Выбраная цветовая компонента умножается на коэффициент, то при параметре равным 1 чистый белый цвет останется белым, а чистый черный - черным, остальные преобретут компонентный оттенок. Выбраная цветовая компонента умножается на коэффициент, то при параметре равным 1 чистый белый цвет останется белым, а чистый черный - черным, остальные преобретут компонентный оттенок.
-*'''free1''' - об этой переменной чуть ниже+ 
-*'''color_add_red'''+* '''free1''' - об этой переменной чуть ниже
-*'''color_add_green'''+* '''color_add_red'''
-*'''color_add_blue'''+* '''color_add_green'''
 +* '''color_add_blue'''
Указанное значение принимается как база для данного цвета, то есть, если у данного пикселя значение цвета меньше указанного, то оно принимается как указанное, а если больше, то остается прежним. Следует заметить, что это единственный набор переменных, задирать значения в которых выше 0.5 не имеет смысла, 0.5 прибавляется где-то в дебрях движка. Указанное значение принимается как база для данного цвета, то есть, если у данного пикселя значение цвета меньше указанного, то оно принимается как указанное, а если больше, то остается прежним. Следует заметить, что это единственный набор переменных, задирать значения в которых выше 0.5 не имеет смысла, 0.5 прибавляется где-то в дебрях движка.
-*'''free2''' 
-*'''color_base_red''' 
-*'''color_base_green''' 
-*'''color_base_blue''' 
-Эта триада правил отвечает за вес цвета в сером/яркостном представлении и в обычном цветном режиме результат не виден. Но при увеличении правила '''gray''' становится ясно, что при например '''color_gray_red''' = -1 чисто красные компоненты становятся черными, 0 = остаются без изменений, 1 - чисто белыми.+* '''free2'''
 +* '''color_base_red'''
 +* '''color_base_green'''
 +* '''color_base_blue'''
 + 
 +Эта триада правил отвечает за вес цвета в сером/яркостном представлении и в обычном цветном режиме результат не виден. Но при увеличении правила '''gray''' становится ясно, что при например '''color_gray_red''' = -1 чисто красные компоненты становятся черными, 0 = остаются без изменений, 1 - чисто белыми:
 + 
*'''free3''' *'''free3'''
*'''color_gray_red''' *'''color_gray_red'''
Строка 26: Строка 39:
*'''color_gray_blue''' *'''color_gray_blue'''
-Переменная управляет величиной обратной насыщенности, то есть, чем больше gray (максимум +1) тем меньше насыщенность изображения+Переменная управляет величиной обратной насыщенности, то есть, чем больше gray (максимум +1) тем меньше насыщенность изображения:
 + 
*'''gray''' *'''gray'''
-Размытие изображения, при больших значениях (пробовал 25) начинаются косяки, портится нижняя часть, если долго стоять на месте.+Размытие изображения, при больших значениях (пробовал 25) начинаются косяки, портится нижняя часть, если долго стоять на месте:
 + 
*'''blur''' *'''blur'''
-Раздвоение изображения по горизонтали и вертикали соответственно. Значение указывается относительно экрана, то есть при 1 копии обьекта, первоначально находящегося в центре окажутся точно по краям.+Раздвоение изображения по горизонтали и вертикали соответственно. Значение указывается относительно экрана, то есть при 1 копии обьекта, первоначально находящегося в центре окажутся точно по краям:
 + 
*'''duality_h''' *'''duality_h'''
*'''duality_v''' *'''duality_v'''
Строка 40: Строка 56:
*'''noise_fps ''' - сколько раз в секунду шум должен пересчитываться *'''noise_fps ''' - сколько раз в секунду шум должен пересчитываться
-итак+Файл '''всегда''' начинается с '''01 00 00 00''' - скорее всего это синатура, по которой движок определяет содержимое(кстати, у файлов anm, которые содержать анимацию камеры и похоже имеют ту же логику строения, что и ppe сигнатурой является '''00 11 00 00''' ).
-файл '''всегда''' начинается с '''01 00 00 00''' - скорее всего это синатура, по которой движок определяет содержимое(кстати, у файлов anm, которые содержать анимацию камеры и похоже имеют ту же логику строения, что и ppe сигнатурой является '''00 11 00 00''' ).+ 
-Затем идет 4 байта неопределенной переменной, которую я для себя назвал free. Всего их 3. Эти переменные стоят только перед триадами, отвечающими за изменения цветов, обычно равны 00 00 00, но есть небольшие вариации. Визуально определить, что меняется при изменении этой переменной я не смог, если кто совершит этот подвиг - вечная слава :)+Затем идет 4 байта неопределенной переменной, которую я для себя назвал free. Всего их 3. Эти переменные стоят только перед триадами, отвечающими за изменения цветов, обычно равны '''7C 00 00 00''', но есть небольшие вариации. Визуально определить, что меняется при изменении этой переменной я не смог, если кто совершит этот подвиг - вечная слава :)
 + 
Затем начинаются цепочки в перечисленном выше порядке. Затем начинаются цепочки в перечисленном выше порядке.
-Цепочка начинается с '''01 01 ''ХХ'' 00''', где '''''ХХ''''' - число правил в данной цепочке. Если указано 01 01 00 00 (то есть цепочка с 0 правил, то данная цепочка в постпроцессинге не участвует и сразу после нее должна начинаться следующая цепочка). Основная ошибка, которую можно допустить - несоответствие реального числа правил с указаным в заголовке цепочки. Контроль, контроль, и еще раз контроль.+Цепочка начинается с '''01 01 ''ХХ'' 00''', где '''''ХХ''''' - число правил в данной цепочке. Если указано 01 01 00 00 (то есть цепочка с 0 правил, то данная цепочка в постпроцессинге не участвует и сразу после нее должна начинаться следующая цепочка). '''Основная ошибка, которую можно допустить - несоответствие реального числа правил с указаным в заголовке цепочки. Контроль, контроль, и еще раз контроль.'''
 + 
Каждая цепочка состоит из правил изменения переменной. Исходя из скрипта разбора текстовых версий можно предположить, что правил в цепочке не должно быть больше 16 (хотя возможно это только для текстовых).Совершенно необязательно, что этих правил в разных цепочках будет одинаковое количество или даже длиться они будут одинаковое время. Каждая цепочка состоит из правил изменения переменной. Исходя из скрипта разбора текстовых версий можно предположить, что правил в цепочке не должно быть больше 16 (хотя возможно это только для текстовых).Совершенно необязательно, что этих правил в разных цепочках будет одинаковое количество или даже длиться они будут одинаковое время.
 +
Правило содержит в себе всегда ровно 23 байта. Примерное описание - Правило содержит в себе всегда ровно 23 байта. Примерное описание -
Строка 57: Строка 76:
*'''время''' - в секундах 4-байтная float переменная *'''время''' - в секундах 4-байтная float переменная
*'''ф''' - функция, во всех ppe равна 00, но попробовал менять('''не должна быть 04 - игра вылетает'''). 00,03 - синус, 01,05 - косинус, 02 - линейная, остальные значения игнорируются и правило перестает работать вообще. *'''ф''' - функция, во всех ppe равна 00, но попробовал менять('''не должна быть 04 - игра вылетает'''). 00,03 - синус, 01,05 - косинус, 02 - линейная, остальные значения игнорируются и правило перестает работать вообще.
-*'''k1,k2,k3''' - коэффициенты для функций вот с ними почти не разбирался, на линейную фунуцию изменений не выявил, на синус/косинус влияют очень сильно, но на поиск закономерности не хватило времени, по умолчанию равны 00 80 00 80 00 80+*'''k1, k2, k3''' - коэффициенты для функций вот с ними почти не разбирался, на линейную фунуцию изменений не выявил, на синус/косинус влияют очень сильно, но на поиск закономерности не хватило времени, по умолчанию равны 00 80 00 80 00 80
*остаток строки во всех файлах 00 80 00 80 00 80 00 80 - изменение визуально ничего не меняет, возможно зарезервировано для следующих версий. *остаток строки во всех файлах 00 80 00 80 00 80 00 80 - изменение визуально ничего не меняет, возможно зарезервировано для следующих версий.
-Вот и все. Поле для работы как видите еще есть - коэффициенты k[1,2,3] и переменные free[1,2,3] - предлагаю общественности устроить мозговой штурм на них. Напоследок мой файл ночного зрения с комментариями (для использования комменты удалить, шестнадцатиричный код загнать в WinHex и сохранить как anims\\[[x.ppe]](имя любое), и не забыть поправить config\\misc\\[[postprocess.ltx]] в нужной секции)+ 
 +Вот и все. Поле для работы как видите еще есть - коэффициенты k[1,2,3] и переменные free[1,2,3] - предлагаю общественности устроить мозговой штурм на них.
 + 
 +Напоследок мой файл ночного зрения с комментариями (для использования комменты удалить, шестнадцатиричный код загнать в WinHex и сохранить как '''anims\x.ppe'''(имя любое), и не забыть поправить '''config\misc\postprocess.ltx''' в нужной секции).
 + 
<pre> <pre>
01 00 00 00 // сигнатура 01 00 00 00 // сигнатура
Строка 78: Строка 101:
// чб изображение, то есть делаем слегка синеватым результат, заодно // чб изображение, то есть делаем слегка синеватым результат, заодно
// огрубляем слегка красные или зеленые. // огрубляем слегка красные или зеленые.
 +
6C 10 00 00 // free2 6C 10 00 00 // free2
01 01 02 00 // color_base_red 01 01 02 00 // color_base_red
Строка 90: Строка 114:
// В сером режиме все красные обьекты - белым, синие и зеленые - черным // В сером режиме все красные обьекты - белым, синие и зеленые - черным
 +
7C 00 00 00 // free3 7C 00 00 00 // free3
01 01 02 00 // color_gray_red 01 01 02 00 // color_gray_red
Строка 109: Строка 134:
// Двоения в глазах не будет // Двоения в глазах не будет
 +
01 01 00 00 // duality_h 01 01 00 00 // duality_h
01 01 00 00 // duality_v 01 01 00 00 // duality_v
Строка 117: Строка 143:
01 01 00 00 // noise_fps 01 01 00 00 // noise_fps
</pre> </pre>
 +
 +Но можно сделать все в 10 раз проще!
 + Открываем PostprocessEditor! Его мы можем найти в:
 +C:\Program Files\X-Ray SDK\level_editor\editors\Postprocess.bat
 +Открыли его. Жмем File-->Load--> находим файл.ppe и открываем!
 + Интерфейс у программы пердставленной в SDK очень легок! Поэтому думаю что все разберутся
 +
 +[[en:Post-processing-effectors (PPE)]]
 +[[Категория:Статьи_участников]]

Текущая версия

Вступление

Представляю на суд общественности результаты моих изысканий по формату файлов постпроцессинга (.ppe)

Нераскрытыми для меня осталось 6 переменных (переменные, которые я для себя назвал free, обязательно идут перед каждой триадой цепочек, управляющих цветом и 3 коэффициента, идут в каждом правиле после байта функции), но простенькие ppe-файлы можно делать и без них.

Вообще, оказалось, что возможности ppe были сильно мною переоценены (например тепловизор сделать с их помощью если и можно, то крайне проблематично). Основной недостаток - ppe можно применить только ко всему экрану, на отдельный обьект это не предусмотрено движком (даже стелс-режим кровососа реализуется подменой модели). Так что могу предложить только слегка улучшеный прибор ночного зрения.

Получилось так себе, просто убрал шумы, добавил яркости/контрастности, но зато теперь со включенным nv днем не побегаешь - засветка почти как на настоящем (как в кино показывают) и туман гораздо сильнее мешает, клубы тумана почти непрозрачны.

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

При анализе ppe сильно помог тот факт, что постпроцесс существует в игре в текстовом и компилированом виде (кому интересно, копайте \gamedata\script\postprocess.script - полный разбор текстовых файлов написан обычным скриптом, там же, в самом конце функция main загружает погоду и файл постпроцессинга, сами файлы лежат \gamedata\config\scripts например proba.ltx). Компилированные ppe лежат в anims.


Практика

Итак, ppe-файл - это набор правил, как должен изменяться тот или иной параметр изображения во времени, всего этих параметров - 16 (названия взяты из текстовых версий, чтобы путаницы не было). В отличие от текстовой версии, цепочки должны идти только в этом порядке и их всегда должно быть только 16 (если игра вывалилась с сообщением в логах noise.grain cannot be zero, значит вы что-то пропустили).

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

  • free1 - об этой переменной чуть ниже
  • color_add_red
  • color_add_green
  • color_add_blue

Указанное значение принимается как база для данного цвета, то есть, если у данного пикселя значение цвета меньше указанного, то оно принимается как указанное, а если больше, то остается прежним. Следует заметить, что это единственный набор переменных, задирать значения в которых выше 0.5 не имеет смысла, 0.5 прибавляется где-то в дебрях движка.

  • free2
  • color_base_red
  • color_base_green
  • color_base_blue

Эта триада правил отвечает за вес цвета в сером/яркостном представлении и в обычном цветном режиме результат не виден. Но при увеличении правила gray становится ясно, что при например color_gray_red = -1 чисто красные компоненты становятся черными, 0 = остаются без изменений, 1 - чисто белыми:

  • free3
  • color_gray_red
  • color_gray_green
  • color_gray_blue

Переменная управляет величиной обратной насыщенности, то есть, чем больше gray (максимум +1) тем меньше насыщенность изображения:

  • gray

Размытие изображения, при больших значениях (пробовал 25) начинаются косяки, портится нижняя часть, если долго стоять на месте:

  • blur

Раздвоение изображения по горизонтали и вертикали соответственно. Значение указывается относительно экрана, то есть при 1 копии обьекта, первоначально находящегося в центре окажутся точно по краям:

  • duality_h
  • duality_v
  • noise_intensity - интенсивность шума
  • noise_granularity - размер зерна шума
  • noise_fps - сколько раз в секунду шум должен пересчитываться

Файл всегда начинается с 01 00 00 00 - скорее всего это синатура, по которой движок определяет содержимое(кстати, у файлов anm, которые содержать анимацию камеры и похоже имеют ту же логику строения, что и ppe сигнатурой является 00 11 00 00 ).

Затем идет 4 байта неопределенной переменной, которую я для себя назвал free. Всего их 3. Эти переменные стоят только перед триадами, отвечающими за изменения цветов, обычно равны 7C 00 00 00, но есть небольшие вариации. Визуально определить, что меняется при изменении этой переменной я не смог, если кто совершит этот подвиг - вечная слава :)

Затем начинаются цепочки в перечисленном выше порядке. Цепочка начинается с 01 01 ХХ 00, где ХХ - число правил в данной цепочке. Если указано 01 01 00 00 (то есть цепочка с 0 правил, то данная цепочка в постпроцессинге не участвует и сразу после нее должна начинаться следующая цепочка). Основная ошибка, которую можно допустить - несоответствие реального числа правил с указаным в заголовке цепочки. Контроль, контроль, и еще раз контроль.

Каждая цепочка состоит из правил изменения переменной. Исходя из скрипта разбора текстовых версий можно предположить, что правил в цепочке не должно быть больше 16 (хотя возможно это только для текстовых).Совершенно необязательно, что этих правил в разных цепочках будет одинаковое количество или даже длиться они будут одинаковое время.

Правило содержит в себе всегда ровно 23 байта. Примерное описание -

9A 99 99 3E 00 00 A0 40 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80
----------- ----------- -- ----- ----- ----- -----------------------
 значение      время    ф    k1    k2    k3                                   
  • значение - 4-байтная float переменная, обычно меняется от -1 до +1
  • время - в секундах 4-байтная float переменная
  • ф - функция, во всех ppe равна 00, но попробовал менять(не должна быть 04 - игра вылетает). 00,03 - синус, 01,05 - косинус, 02 - линейная, остальные значения игнорируются и правило перестает работать вообще.
  • k1, k2, k3 - коэффициенты для функций вот с ними почти не разбирался, на линейную фунуцию изменений не выявил, на синус/косинус влияют очень сильно, но на поиск закономерности не хватило времени, по умолчанию равны 00 80 00 80 00 80
  • остаток строки во всех файлах 00 80 00 80 00 80 00 80 - изменение визуально ничего не меняет, возможно зарезервировано для следующих версий.

Вот и все. Поле для работы как видите еще есть - коэффициенты k[1,2,3] и переменные free[1,2,3] - предлагаю общественности устроить мозговой штурм на них.

Напоследок мой файл ночного зрения с комментариями (для использования комменты удалить, шестнадцатиричный код загнать в WinHex и сохранить как anims\x.ppe(имя любое), и не забыть поправить config\misc\postprocess.ltx в нужной секции).

01 00 00 00 		// сигнатура

// Цвета выкручиваем на максимум
7C 00 00 00 		// free1
01 01 02 00 		// color_add_red
00 00 80 3F 00 00 00 00 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
00 00 80 3F 00 00 00 41 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
01 01 02 00 		// color_add_green
00 00 80 3F 00 00 00 00 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
00 00 80 3F 00 00 00 41 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
01 01 02 00 		// color_add_blue
00 00 80 3F 00 00 00 00 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
00 00 80 3F 00 00 00 41 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 

// Не понимаю как, но эта триада подкрашивает уже переведенное в 
// чб изображение, то есть делаем слегка синеватым результат, заодно
// огрубляем слегка красные или зеленые.

6C 10 00 00  		// free2
01 01 02 00 		// color_base_red
CD CC CC 3D 00 00 00 00 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
CD CC CC 3D 00 00 00 41 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
01 01 02 00 		// color_base_green
CD CC CC 3D 00 00 00 00 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
CD CC CC 3D 00 00 00 41 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
01 01 02 00 		// color_base_blue
CD CC 4C 3E 00 00 00 00 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
CD CC 4C 3E 00 00 00 41 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 

// В сером режиме все красные обьекты - белым, синие и зеленые - черным

7C 00 00 00  		// free3
01 01 02 00 		// color_gray_red
00 00 80 3F 00 00 00 00 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
00 00 80 3F 00 00 00 41 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
01 01 02 00 		// color_gray_green
00 00 80 BF 00 00 00 00 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
00 00 80 BF 00 00 00 41 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
01 01 02 00 		// color_gray_blue
00 00 80 BF 00 00 00 00 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
00 00 80 BF 00 00 00 41 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 

// Полностью черно-белое изображение с учетом правил color_gray_*
01 01 02 00 		// gray
00 00 80 3F 00 00 00 00 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 
00 00 80 3F 00 00 00 41 00 00 80 00 80 00 80 00 80 00 80 00 80 00 80 

01 01 00 00 		// blur

// Двоения в глазах не будет

01 01 00 00 		// duality_h
01 01 00 00 		// duality_v

// Шума не будет
01 01 00 00 		// noise_intensivity
01 01 00 00 		// noise_granularity
01 01 00 00			// noise_fps

Но можно сделать все в 10 раз проще!

Открываем PostprocessEditor! Его мы можем найти в:

C:\Program Files\X-Ray SDK\level_editor\editors\Postprocess.bat Открыли его. Жмем File-->Load--> находим файл.ppe и открываем!

Интерфейс у программы пердставленной в SDK очень легок! Поэтому думаю что все разберутся
Личные инструменты
На других языках