マテリアル-PPMでLUT
をテンプレートにして作成
[
ホーム
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
UE4:ver.4.19.0
----
#contents
&ref(2018-04-10_15h06_00.png,,50%);
&ref(2018-04-10_19h13_22.png,,50%);
まだデフォルトのLUTでもON/OFFで若干色味が変わってしまって...
テストしたマテリアル手順
+ LUTテクスチャの設定を下記に
++ Filterを “Tri-linear” に
++ Texture Groupを “ColorLookupTable” に
+ Mateiralの設定を下記に
++ Mateiral Domainを “Post Process” に
++ Blendable Locatinを “Before Tonemapping” に
+ ノードを下記に
&ref(LUTMaterial.png,,100%);
+ Customノードはこんな感じ
#pre{{
static const float LUTSize = 16;
#if POST_PROCESS_MATERIAL
// ColorLookupTable
{
// sRGBToLinear
{
LinearColor = max(6.10352e-5, LinearColor); // minimum ...
LinearColor = LinearColor > 0.04045 ? pow( LinearColor ...
}
float3 LUTEncodedColor;
#if 0 // if( r.HDR.Display.OutputDevice >= 3 )
// LinearToST2084
{
const float m1 = 0.1593017578125; // = 2610. / 4096. * ...
const float m2 = 78.84375; // = 2523. / 4096. * 128;
const float c1 = 0.8359375; // = 2392. / 4096. * 32 - 2...
const float c2 = 18.8515625; // = 2413. / 4096. * 32;
const float c3 = 18.6875; // = 2392. / 4096. * 32;
const float C = 10000.;
float3 L = LinearColor/C;
float3 Lm = pow(L, m1);
float3 N1 = ( c1 + c2 * Lm );
float3 N2 = ( 1.0 + c3 * Lm );
float3 N = N1 * rcp(N2);
float3 P = pow( N, m2 );
LUTEncodedColor = P;
}
#else
float LinearRange = 14;
float LinearGrey = 0.18;
float ExposureGrey = 444;
float3 Lin;
// LogToLin(0)
{
Lin = exp2( ( float3(0,0,0) - ExposureGrey / 1023.0 ) *...
}
// LinToLog
{
// Using stripped down, 'pure log', formula. Parameteri...
float3 LogColor = log2(LinearColor + Lin) / LinearRange...
//float3 LogColor = (log2(LinearColor) - log2(LinearGre...
//float3 LogColor = log2( LinearColor / LinearGrey ) / ...
//float3 LogColor = (0.432699 * log10(0.5 * LinearColor...
//float3 LogColor = ( 300 * log10( LinearColor * (1 - ....
LogColor = saturate( LogColor );
LUTEncodedColor = LogColor;
}
#endif
float3 UVW = LUTEncodedColor * ((LUTSize - 1) / LUTSize)...
float3 OutputColor = UnwrappedTexture3DSample( TextureLU...
OutputColor = OutputColor * 1.05;
// sRGBToLinear
{
// OutputColor = max(6.10352e-5, OutputColor); // minim...
// OutputColor = OutputColor > 0.04045 ? pow( OutputCol...
}
return OutputColor;
}
#else
return float3(0,0,0);
#endif
}}
終了行:
UE4:ver.4.19.0
----
#contents
&ref(2018-04-10_15h06_00.png,,50%);
&ref(2018-04-10_19h13_22.png,,50%);
まだデフォルトのLUTでもON/OFFで若干色味が変わってしまって...
テストしたマテリアル手順
+ LUTテクスチャの設定を下記に
++ Filterを “Tri-linear” に
++ Texture Groupを “ColorLookupTable” に
+ Mateiralの設定を下記に
++ Mateiral Domainを “Post Process” に
++ Blendable Locatinを “Before Tonemapping” に
+ ノードを下記に
&ref(LUTMaterial.png,,100%);
+ Customノードはこんな感じ
#pre{{
static const float LUTSize = 16;
#if POST_PROCESS_MATERIAL
// ColorLookupTable
{
// sRGBToLinear
{
LinearColor = max(6.10352e-5, LinearColor); // minimum ...
LinearColor = LinearColor > 0.04045 ? pow( LinearColor ...
}
float3 LUTEncodedColor;
#if 0 // if( r.HDR.Display.OutputDevice >= 3 )
// LinearToST2084
{
const float m1 = 0.1593017578125; // = 2610. / 4096. * ...
const float m2 = 78.84375; // = 2523. / 4096. * 128;
const float c1 = 0.8359375; // = 2392. / 4096. * 32 - 2...
const float c2 = 18.8515625; // = 2413. / 4096. * 32;
const float c3 = 18.6875; // = 2392. / 4096. * 32;
const float C = 10000.;
float3 L = LinearColor/C;
float3 Lm = pow(L, m1);
float3 N1 = ( c1 + c2 * Lm );
float3 N2 = ( 1.0 + c3 * Lm );
float3 N = N1 * rcp(N2);
float3 P = pow( N, m2 );
LUTEncodedColor = P;
}
#else
float LinearRange = 14;
float LinearGrey = 0.18;
float ExposureGrey = 444;
float3 Lin;
// LogToLin(0)
{
Lin = exp2( ( float3(0,0,0) - ExposureGrey / 1023.0 ) *...
}
// LinToLog
{
// Using stripped down, 'pure log', formula. Parameteri...
float3 LogColor = log2(LinearColor + Lin) / LinearRange...
//float3 LogColor = (log2(LinearColor) - log2(LinearGre...
//float3 LogColor = log2( LinearColor / LinearGrey ) / ...
//float3 LogColor = (0.432699 * log10(0.5 * LinearColor...
//float3 LogColor = ( 300 * log10( LinearColor * (1 - ....
LogColor = saturate( LogColor );
LUTEncodedColor = LogColor;
}
#endif
float3 UVW = LUTEncodedColor * ((LUTSize - 1) / LUTSize)...
float3 OutputColor = UnwrappedTexture3DSample( TextureLU...
OutputColor = OutputColor * 1.05;
// sRGBToLinear
{
// OutputColor = max(6.10352e-5, OutputColor); // minim...
// OutputColor = OutputColor > 0.04045 ? pow( OutputCol...
}
return OutputColor;
}
#else
return float3(0,0,0);
#endif
}}
ページ名: