Jump to content
KNOSSOS

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

Recommended Posts

KNOSSOS, можете  помочь с готовым файлом HDR.hlsl

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

 

 

Share this post


Link to post
Share on other sites

KNOSSOS, можете  помочь с готовым файлом HDR.hlsl

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

 

 

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

?

Share this post


Link to post
Share on other sites

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


 

Edited by Gefestor

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

То есть универсальный 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 ) ;

Share this post


Link to post
Share on other sites

 

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

 

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Уважаемый 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:

float4 Composite( PsQuad vert ) : SV_Target
{
    // const float2 r = float2( 23.1406926327792690, 2.6651441426902251);
    // //pseudo random dither constant
    // float dither = cos((( 4096.0f * dot( vert.texcoord.xy,r )) + 123456789.0f ))/768.0f;  
    // Tone map the primary input
    float avgLuminance = GetAvgLuminance( srcTex2, vert.texcoord );
 
 
    float3 color = srcTex.Sample( samClamp, vert.texcoord ).rgb;
    
    float luminance = CalcLuminance(color);
    
    float3 brighten = saturate( color * luminance * avgLuminance );
    
    //avgLuminance *= 0.85f;
color = ToneMap( color, avgLuminance, 0 );
 
    // Sample the bloom
//    float3 bloom = srcTex1.Sample( samClamp, vert.texcoord ).rgb;
 
//    brighten = saturate( brighten - bloom );
 
//    bloom = bloom * BloomMagnitude;
 
    // Add in the bloom
float3 final = color + brighten;//*bloom + */ + dither;
 
    //Calculate luminance for saturation.
    luminance = CalcLuminance(final);
 
    //Saturate the final color if desired.
    float3 finalColor = lerp(luminance, final, 1.25f); //GEO - Default saturation scalar in maximum (1.0) is too low. Now 0.5 in settings = 1.0 in default shader
 
 
    return float4( finalColor, 1.0f );
}

В нем менять 1.25f. (Дефолтное значение 1.00f)
Это мой вариант, но в нем блум выключен совсем. Если блум нужен, раскомментируйте соотв. строки
Мой вариант файла 
Edited by KNOSSOS

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

Share this post


Link to post
Share on other sites

 

HDR-тонирование 
 
(инфа уже была опубликована, камрады в целом оценили положительно, сюда скопировал с небольшими дополнениями)
В дефолтном Prepar3D, ИМХО, цвета слегка приглушены, что выражается сдвигом зеленого в хаки и общему "пыльному" покрытию сцены.
 
Попробуем несколько исправить ситуацию.
 
НЕ ЗАБЫВАЙТЕ ПРЕДВАРИТЕЛЬНО СДЕЛАТЬ РЕЗЕРВНУЮ КОПИЮ каталога [Каталог Prepar3D]\ShadersHLSL\, чтобы откатить все обратно, если понадобится.
 
Шейдер располагается в файле Prepar3D\ShadersHLSL\PostProcess\HDR.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)), чтобы высветлять/затемнять как-то по-другому. 

post-69734-0-97259300-1456040855.jpg

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

post-69734-0-96703500-1456040851_thumb.j

 
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.

post-69734-0-97144000-1456040853_thumb.j

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

Если нужно «поиграть» оттенками. Cамый простой вариант – умножать значение этой функции на некий коэффициент. Для этого перепишем функцию таким образом:
 
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.
color = saturate(pow(color, 2.5f) * 1.2f);
return color * float3(0.5f, 1.1f, 0.8f); 
}
Здесь в строчке return color * float3(0.5f, 1.1f, 0.8f); я на 50% уменьшил красную составляющую в  цвете, на 10% добавил зеленую, на 20% убавил синюю. В реале коэффициенты RGB конечно нужно изменять не столь сильно, на 1-5%, думаю, чтобы получить нужный оттенок.
После каждого изменения нужно чистить кеш шейдеров и перезапускать препар. Ппц, как муторно, но другого пути нет.
 
Вариант сложнее – возможность изменять фильтр ToneMap  не в целом по RGB, а отдельно по каждому из каналов (R, G, B ). На хрена оно может понадобиться, хз, но вдруг кому-то захочется…
То есть для каждого канала R, G, B будет подбираться свой график. Словами это будет так, примерно: при определении степени высветления/затемнения сцены, темные сцены сделать более теплыми, добавляя красного а светлые – более холодными, добавляя синего. И т.п. 
Для этого можно переписать функцию так (графики функции для R G B здесь "от балды"):
 
float3 ToneMap( float3 color, float avgLuminance, float threshold )
{  
    color = CalcExposedColor(color, avgLuminance, threshold);
    color = max(0, color - 0.004f);
    float colorR = (color.r * (6.2f * color.r + 0.5f)) / (color.r * (6.2f * color.r + 1.7f) + 0.06f); //Gamma Color R
    colorR = saturate(pow(colorR, 2.2f));
    float colorG = (color.g * (6.2f * color.g + 0.5f)) / (color.g * (6.2f * color.g + 1.7f) + 0.06f); //Gamma Color G
    colorG = saturate(pow(colorG, 2.0f));
    float colorB = (color.b * (6.2f * color.b + 0.5f)) / (color.b * (6.2f * color.b + 1.7f) + 0.06f); //Gamma Color B
    colorB = saturate(pow(colorB, 2.5f) * 1.2f);
    return float3(colorR, colorG, colorB); 
}

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Добавление пост-эффектов в ландшафтный шейдер GPUTerrain.fx

1. Создаем в папке ShadersHLS сима файл, например, с именем IGonnaMakePrepar4.h

со следующим содержимым

 

 

движок форума искажает код, поэтому пока здесь пока ссылка полежит https://1drv.ms/u/s!AiUqW5k9ajA5ivQI_RLxqlvckK2mQw

 

 

 

 

это адаптированные под ландшафтный шейдер эффекты 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, почему не смог разобраться

Edited by KNOSSOS
  • Upvote 2

Share this post


Link to post
Share on other sites

Всем привет.

Я случайно забрел сюда через гугл. Я понимаю тут есть программеры, которые возможно смогут помочь...

Я надеюсь, что кто то помнит такие игры как Quake3 или CS. Там через консоль можно было делать графику/текстуры как угодно. Т.е. все сглаживали/упрощали (вообще всю красоту убирали) - и повышали производительность, ФПС, скорость...

 

Как, и можно ли вообще, все это сделать в современных играх, с помощью, к примеру, ReShade и его шейдеров??

Помогите!! С англ не силен, Комп средний, в PUBG хочется нормально поиграть, а ФПС там скачет от 2 до 40...

Share this post


Link to post
Share on other sites
8 часов назад, bezman пишет:

Как, и можно ли вообще, все это сделать в современных играх, с помощью, к примеру, ReShade и его шейдеров??

Помогите!! С англ не силен, Комп средний, в PUBG хочется нормально поиграть, а ФПС там скачет от 2 до 40...

Так ведь и на русском валом...

https://www.google.ru/search?newwindow=1&ei=2nkjWs29JqTa6ASM1p94&q=pubg+reshade+настройка&oq=PUBG+reshade&gs_l=psy-ab.1.1.0l10.14073.17921.0.20108.8.5.0.3.3.0.92.441.5.5.0....0...1c.1.64.psy-ab..0.8.472...0i67k1j0i131k1j0i10k1.0.pjoCP1uoUXQ

Edited by Enzzo

Share this post


Link to post
Share on other sites

Спасибо конечно, за ссылку поиска, но все это я испробовал - везде копипаст одного и того же варианта.

Там предлагается установка и настройка в reshade всего 4 шейдера - «AdaptiveSharpen.fx»,»Clarity.fx»,»Colourfulness.fx»,»DPX.fx».

С ними я по экспериментировал. Толком ничего не добился. Вообще все эти настройки для "улучшения" графики, для более четкого изображения, насыщенности и т.д.

Мне же нужно наоборот - все размытое и упрощенное.

к примеру из Quake3:

shot0001yc5_1_.jpg?1248063301

79627-cfg0000.jpeg

а вот скрин почти без настроек графики:

q1.jpg

Т.е. я хочу все текстуры сгладить очень сильно.

При установки Reshade предлагает установить много шейдеров. Где их описание на русском можно прочить для чего каждый из них?

Или есть другая программа, которая поможет в моей хотелке?)

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×