Препарируем Prepar3D. Шейдеры. — Prepar3D v3

KNOSSOS, можете  помочь с готовым файлом HDR.hlsl
В котором насыщенность цвета  снижена на 25-30 процентов, а яркость увеличена  на 15-20%. Все изменения интересуют не от дефолтного файла, а именно от вашего варианта, выложенного в данной теме на первой странице. Версия сима 3.1 Можете помочь?

 

Насыщенность и яркость — обе характеристики ползунками в настройках двигаются. 

?

Это понятно, но!
Стоят у меня несколько мониторов. Отличные 4K мониторы для дизайнеров.
Все они калиброванны, запись параметров произведена в лут мониторов. Погрешность цвета практически сводится к нулю.
Расширенный охват цвета специально отключен при проверке P3D.
И вот тут самое интересное! Периодически на них выставляется SRGB профиль.
С дефолтным HDR.hlsl на SRGB профиле цвета отличные, а вот с модифицированным нереально насыщенные по цвету.
Через меню игры ясное дело изменить параметры я могу. Но результат какой-то не такой. Т.е получается, что в файле есть настройки которые влияют на цвета.

 

Твик увеличивающий светимость лендклассов в P3D 3.2 сработал.

То есть универсальный HDR, который подходил бы под случай sRGB и другой профиль? Нет, конечно, невозможно. Если я включу у себя сейчас sRGB, сразу придется ползунки в симе ворочать.

В 3.2 HDR подкрутили, думаю, как раз то, что вам нужно. 

Как вариант, промежуточный для 3.1, то в HDR.hlsl просто  в строке 207 верните дефолтный вариант:

    float3 finalColor = lerp(luminance, color, SaturationScalar ) ;
(в твиканном HDR строка такая:  float3 finalColor = lerp(luminance, color, 2.0f * SaturationScalar ) ;

 

По поводу изменения отражений солнца а-ля АЫЧ.  

 

 

А в 3.2 можно сделать такое отражение?)

Уважаемый KNOSSOS, подскажите пожалуйста, можно ли отредактировать шейдеры в версии 2.5? Нужно просто добавить света там, экспозиции.

Уважаемый KNOSSOS, подскажите пожалуйста, можно ли отредактировать шейдеры в версии 2.5? Нужно просто добавить света там, экспозиции.

Да, что то можно сделать. 

В 2.5 нет управления HDR ползунками, поэтому в файле HDR.hlsl блум можно пошевелить в этих строках, меняя значения констант:

static const float BloomThreshold = 03.5f;
static const float BloomMagnitude = 03.75f;
static const float BloomBlurSigma = 0.8;
static const float TimeDelta = 01.0f;
самая нужная — BloomMagnitude, это типа аналог ползунка Bloom в 3.X, остальные, ИМХО, я бы не трогал.
 
В Tonemap я яркость правил:
в строке
color = (color * (6.2f * color + 0.5f)) / (color * (6.2f * color + 1.7f)+.09f); крутить константу 0.09f. Что то вроде аналога ползунка яркости. Чем меньше, тем ярче.
У меня 0.03f:
color = (color * (6.2f * color + 0.5f)) / (color * (6.2f * color + 1.7f) + 0.03f); //Gamma Color //GEO — яркость выше при 0.03
 
Аналог ползунка Saturation — в конце файла немного поковырять Composite:
Spoiler

В нем менять 1.25f. (Дефолтное значение 1.00f)
Это мой вариант, но в нем блум выключен совсем. Если блум нужен, раскомментируйте соотв. строки
Мой вариант файла 
https://onedrive.liv…t=file,hlsl_2_5

Да, что то можно сделать. 

 

Огромное спасибо! Все отлично работает. Забыл ранее написать.

Но как понял, это только коррекция цветов и т.п., которых нет в настройках сима. 

 

А твик для создания атмосферы возможно к версии 2.5 применить? Или что необходимо сделать? Какие параметры вручную исправить.

Огромное спасибо! Все отлично работает. Забыл ранее написать.

Но как понял, это только коррекция цветов и т.п., которых нет в настройках сима. 

 

А твик для создания атмосферы возможно к версии 2.5 применить? Или что необходимо сделать? Какие параметры вручную исправить.

не подскажу, на 2.5 не пробовал

 

HDR-тонирование 
 
(инфа уже была опубликована, камрады в целом оценили положительно, сюда скопировал с небольшими дополнениями)
В дефолтном Prepar3D, ИМХО, цвета слегка приглушены, что выражается сдвигом зеленого в хаки и общему «пыльному» покрытию сцены.
 
Попробуем несколько исправить ситуацию.
 
НЕ ЗАБЫВАЙТЕ ПРЕДВАРИТЕЛЬНО СДЕЛАТЬ РЕЗЕРВНУЮ КОПИЮ каталога [Каталог Prepar3D]ShadersHLSL, чтобы откатить все обратно, если понадобится.
 
Шейдер располагается в файле Prepar3DShadersHLSLPostProcessHDR.hlsl
 
ТОЛЬКО ДЛЯ Prepar3D 3.1 !
================================
 
1. Меняем фильтр ToneMap. 
 
Ищем функцию ToneMap:
 
float3 ToneMap( float3 color, float avgLuminance, float threshold )
{  
    color = CalcExposedColor(color, avgLuminance, threshold) ;
    color = max(0, color — 0.004f);
    color = (color * (6.2f * color + 0.5f)) / (color * (6.2f * color + 1.7f) + 0.06f) ; //Gamma Color
    //Result has 1/2.2 baked in.
    return saturate(pow(color, 2.2f)) ;
}
 
Функция отвечает за высветление темных и затемнение светлых участков.
Парметр сolor, который подается на вход функции это вектор с компонентами RGB. 
Грубо «Икс». Цвет от 0 до 1 всегда кодируется в препаре. Получается такая парабола в степени 2.2 на отрезке [0..1]. Для удобства подбора функции ToneMap удобно построить график этой функции, например, в Excel.
И подбирать такие коэффициенты в многочлене color = (color * (6.2f * color + 0.5f)) / (color * (6.2f * color + 1.7f) + 0.06f), и степенной функции saturate(pow(color, 2.2f)), чтобы высветлять/затемнять как-то по-другому. 
Spoiler

На графике рыжая кривая – дефолтная функция, зеленая – другой фильтр, дающий более яркую картину. 
Экспериментально можно подобрать нужное.
 
В прилагаемом шейдере, который по результатам использования, камрадам понравился, степенная функция заменена на такую: saturate(pow(color, 2.5f) * 1.2f) (соответствует зеленому графику).
Spoiler

 
2. Параметр «Saturation» на вкладке «Lighting» в настройках сима, будучи выкрученным максимально вправо, не дает сделать сцену более насыщенной по цветности. 
Это можно исправить следующим образом:
 
Масштабируем диапазон регулировки ползунка Saturation в строке 207:
    float3 finalColor = lerp(luminance, color, SaturationScalar ) ;
меняем на
    float3 finalColor = lerp(luminance, color, 2.0f * SaturationScalar ) ;
 
В итоге дефолтное положение ползунка Saturation, бывшее 1, смещается в 0.5 и появляется возможность его добавлять.
Для иллюстрации я поставил 0.65, сам использую 0.58-0.6.
Spoiler

 
1 и 2 твики независимы, можно делать или то или другое.
HDR-шейдер в целом относится к этапу пост-обработки сцены, поэтому его модификацию можно проводить без последствий для других шейдеров, например, для твиков облаков, воды, земли, атмосферы и проч.
 
Что еще можно «подергать» в HDR-шейдере:
Spoiler

 
Правленный шейдер с встроенными твиками 1 и 2 можно забрать отсюда: http://1drv.ms/1QsVozl

 

а у вас еще остались эти файлы? не могли бы их скинуть пожалуйста

а у вас еще остались эти файлы? не могли бы их скинуть пожалуйста

Описанное выше было для версии препара 3.1. Cтавьте утилиту PTA для версии 3.1 и твик (флажок) «Alternate tonemap adjustment» на вкладке HDR сделает точно то же самое.

Добавление пост-эффектов в ландшафтный шейдер GPUTerrain.fx
1. Создаем в папке ShadersHLS сима файл, например, с именем IGonnaMakePrepar4.h
со следующим содержимым

Spoiler

это адаптированные под ландшафтный шейдер эффекты SweetFX

2. В ландшафтном шейдере GPUTerrain.fx нужно включить этот файл и активировать соответствующие функции
в начале файла под строкой
#include «GPUTerrain.fxh»
добавляем
#include «IGonnaMakePrepar4.h»

Далее в конце файла перед блоком

#if defined(SHD_BATHYMETRY)
float3 fogColor = float3(0.35f,0.6f,0.8f)*(cb_mCloudAmbient.xyz);
FinalColor = float4(FogPS(FinalColor.xyz, eyeDist, 0.000328402053f, fogColor), FinalColor.a);

добавляем следующий блок, который содержит закомментированные вызовы всех эффектов:

PsQuad MyQuad;
MyQuad.texcoord = Input.TexBase.xy;
// FinalColor = SepiaMain(MyQuad, FinalColor);
// FinalColor = TonemapMain(MyQuad, FinalColor);
// FinalColor = CurvesMain(MyQuad, FinalColor);
// FinalColor = LevelsMain(MyQuad, FinalColor);
// FinalColor = LiftGammaGainMain(MyQuad, FinalColor);
// FinalColor = TechnicolorMain(MyQuad, FinalColor);
// FinalColor = VibranceMain(MyQuad, FinalColor);
// FinalColor = DPXMain(MyQuad, FinalColor);
// FinalColor = LumaSharpenMain(MyQuad, FinalColor);

требуемые эффекты нужно раскомментировать (убрать //)

Настройку параметров эффектов производить в файле IGonnaMakePrepar4.h
Например, для Sepia находим функцию float4 SepiaMain(PsQuad vert, float4 color) : SV_Target
и перед ней правим параметры:

#define Sepia_ColorTone float3(1.40,1.10,0.90)
#define Sepia_GreyPower 0.11
#define Sepia_SepiaPower 0.58

Оба файла сохраняем, чистим кеш шейдеров.

Если допущены ошибки при редактировании, ландшафт не прорисовывается, включить в настройках сима опцию «Content Error Logging», при выходе смотрим ошибки и правим.

P.S. PTA при применении пресета снесет все правки, сделанные вручную в файле GPUTerrain.fx.

Не уверен, что работает LumaSharpen, почему не смог разобраться