MariENB Skyrim 2.7.0
This commit is contained in:
parent
b7c83e4151
commit
3024ce66bc
20 changed files with 426 additions and 888 deletions
|
|
@ -1 +1 @@
|
|||
2.6.0sk "Suddenly Volumes"
|
||||
2.7.0sk "Retro Retirement"
|
||||
|
|
|
|||
|
|
@ -1,17 +1,10 @@
|
|||
[EFFECT.TXT]
|
||||
TECHNIQUE=0
|
||||
Enable Block GFX=false
|
||||
Emulated Resolution Width=0.0
|
||||
Emulated Resolution Height=0.0
|
||||
Palette Type=3
|
||||
CGA Palette=0
|
||||
EGA Palette=0
|
||||
VGA Palette=6
|
||||
Dithering Pattern=2
|
||||
Contrast Modifier=1.2
|
||||
Saturation Modifier=0.8
|
||||
Dither Offset=-0.05
|
||||
Dither Range=0.1
|
||||
Enable Oil Filter=false
|
||||
Enable FXAA=false
|
||||
FXAA Span Max=4.0
|
||||
FXAA Reduce Mul=16.0
|
||||
FXAA Reduce Min=128.0
|
||||
Enable Chroma Key=false
|
||||
Chroma Key Red=1.0
|
||||
Chroma Key Green=0.0
|
||||
|
|
@ -21,6 +14,10 @@ Chroma Key Depth Horizontal Tilt Center=0.5
|
|||
Chroma Key Depth Vertical Tilt Center=0.5
|
||||
Chroma Key Depth Horizontal Tilt=0.0
|
||||
Chroma Key Depth Vertical Tilt=0.0
|
||||
Enable Curvature=false
|
||||
Curve Chromatic Aberration=0.62
|
||||
Curve Zooming=50.34
|
||||
Curve Distortion=0.0
|
||||
Enable Blur=true
|
||||
Blur Sampling Range=0.17
|
||||
Enable Sharp=true
|
||||
|
|
@ -45,26 +42,37 @@ Border Blur Contrast=2.25
|
|||
Border Blur Intensity=1.52
|
||||
Border Blur Shift=0.0
|
||||
Border Blur Radius=1.0
|
||||
Enable Oil=false
|
||||
Oil Radius=1.0
|
||||
Oil Smoothing Radius=1.0
|
||||
Enable ASCII=false
|
||||
ASCII Monochrome=true
|
||||
ASCII Blend=0.0
|
||||
Enable Dot Matrix=false
|
||||
Dot Size=1
|
||||
Dot Blend=0.4
|
||||
Dot Intensity=2.41
|
||||
Dot Contrast=1.25
|
||||
Enable Curvature=false
|
||||
Curve Chromatic Aberration=0.62
|
||||
Curve Zooming=50.34
|
||||
Curve Distortion=0.0
|
||||
Selected Filter=1
|
||||
Van Gogh Sky=false
|
||||
Van Gogh Animation Speed=0.0
|
||||
Enable Oil Filter=false
|
||||
Enable FXAA=false
|
||||
FXAA Span Max=4.0
|
||||
FXAA Reduce Mul=16.0
|
||||
FXAA Reduce Min=128.0
|
||||
Enable Color Matrix=false
|
||||
Color Matrix Red Red=1.0
|
||||
Color Matrix Red Green=0.0
|
||||
Color Matrix Red Blue=0.0
|
||||
Color Matrix Green Red=0.0
|
||||
Color Matrix Green Green=1.0
|
||||
Color Matrix Green Blue=0.0
|
||||
Color Matrix Blue Red=0.0
|
||||
Color Matrix Blue Green=0.0
|
||||
Color Matrix Blue Blue=1.0
|
||||
Normalize Matrix=false
|
||||
Enable Hue-Saturation=false
|
||||
Overlap=0.0
|
||||
Global Hue=0.0
|
||||
Global Saturation=0.0
|
||||
Global Value=0.0
|
||||
Red Hue=0.0
|
||||
Red Saturation=0.0
|
||||
Red Value=0.0
|
||||
Yellow Hue=0.0
|
||||
Yellow Saturation=0.0
|
||||
Yellow Value=0.0
|
||||
Green Hue=0.0
|
||||
Green Saturation=0.0
|
||||
Green Value=0.0
|
||||
Cyan Hue=0.0
|
||||
Cyan Saturation=0.0
|
||||
Cyan Value=0.0
|
||||
Blue Hue=0.0
|
||||
Blue Saturation=0.0
|
||||
Blue Value=0.0
|
||||
Magenta Hue=0.0
|
||||
Magenta Saturation=0.0
|
||||
Magenta Value=0.0
|
||||
|
|
|
|||
|
|
@ -36,6 +36,11 @@ Grain Pass 2 Magnification 2=9.42
|
|||
Grain Pass 2 Magnification 3=6.29
|
||||
Grain Contrast=6.61
|
||||
Apply Grain Before Tone Mapping=true
|
||||
Enable Dirt=false
|
||||
Dirt Coord Factor=0.34
|
||||
Dirt Luminance Factor=-0.37
|
||||
Dirt Coord Zoom=3.38
|
||||
Dirt Luminance Zoom=1.19
|
||||
Enable Adaptation=true
|
||||
Adaptation Min Night=0.32
|
||||
Adaptation Min Day=0.61
|
||||
|
|
@ -82,38 +87,6 @@ Uncharted2 Linear White Night=14.32
|
|||
Uncharted2 Linear White Day=19.109999
|
||||
Uncharted2 Linear White Interior Night=14.339999
|
||||
Uncharted2 Linear White Interior Day=18.869997
|
||||
SweetFX Gamma Night=1.0
|
||||
SweetFX Gamma Day=1.0
|
||||
SweetFX Gamma Interior Night=1.0
|
||||
SweetFX Gamma Interior Day=1.0
|
||||
SweetFX Exposure Night=0.0
|
||||
SweetFX Exposure Day=0.0
|
||||
SweetFX Exposure Interior Night=0.0
|
||||
SweetFX Exposure Interior Day=0.0
|
||||
SweetFX Saturation Night=0.0
|
||||
SweetFX Saturation Day=0.0
|
||||
SweetFX Saturation Interior Night=0.0
|
||||
SweetFX Saturation Interior Day=0.0
|
||||
SweetFX Bleach Night=0.0
|
||||
SweetFX Bleach Day=0.0
|
||||
SweetFX Bleach Interior Night=0.0
|
||||
SweetFX Bleach Interior Day=0.0
|
||||
SweetFX Defog Night=0.0
|
||||
SweetFX Defog Day=0.0
|
||||
SweetFX Defog Interior Night=0.0
|
||||
SweetFX Defog Interior Day=0.0
|
||||
SweetFX Defog Color Red Night=0.0
|
||||
SweetFX Defog Color Green Night=0.0
|
||||
SweetFX Defog Color Blue Night=1.0
|
||||
SweetFX Defog Color Red Day=0.0
|
||||
SweetFX Defog Color Green Day=0.0
|
||||
SweetFX Defog Color Blue Day=1.0
|
||||
SweetFX Defog Color Red Interior Night=0.0
|
||||
SweetFX Defog Color Green Interior Night=0.0
|
||||
SweetFX Defog Color Blue Interior Night=1.0
|
||||
SweetFX Defog Color Red Interior Day=0.0
|
||||
SweetFX Defog Color Green Interior Day=0.0
|
||||
SweetFX Defog Color Blue Interior Day=1.0
|
||||
Enable RGB Grading=true
|
||||
Grading Intensity Night Red=0.97
|
||||
Grading Intensity Night Green=0.96
|
||||
|
|
@ -187,16 +160,8 @@ LUT Blend Night=0.25
|
|||
LUT Blend Day=0.28
|
||||
LUT Blend Interior Night=0.22
|
||||
LUT Blend Interior Day=0.26
|
||||
Enable ENB Palette=false
|
||||
Palette Blend=1.0
|
||||
Enable Technicolor=true
|
||||
Technicolor Blend=0.6
|
||||
Enable Post Dither=true
|
||||
Dither Pattern=2
|
||||
Display Bloom=false
|
||||
Enable Dirt=false
|
||||
Dirt Factor=0.35
|
||||
Dirt Coord Factor=0.34
|
||||
Dirt Luminance Factor=-0.37
|
||||
Dirt Coord Zoom=3.38
|
||||
Dirt Luminance Zoom=1.19
|
||||
|
|
|
|||
|
|
@ -31,6 +31,37 @@ Edgevision Fade Intensity Interior Day=590.840027
|
|||
Edgevision Contrast=0.25
|
||||
Edgevision Intensity=8.0
|
||||
Edgevision Radius=1.0
|
||||
Invert Edgevision=false
|
||||
Blend Edgevision=false
|
||||
Enable Edge Detect=false
|
||||
Edge Detect Contrast=0.85
|
||||
Edge Detect Intensity=0.25
|
||||
Edge Detect Radius=1.0
|
||||
Invert Edge Detect=false
|
||||
Blend Edge Detect=false
|
||||
Enable Linevision=false
|
||||
Linevision Fade Contrast Night=1.24
|
||||
Linevision Fade Contrast Day=1.12
|
||||
Linevision Fade Contrast Interior Night=1.41
|
||||
Linevision Fade Contrast Interior Day=1.33
|
||||
Linevision Fade Intensity Night=692.630005
|
||||
Linevision Fade Intensity Day=793.580017
|
||||
Linevision Fade Intensity Interior Night=484.679993
|
||||
Linevision Fade Intensity Interior Day=590.840027
|
||||
Linevision Contrast=1.0
|
||||
Linevision Intensity=1.0
|
||||
Linevision Radius=1.0
|
||||
Linevision Threshold=0.1
|
||||
Invert Linevision=false
|
||||
Blend Linevision=false
|
||||
Enable Custom Fog=false
|
||||
Fog Contrast=1.0
|
||||
Fog Intensity=1.0
|
||||
Fog Shift=0.0
|
||||
Fog ColorX=1.0
|
||||
Fog ColorY=1.0
|
||||
Fog ColorZ=1.0
|
||||
Limbo Mode=false
|
||||
Enable SSAO=false
|
||||
SSAO Radius=0.05
|
||||
SSAO Noise=0
|
||||
|
|
@ -44,6 +75,7 @@ SSAO Fade Intensity Interior Night=481.650024
|
|||
SSAO Fade Intensity Interior Day=573.030029
|
||||
SSAO Intensity=1.25
|
||||
SSAO Contrast=0.65
|
||||
SSAO Shift=-0.25
|
||||
SSAO Blending=0.8
|
||||
SSAO Blur=true
|
||||
SSAO Bilateral Factor=1500.0
|
||||
|
|
@ -132,56 +164,3 @@ Grading Value Contrast Day=0.78
|
|||
Grading Value Contrast Interior Night=0.58
|
||||
Grading Value Contrast Interior Day=0.64
|
||||
Colorize After HSV=true
|
||||
Invert Edgevision=false
|
||||
Enable Edge Detect=false
|
||||
Edge Detect Contrast=0.85
|
||||
Edge Detect Intensity=0.25
|
||||
Edge Detect Radius=1.0
|
||||
Invert Edge Detect=false
|
||||
Enable Linevision=false
|
||||
Linevision Fade Contrast Night=1.24
|
||||
Linevision Fade Contrast Day=1.12
|
||||
Linevision Fade Contrast Interior Night=1.41
|
||||
Linevision Fade Contrast Interior Day=1.33
|
||||
Linevision Fade Intensity Night=692.630005
|
||||
Linevision Fade Intensity Day=793.580017
|
||||
Linevision Fade Intensity Interior Night=484.679993
|
||||
Linevision Fade Intensity Interior Day=590.840027
|
||||
Linevision Contrast=1.0
|
||||
Linevision Intensity=1.0
|
||||
Linevision Radius=1.0
|
||||
Linevision Threshold=0.1
|
||||
Invert Linevision=false
|
||||
Enable Spooky Fog=false
|
||||
Limbo Contrast=0.65
|
||||
Limbo Intensity=10.0
|
||||
Enable Cardboard=false
|
||||
Cardboard Fade Contrast Night=1.82
|
||||
Cardboard Fade Contrast Day=1.86
|
||||
Cardboard Fade Contrast Interior Night=2.9
|
||||
Cardboard Fade Contrast Interior Day=3.0
|
||||
Cardboard Fade Intensity Night=700.0
|
||||
Cardboard Fade Intensity Day=800.0
|
||||
Cardboard Fade Intensity Interior Night=500.0
|
||||
Cardboard Fade Intensity Interior Day=600.0
|
||||
Cardboard Contrast=1.0
|
||||
Cardboard Intensity=1.0
|
||||
Invert Cardboard=false
|
||||
Blend Edgevision=false
|
||||
Blend Edge Detect=false
|
||||
Blend Linevision=false
|
||||
Limbo ColorX=1.0
|
||||
Limbo ColorY=1.0
|
||||
Limbo ColorZ=1.0
|
||||
Blend Limbo=false
|
||||
Enable Custom Fog=false
|
||||
Fog Contrast=1.0
|
||||
Fog Intensity=1.0
|
||||
Fog Shift=0.0
|
||||
Fog ColorX=1.0
|
||||
Fog ColorY=1.0
|
||||
Fog ColorZ=1.0
|
||||
Limbo Mode=false
|
||||
SSAO Shift=-0.25
|
||||
Debug Mask Texture=-1
|
||||
Debug Test=-1
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 24 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.4 KiB |
|
|
@ -331,68 +331,24 @@ float3 GradingGame( float3 res )
|
|||
/* LUT colour grading */
|
||||
float3 GradingLUT( float3 res )
|
||||
{
|
||||
#ifdef VOLUME_LUTS
|
||||
/*
|
||||
volume maps are SO MUCH BETTER on the shader side, no ugly
|
||||
Volume maps are SO MUCH BETTER on the shader side, no ugly
|
||||
interpolation hacks are needed to work around sampling quirks,
|
||||
and the code is EXTREMELY simplified as a result
|
||||
and the code is EXTREMELY simplified as a result.
|
||||
|
||||
Seriously, it's just as simple as using the screen rgb values
|
||||
as xyz coordinates, nothing more, it maps exactly 1:1. Additionally,
|
||||
the LUTs can have any arbitrary width, height and depth.
|
||||
|
||||
It's also possible to use RGBA32F color on the LUT side, but that's
|
||||
a bit more complicated to set up for the user. GIMP doesn't support
|
||||
that format yet, dunno about Photoshop.
|
||||
*/
|
||||
float3 tcl_n = tex3D(SamplerLUTN,res).rgb;
|
||||
float3 tcl_d = tex3D(SamplerLUTD,res).rgb;
|
||||
float3 tcl_in = tex3D(SamplerLUTIN,res).rgb;
|
||||
float3 tcl_id = tex3D(SamplerLUTID,res).rgb;
|
||||
float3 tcol = tod_ind(tcl);
|
||||
#else
|
||||
#ifdef LUTMODE_LEGACY
|
||||
float3 tcol = clamp(res,0.08,0.92);
|
||||
tcol.rg = tcol.rg*0.5+0.25;
|
||||
float2 lc1 = float2(tcol.r/16.0+floor(tcol.b*16.0)/16.0,tcol.g/64.0);
|
||||
float2 lc2 = float2(tcol.r/16.0+ceil(tcol.b*16.0)/16.0,tcol.g/64.0);
|
||||
float dec = (ceil(tcol.b*16.0)==16.0)?(0.0):frac(tcol.b*16.0);
|
||||
/* night samples */
|
||||
float3 tcl1_n = tex2D(SamplerLUT,lc1+float2(0,clut_n/64.0)).rgb;
|
||||
float3 tcl2_n = tex2D(SamplerLUT,lc2+float2(0,clut_n/64.0)).rgb;
|
||||
/* day samples */
|
||||
float3 tcl1_d = tex2D(SamplerLUT,lc1+float2(0,clut_d/64.0)).rgb;
|
||||
float3 tcl2_d = tex2D(SamplerLUT,lc2+float2(0,clut_d/64.0)).rgb;
|
||||
/* interior night samples */
|
||||
float3 tcl1_in = tex2D(SamplerLUT,lc1+float2(0,clut_in/64.0)).rgb;
|
||||
float3 tcl2_in = tex2D(SamplerLUT,lc2+float2(0,clut_in/64.0)).rgb;
|
||||
/* interior day samples */
|
||||
float3 tcl1_id = tex2D(SamplerLUT,lc1+float2(0,clut_id/64.0)).rgb;
|
||||
float3 tcl2_id = tex2D(SamplerLUT,lc2+float2(0,clut_id/64.0)).rgb;
|
||||
#else
|
||||
#ifdef LUTMODE_16
|
||||
float3 tcol = clamp(res,0.08,0.92);
|
||||
tcol.rg = tcol.rg*0.5+0.25;
|
||||
float2 lc1 = float2(tcol.r,tcol.g/16.0+floor(tcol.b*16.0)/16.0);
|
||||
float2 lc2 = float2(tcol.r,tcol.g/16.0+ceil(tcol.b*16.0)/16.0);
|
||||
float dec = (ceil(tcol.b*16.0)==16.0)?(0.0):frac(tcol.b*16.0);
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
float3 tcol = clamp(res,0.02,0.98);
|
||||
tcol.rg = tcol.rg*0.5+0.25;
|
||||
float2 lc1 = float2(tcol.r,tcol.g/64.0+floor(tcol.b*64.0)/64.0);
|
||||
float2 lc2 = float2(tcol.r,tcol.g/64.0+ceil(tcol.b*64.0)/64.0);
|
||||
float dec = (ceil(tcol.b*64.0)==64.0)?(0.0):frac(tcol.b*64.0);
|
||||
#endif
|
||||
/* night samples */
|
||||
float3 tcl1_n = tex2D(SamplerLUTN,lc1).rgb;
|
||||
float3 tcl2_n = tex2D(SamplerLUTN,lc2).rgb;
|
||||
/* day samples */
|
||||
float3 tcl1_d = tex2D(SamplerLUTD,lc1).rgb;
|
||||
float3 tcl2_d = tex2D(SamplerLUTD,lc2).rgb;
|
||||
/* interior night samples */
|
||||
float3 tcl1_in = tex2D(SamplerLUTIN,lc1).rgb;
|
||||
float3 tcl2_in = tex2D(SamplerLUTIN,lc2).rgb;
|
||||
/* interior day samples */
|
||||
float3 tcl1_id = tex2D(SamplerLUTID,lc1).rgb;
|
||||
float3 tcl2_id = tex2D(SamplerLUTID,lc2).rgb;
|
||||
#endif
|
||||
float3 tcl1 = tod_ind(tcl1);
|
||||
float3 tcl2 = tod_ind(tcl2);
|
||||
tcol = lerp(tcl1,tcl2,dec);
|
||||
#endif
|
||||
float lutblend = tod_ind(lutblend);
|
||||
return lerp(res,tcol,lutblend);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,88 +60,22 @@ texture2D texNoise3
|
|||
<
|
||||
string ResourceName = "menbnoise3.png";
|
||||
>;
|
||||
#ifdef VOLUME_LUTS
|
||||
texture3D texLUTN
|
||||
<
|
||||
#ifdef LUTMODE_16
|
||||
string ResourceName = "menblut16v_night.dds";
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
string ResourceName = "menblut64v_night.dds";
|
||||
#endif
|
||||
string ResourceName = "menblut_night.dds";
|
||||
>;
|
||||
texture3D texLUTD
|
||||
<
|
||||
#ifdef LUTMODE_16
|
||||
string ResourceName = "menblut16v_day.dds";
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
string ResourceName = "menblut64v_day.dds";
|
||||
#endif
|
||||
string ResourceName = "menblut_day.dds";
|
||||
>;
|
||||
texture3D texLUTIN
|
||||
<
|
||||
#ifdef LUTMODE_16
|
||||
string ResourceName = "menblut16v_interiornight.dds";
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
string ResourceName = "menblut64v_interiornight.dds";
|
||||
#endif
|
||||
string ResourceName = "menblut_interiornight.dds";
|
||||
>;
|
||||
texture3D texLUTID
|
||||
<
|
||||
#ifdef LUTMODE_16
|
||||
string ResourceName = "menblut16v_interiorday.dds";
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
string ResourceName = "menblut64v_interiorday.dds";
|
||||
#endif
|
||||
string ResourceName = "menblut_interiorday.dds";
|
||||
>;
|
||||
#else
|
||||
#ifdef LUTMODE_LEGACY
|
||||
texture2D texLUT
|
||||
<
|
||||
string ResourceName = "menblutpreset.png";
|
||||
>;
|
||||
#else
|
||||
texture2D texLUTN
|
||||
<
|
||||
#ifdef LUTMODE_16
|
||||
string ResourceName = "menblut16_night.png";
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
string ResourceName = "menblut64_night.png";
|
||||
#endif
|
||||
>;
|
||||
texture2D texLUTD
|
||||
<
|
||||
#ifdef LUTMODE_16
|
||||
string ResourceName = "menblut16_day.png";
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
string ResourceName = "menblut64_day.png";
|
||||
#endif
|
||||
>;
|
||||
texture2D texLUTIN
|
||||
<
|
||||
#ifdef LUTMODE_16
|
||||
string ResourceName = "menblut16_interiornight.png";
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
string ResourceName = "menblut64_interiornight.png";
|
||||
#endif
|
||||
>;
|
||||
texture2D texLUTID
|
||||
<
|
||||
#ifdef LUTMODE_16
|
||||
string ResourceName = "menblut16_interiorday.png";
|
||||
#endif
|
||||
#ifdef LUTMODE_64
|
||||
string ResourceName = "menblut64_interiorday.png";
|
||||
#endif
|
||||
>;
|
||||
#endif
|
||||
#endif
|
||||
texture2D texTonemap
|
||||
<
|
||||
string ResourceName = "menbfilmlut.png";
|
||||
|
|
@ -229,8 +163,8 @@ sampler2D _s7 = sampler_state
|
|||
sampler2D SamplerNoise1 = sampler_state
|
||||
{
|
||||
Texture = <texNoise1>;
|
||||
MinFilter = POINT;
|
||||
MagFilter = POINT;
|
||||
MinFilter = LINEAR;
|
||||
MagFilter = LINEAR;
|
||||
MipFilter = NONE;
|
||||
AddressU = Wrap;
|
||||
AddressV = Wrap;
|
||||
|
|
@ -242,7 +176,7 @@ sampler2D SamplerNoise2 = sampler_state
|
|||
{
|
||||
Texture = <texNoise2>;
|
||||
MinFilter = LINEAR;
|
||||
MagFilter = POINT;
|
||||
MagFilter = LINEAR;
|
||||
MipFilter = NONE;
|
||||
AddressU = Wrap;
|
||||
AddressV = Wrap;
|
||||
|
|
@ -262,7 +196,6 @@ sampler2D SamplerNoise3 = sampler_state
|
|||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
#ifdef VOLUME_LUTS
|
||||
sampler3D SamplerLUTN = sampler_state
|
||||
{
|
||||
Texture = <texLUTN>;
|
||||
|
|
@ -315,71 +248,6 @@ sampler3D SamplerLUTID = sampler_state
|
|||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
#else
|
||||
#ifdef LUTMODE_LEGACY
|
||||
sampler2D SamplerLUT = sampler_state
|
||||
{
|
||||
Texture = <texLUT>;
|
||||
MinFilter = LINEAR;
|
||||
MagFilter = LINEAR;
|
||||
MipFilter = NONE;
|
||||
AddressU = Clamp;
|
||||
AddressV = Clamp;
|
||||
SRGBTexture = FALSE;
|
||||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
#else
|
||||
sampler2D SamplerLUTN = sampler_state
|
||||
{
|
||||
Texture = <texLUTN>;
|
||||
MinFilter = LINEAR;
|
||||
MagFilter = LINEAR;
|
||||
MipFilter = NONE;
|
||||
AddressU = Clamp;
|
||||
AddressV = Clamp;
|
||||
SRGBTexture = FALSE;
|
||||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
sampler2D SamplerLUTD = sampler_state
|
||||
{
|
||||
Texture = <texLUTD>;
|
||||
MinFilter = LINEAR;
|
||||
MagFilter = LINEAR;
|
||||
MipFilter = NONE;
|
||||
AddressU = Clamp;
|
||||
AddressV = Clamp;
|
||||
SRGBTexture = FALSE;
|
||||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
sampler2D SamplerLUTIN = sampler_state
|
||||
{
|
||||
Texture = <texLUTIN>;
|
||||
MinFilter = LINEAR;
|
||||
MagFilter = LINEAR;
|
||||
MipFilter = NONE;
|
||||
AddressU = Clamp;
|
||||
AddressV = Clamp;
|
||||
SRGBTexture = FALSE;
|
||||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
sampler2D SamplerLUTID = sampler_state
|
||||
{
|
||||
Texture = <texLUTID>;
|
||||
MinFilter = LINEAR;
|
||||
MagFilter = LINEAR;
|
||||
MipFilter = NONE;
|
||||
AddressU = Clamp;
|
||||
AddressV = Clamp;
|
||||
SRGBTexture = FALSE;
|
||||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
sampler2D SamplerTonemap = sampler_state
|
||||
{
|
||||
Texture = <texTonemap>;
|
||||
|
|
|
|||
|
|
@ -904,36 +904,6 @@ float lutblend_id
|
|||
string UIName = "LUT Blend Interior Day";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
#ifdef LUTMODE_LEGACY
|
||||
int clut_n
|
||||
<
|
||||
string UIName = "LUT Preset Night";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 63;
|
||||
> = {1};
|
||||
int clut_d
|
||||
<
|
||||
string UIName = "LUT Preset Day";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 63;
|
||||
> = {1};
|
||||
int clut_in
|
||||
<
|
||||
string UIName = "LUT Preset Interior Night";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 63;
|
||||
> = {1};
|
||||
int clut_id
|
||||
<
|
||||
string UIName = "LUT Preset Interior Day";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 63;
|
||||
> = {1};
|
||||
#endif
|
||||
/* technicolor shader */
|
||||
string str_tech = "Technicolor";
|
||||
bool techenable
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB |
|
|
@ -31,142 +31,6 @@ float3 hsv2rgb( float3 c )
|
|||
float3 p = abs(frac(c.x+K.xyz)*6.0-K.w);
|
||||
return c.z*lerp(K.x,saturate(p-K.x),c.y);
|
||||
}
|
||||
/* prepass */
|
||||
float4 ReducePrepass( in float4 col, in float2 coord )
|
||||
{
|
||||
float3 hsv = rgb2hsv(col.rgb);
|
||||
hsv.y = clamp(hsv.y*bsaturation,0.0,1.0);
|
||||
hsv.z = pow(max(0,hsv.z),bgamma);
|
||||
col.rgb = hsv2rgb(saturate(hsv));
|
||||
if ( dither == 0 )
|
||||
col += bdbump+checkers[int(coord.x%2)+2*int(coord.y%2)]*bdmult;
|
||||
else if ( dither == 1 )
|
||||
col += bdbump+ordered2[int(coord.x%2)+2*int(coord.y%2)]*bdmult;
|
||||
else if ( dither == 2 )
|
||||
col += bdbump+ordered8[int(coord.x%8)+8*int(coord.y%8)]*bdmult;
|
||||
col = saturate(col);
|
||||
return col;
|
||||
}
|
||||
/*
|
||||
CGA had seven graphic modes (320x200 modes have low/high contrast versions):
|
||||
- 640x200 monochrome, which doesn't really need a palette here, as it can
|
||||
be done procedurally with minimum effort.
|
||||
- 320x200 black/cyan/magenta/white
|
||||
- 320x200 black/green/red/brown
|
||||
- 320x200 black/cyan/red/white
|
||||
*/
|
||||
float4 ReduceCGA( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = clamp(ReducePrepass(color,coord),0.02,0.98);
|
||||
float2 lc = float2((dac.r+cgapal)/7.0,
|
||||
dac.g/64.0+floor(dac.b*64.0)/64.0);
|
||||
return tex2D(SamplerCGA,lc);
|
||||
}
|
||||
/*
|
||||
EGA technically only had a fixed 16-colour palette, but when VGA came out,
|
||||
it was possible to tweak the DAC, allowing for custom palettes.
|
||||
AOS EGA is a palette based on my terminal colour scheme on Linux, which I
|
||||
also use for AliceOS.
|
||||
*/
|
||||
float4 ReduceEGA( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = clamp(ReducePrepass(color,coord),0.02,0.98);
|
||||
float2 lc = float2((dac.r+egapal)/2.0,
|
||||
dac.g/64.0+floor(dac.b*64.0)/64.0);
|
||||
return tex2D(SamplerEGA,lc);
|
||||
}
|
||||
/* A two bits per channel mode that can usually fit VGA mode 13h and mode x */
|
||||
float4 ReduceRGB2( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = ReducePrepass(color,coord);
|
||||
color.rgb = trunc(dac.rgb*4.0)/4.0;
|
||||
return color;
|
||||
}
|
||||
/*
|
||||
The classic 16-bit colour mode everyone from my generation would remember,
|
||||
especially that subtle green tint and the banding due to lack of dithering
|
||||
in most games and GPUs at that time.
|
||||
*/
|
||||
float4 ReduceRGB565( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = ReducePrepass(color,coord);
|
||||
color.rgb = trunc(dac.rgb*float3(32.0,64.0,32.0))
|
||||
/float3(32.0,64.0,32.0);
|
||||
return color;
|
||||
}
|
||||
/* Various VGA 256-colour palettes: Doom, Quake I, and the standard. */
|
||||
float4 ReduceVGA( in float4 color, in float2 coord )
|
||||
{
|
||||
float4 dac = clamp(ReducePrepass(color,coord),0.02,0.98);
|
||||
float2 lc = float2((dac.r+vgapal)/15.0,
|
||||
dac.g/64.0+floor(dac.b*64.0)/64.0);
|
||||
return tex2D(SamplerVGA,lc);
|
||||
}
|
||||
/* Retro rockets */
|
||||
float4 PS_Retro( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = tex2D(SamplerColorb,coord);
|
||||
if ( !useblock ) return res;
|
||||
float2 rresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float4 tcol;
|
||||
float2 bresl = rresl;
|
||||
if ( bresx <= 0 || bresy <= 0 ) bresl = rresl;
|
||||
else
|
||||
{
|
||||
if ( bresx <= 1.0 ) bresl.x = rresl.x*bresx;
|
||||
else bresl.x = bresx;
|
||||
if ( bresy <= 1.0 ) bresl.y = rresl.y*bresy;
|
||||
else bresl.y = bresy;
|
||||
}
|
||||
float2 ncoord = (coord-0.5)+0.5;
|
||||
ncoord = floor(ncoord*bresl)/bresl;
|
||||
ncoord += 0.5/bresl;
|
||||
if ( bresx <= 0 || bresy <= 0 ) ncoord = coord;
|
||||
tcol = tex2D(SamplerColorb,ncoord);
|
||||
if ( paltype == 0 ) res = ReduceCGA(tcol,coord*bresl);
|
||||
else if ( paltype == 1 ) res = ReduceEGA(tcol,coord*bresl);
|
||||
else if ( paltype == 2 ) res = ReduceRGB2(tcol,coord*bresl);
|
||||
else if ( paltype == 3 ) res = ReduceVGA(tcol,coord*bresl);
|
||||
else if ( paltype == 4 ) res = ReduceRGB565(tcol,coord*bresl);
|
||||
else res = tcol;
|
||||
res.a = 1.0;
|
||||
return res;
|
||||
}
|
||||
/* ASCII art (more like CP437 art) */
|
||||
float4 PS_ASCII( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = tex2D(SamplerColor,coord);
|
||||
if ( !asciienable ) return res;
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
float2 fresl = float2(FONT_WIDTH,FONT_HEIGHT);
|
||||
float2 cresl = float2(GLYPH_WIDTH,GLYPH_HEIGHT);
|
||||
float2 bscl = floor(bresl/cresl);
|
||||
/*
|
||||
Here I use the "cheap" method, based on the overall luminance of
|
||||
each glyph, rather than attempt to search for the best fitting glyph
|
||||
for each cell. If you want to know why, take a look at the ASCII
|
||||
filter bundled with the Dolphin emulator, and be prepared for the
|
||||
resulting seconds per frame it runs at. The calculations needed for
|
||||
such a filter are completely insane even for the highest-end GPUs.
|
||||
*/
|
||||
float3 col = tex2D(SamplerColor,floor(bscl*coord)/bscl).rgb;
|
||||
int lum = clamp(luminance(col)*FONT_LEVELS,0,FONT_LEVELS);
|
||||
float2 itx = floor(coord*bresl);
|
||||
float2 blk = floor(itx/cresl)*cresl;
|
||||
float2 ofs = itx-blk;
|
||||
ofs.y += lum*cresl.y;
|
||||
ofs /= fresl;
|
||||
float gch = tex2D(SamplerFont,ofs).x;
|
||||
if ( gch < 0.5 ) res.rgb = res.rgb*asciiblend;
|
||||
else
|
||||
{
|
||||
if ( asciimono ) res.rgb = 1.0;
|
||||
else res.rgb = col;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
float4 PS_ChromaKey( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
|
|
@ -180,45 +44,6 @@ float4 PS_ChromaKey( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
|||
return float4(maskr,maskg,maskb,1.0);
|
||||
return res;
|
||||
}
|
||||
/* 2x2 RGBI dot matrix, not even close to anything that exists IRL but meh */
|
||||
float4 PS_DotMatrix( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = tex2D(SamplerColor,coord);
|
||||
if ( !dotenable ) return res;
|
||||
float2 bresl = float2(ScreenSize.x,ScreenSize.x*ScreenSize.w);
|
||||
bresl.xy *= 1.0/(dotsize*2.0);
|
||||
float4 dac = float4(res.r*0.5,res.g*0.5,res.b*0.5,
|
||||
(res.r+res.g+res.b)/6.0);
|
||||
/*
|
||||
There are two types of CRTs: aperture grille and shadow mask.
|
||||
The former is blurry and has scanlines (rather big ones, even), but
|
||||
is cheap to emulate; while the latter is the one most known for its
|
||||
crisp, square pixels with minimal distortion. Most individuals into
|
||||
this whole "retro graphics" stuff prefer aperture grille, which
|
||||
looks like shit, then again, that's the sort of visual quality they
|
||||
want. The main issue with shadow mask CRTs is that it's impossible
|
||||
to accurately emulate them unless done on a screen with a HUGE
|
||||
resolution. After all, the subpixels need to be clearly visible, and
|
||||
if on top of it you add curvature distortion, you need to reduce
|
||||
moire patterns that will inevitably show up at low resolutions.
|
||||
|
||||
It would be more desirable to eventually have flat panels that can
|
||||
display arbitrary resolutions using a form of scaling that preserves
|
||||
square pixels with unnoticeable distortion (typically, with nearest
|
||||
neighbour you'd get some pixels that are bigger/smaller than others
|
||||
if the upscale resolution isn't an integer multiple of the real
|
||||
resolution.
|
||||
|
||||
This 2x2 RGBI thing is a rather naïve filter I made many years ago,
|
||||
it looks unlike any real CRT, but scales well. Its only problem is
|
||||
moire patterns when using the default size of 2x2.
|
||||
*/
|
||||
float4 dots = tex2D(SamplerDots,coord*bresl)*dac;
|
||||
float3 tcol = pow(max(0,dots.rgb+dots.a),dotpow)*dotmult;
|
||||
res.rgb = res.rgb*(1-dotblend)+tcol*dotblend;
|
||||
return res;
|
||||
}
|
||||
/* that's right, CRT curvature */
|
||||
float4 PS_Curvature( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
||||
{
|
||||
|
|
@ -508,12 +333,111 @@ float4 PS_FXAA( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
|||
res.a = 1.0;
|
||||
return res;
|
||||
}
|
||||
/* Colour matrix */
|
||||
float3 ColorMatrix( float3 res )
|
||||
{
|
||||
float3x3 cmat = float3x3(cmat_rr,cmat_rg,cmat_rb,
|
||||
cmat_gr,cmat_gg,cmat_gb,
|
||||
cmat_br,cmat_bg,cmat_bb);
|
||||
res = mul(res,cmat);
|
||||
if ( cmatnormalize )
|
||||
{
|
||||
float cmscale = (cmat._11+cmat._12+cmat._13+cmat._21
|
||||
+cmat._22+cmat._23+cmat._31+cmat._32+cmat._33)/3.0;
|
||||
res /= cmscale;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
/* Hue-Saturation filter from GIMP */
|
||||
float hs_hue_overlap( float hue_p, float hue_s, float res )
|
||||
{
|
||||
float v = hue_p+hue_s;
|
||||
res += (hshue_a+v)/2.0;
|
||||
return res%1.0;
|
||||
}
|
||||
float hs_hue( float hue, float res )
|
||||
{
|
||||
res += (hshue_a+hue)/2.0;
|
||||
return res%1.0;
|
||||
}
|
||||
float hs_sat( float sat, float res )
|
||||
{
|
||||
float v = hssat_a+sat;
|
||||
res *= v+1.0;
|
||||
return clamp(res,0.0,1.0);
|
||||
}
|
||||
float hs_val( float val, float res )
|
||||
{
|
||||
float v = (hsval_a+val)/2.0;
|
||||
if ( v < 0.0 ) return res*(v+1.0);
|
||||
return res+(v*(1.0-res));
|
||||
}
|
||||
float3 HueSaturation( float3 res )
|
||||
{
|
||||
float3 hsv = rgb2hsv(res);
|
||||
float ch = hsv.x*6.0;
|
||||
int ph = 0, sh = 0;
|
||||
float pv = 0.0, sv = 0.0;
|
||||
bool usesh = false;
|
||||
float hues[6] = {hshue_r,hshue_y,hshue_g,hshue_c,hshue_b,hshue_m};
|
||||
float sats[6] = {hssat_r,hssat_y,hssat_g,hssat_c,hssat_b,hssat_m};
|
||||
float vals[6] = {hsval_r,hsval_y,hsval_g,hsval_c,hsval_b,hsval_m};
|
||||
float v;
|
||||
[loop] for ( float h=0.0; h<7.0; h+=1.0 )
|
||||
{
|
||||
float ht = h+0.5;
|
||||
if ( ch < ht+hsover )
|
||||
{
|
||||
ph = floor(h);
|
||||
if ( (hsover > 0.0) && (ch > ht-hsover) )
|
||||
{
|
||||
usesh = true;
|
||||
sh = ph+1;
|
||||
sv = (ch-ht+hsover)/(2.0*hsover);
|
||||
pv = 1.0-sv;
|
||||
}
|
||||
else usesh = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( ph >= 6 )
|
||||
{
|
||||
ph = 0;
|
||||
usesh = false;
|
||||
}
|
||||
if ( sh >= 6 ) sh = 0;
|
||||
if ( usesh )
|
||||
{
|
||||
hsv.x = hs_hue_overlap(hues[ph]*pv,hues[sh]*sv,hsv.x);
|
||||
hsv.y = hs_sat(sats[ph],hsv.y)*pv+hs_sat(sats[sh],hsv.y)*sv;
|
||||
hsv.z = hs_val(vals[ph],hsv.z)*pv+hs_val(vals[sh],hsv.z)*sv;
|
||||
}
|
||||
else
|
||||
{
|
||||
hsv.x = hs_hue(hues[ph],hsv.x);
|
||||
hsv.y = hs_sat(sats[ph],hsv.y);
|
||||
hsv.z = hs_val(vals[ph],hsv.z);
|
||||
}
|
||||
return hsv2rgb(hsv);
|
||||
}
|
||||
/* Colour Balance filter from GIMP */
|
||||
/* Additional filters that don't fit in enbeffect */
|
||||
float4 PS_Append( VS_OUTPUT_POST IN, float2 vPos : VPOS ) : COLOR
|
||||
{
|
||||
float2 coord = IN.txcoord.xy;
|
||||
float4 res = tex2D(SamplerColor,coord);
|
||||
if ( cmatenable ) res.rgb = ColorMatrix(res.rgb);
|
||||
if ( hsenable ) res.rgb = HueSaturation(res.rgb);
|
||||
res.rgb = max(res.rgb,0.0);
|
||||
res.a = 1.0;
|
||||
return res;
|
||||
}
|
||||
technique PostProcess
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_Kuwahara();
|
||||
PixelShader = compile ps_3_0 PS_Append();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
|
|
@ -530,7 +454,7 @@ technique PostProcess2
|
|||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_MedianSmooth();
|
||||
PixelShader = compile ps_3_0 PS_Kuwahara();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
|
|
@ -547,7 +471,7 @@ technique PostProcess3
|
|||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_FXAA();
|
||||
PixelShader = compile ps_3_0 PS_MedianSmooth();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
|
|
@ -564,7 +488,7 @@ technique PostProcess4
|
|||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_Blur();
|
||||
PixelShader = compile ps_3_0 PS_FXAA();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
|
|
@ -581,7 +505,7 @@ technique PostProcess5
|
|||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_Sharp();
|
||||
PixelShader = compile ps_3_0 PS_Blur();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
|
|
@ -598,7 +522,7 @@ technique PostProcess6
|
|||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_Shift();
|
||||
PixelShader = compile ps_3_0 PS_Sharp();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
|
|
@ -615,7 +539,7 @@ technique PostProcess7
|
|||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_ChromaKey();
|
||||
PixelShader = compile ps_3_0 PS_Shift();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
|
|
@ -632,7 +556,7 @@ technique PostProcess8
|
|||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_Vignette();
|
||||
PixelShader = compile ps_3_0 PS_ChromaKey();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
|
|
@ -649,7 +573,7 @@ technique PostProcess9
|
|||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_Retro();
|
||||
PixelShader = compile ps_3_0 PS_Vignette();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
|
|
@ -666,7 +590,7 @@ technique PostProcess10
|
|||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_ASCII();
|
||||
PixelShader = compile ps_3_0 PS_Curvature();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
|
|
@ -679,40 +603,6 @@ technique PostProcess10
|
|||
}
|
||||
}
|
||||
technique PostProcess11
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_DotMatrix();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
ALPHATESTENABLE = FALSE;
|
||||
SEPARATEALPHABLENDENABLE = FALSE;
|
||||
AlphaBlendEnable = FALSE;
|
||||
StencilEnable = FALSE;
|
||||
FogEnable = FALSE;
|
||||
SRGBWRITEENABLE = FALSE;
|
||||
}
|
||||
}
|
||||
technique PostProcess12
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
VertexShader = compile vs_3_0 VS_Pass();
|
||||
PixelShader = compile ps_3_0 PS_Curvature();
|
||||
DitherEnable = FALSE;
|
||||
ZEnable = FALSE;
|
||||
CullMode = NONE;
|
||||
ALPHATESTENABLE = FALSE;
|
||||
SEPARATEALPHABLENDENABLE = FALSE;
|
||||
AlphaBlendEnable = FALSE;
|
||||
StencilEnable = FALSE;
|
||||
FogEnable = FALSE;
|
||||
SRGBWRITEENABLE = FALSE;
|
||||
}
|
||||
}
|
||||
technique PostProcess13
|
||||
{
|
||||
pass p0
|
||||
{
|
||||
|
|
|
|||
|
|
@ -10,35 +10,6 @@ static const float gauss4[4] =
|
|||
{
|
||||
0.270682, 0.216745, 0.111281, 0.036633
|
||||
};
|
||||
/*
|
||||
dithering threshold maps
|
||||
don't touch unless you know what you're doing
|
||||
*/
|
||||
static const float checkers[4] =
|
||||
{
|
||||
1.0,0.0,
|
||||
0.0,1.0
|
||||
};
|
||||
#define d(x) x/4.0
|
||||
static const float ordered2[4] =
|
||||
{
|
||||
d(0),d(2),
|
||||
d(4),d(2)
|
||||
};
|
||||
#undef d
|
||||
#define d(x) x/64.0
|
||||
static const float ordered8[64] =
|
||||
{
|
||||
d( 0),d(48),d(12),d(60),d( 3),d(51),d(15),d(63),
|
||||
d(32),d(16),d(44),d(28),d(35),d(19),d(47),d(31),
|
||||
d( 8),d(56),d( 4),d(52),d(11),d(59),d( 7),d(55),
|
||||
d(40),d(24),d(36),d(20),d(43),d(27),d(39),d(23),
|
||||
d( 2),d(50),d(14),d(62),d( 1),d(49),d(13),d(61),
|
||||
d(34),d(18),d(46),d(30),d(33),d(17),d(45),d(29),
|
||||
d(10),d(58),d( 6),d(54),d( 9),d(57),d( 5),d(53),
|
||||
d(42),d(26),d(38),d(22),d(41),d(25),d(37),d(21)
|
||||
};
|
||||
#undef d
|
||||
/* standard stuff */
|
||||
float4 ScreenSize;
|
||||
float ENightDayFactor;
|
||||
|
|
@ -47,26 +18,6 @@ float4 Timer;
|
|||
/* samplers and textures */
|
||||
texture2D texColor;
|
||||
texture2D texDepth;
|
||||
texture2D texFont
|
||||
<
|
||||
string ResourceName = "menbvgaluma.png";
|
||||
>;
|
||||
texture2D texDots
|
||||
<
|
||||
string ResourceName = "menbdots.png";
|
||||
>;
|
||||
texture2D texCGA
|
||||
<
|
||||
string ResourceName = "menbcgalut.png";
|
||||
>;
|
||||
texture2D texEGA
|
||||
<
|
||||
string ResourceName = "menbegalut.png";
|
||||
>;
|
||||
texture2D texVGA
|
||||
<
|
||||
string ResourceName = "menbvgalut.png";
|
||||
>;
|
||||
texture2D texVignette
|
||||
<
|
||||
#ifdef VIGNETTE_DDS
|
||||
|
|
@ -111,66 +62,6 @@ sampler2D SamplerDepth = sampler_state
|
|||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
sampler2D SamplerFont = sampler_state
|
||||
{
|
||||
Texture = <texFont>;
|
||||
MinFilter = LINEAR;
|
||||
MagFilter = POINT;
|
||||
MipFilter = NONE;
|
||||
AddressU = Wrap;
|
||||
AddressV = Wrap;
|
||||
SRGBTexture = FALSE;
|
||||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
sampler2D SamplerDots = sampler_state
|
||||
{
|
||||
Texture = <texDots>;
|
||||
MinFilter = LINEAR;
|
||||
MagFilter = LINEAR;
|
||||
MipFilter = NONE;
|
||||
AddressU = Wrap;
|
||||
AddressV = Wrap;
|
||||
SRGBTexture = FALSE;
|
||||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
sampler2D SamplerCGA = sampler_state
|
||||
{
|
||||
Texture = <texCGA>;
|
||||
MinFilter = POINT;
|
||||
MagFilter = POINT;
|
||||
MipFilter = NONE;
|
||||
AddressU = Wrap;
|
||||
AddressV = Clamp;
|
||||
SRGBTexture = FALSE;
|
||||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
sampler2D SamplerEGA = sampler_state
|
||||
{
|
||||
Texture = <texEGA>;
|
||||
MinFilter = POINT;
|
||||
MagFilter = POINT;
|
||||
MipFilter = NONE;
|
||||
AddressU = Wrap;
|
||||
AddressV = Clamp;
|
||||
SRGBTexture = FALSE;
|
||||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
sampler2D SamplerVGA = sampler_state
|
||||
{
|
||||
Texture = <texVGA>;
|
||||
MinFilter = POINT;
|
||||
MagFilter = POINT;
|
||||
MipFilter = NONE;
|
||||
AddressU = Wrap;
|
||||
AddressV = Clamp;
|
||||
SRGBTexture = FALSE;
|
||||
MaxMipLevel = 0;
|
||||
MipMapLodBias = 0;
|
||||
};
|
||||
sampler2D SamplerVignette = sampler_state
|
||||
{
|
||||
Texture = <texVignette>;
|
||||
|
|
|
|||
|
|
@ -4,142 +4,6 @@
|
|||
Part of MariENB, the personal ENB of Marisa.
|
||||
Released under the GNU GPLv3 (or later).
|
||||
*/
|
||||
/* BlockGFX filter, I'm proud of it */
|
||||
string str_block = "BlockGFX Suite";
|
||||
bool useblock
|
||||
<
|
||||
string UIName = "Enable Block GFX";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
/*
|
||||
emulated resolution:
|
||||
0 or 1 : real resolution
|
||||
<1 and >0 : multiple of real resolution (e.g.: 0.5 is half resolution)
|
||||
>1 : this resolution (e.g.: 320x200 is good ol' Mode 13h)
|
||||
*/
|
||||
float bresx
|
||||
<
|
||||
string UIName = "Emulated Resolution Width";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.5};
|
||||
float bresy
|
||||
<
|
||||
string UIName = "Emulated Resolution Height";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.5};
|
||||
/*
|
||||
palette type:
|
||||
-1 : disable
|
||||
0 : CGA (320x200 4-color, or 640x200 monochrome)
|
||||
1 : EGA (320x200, 16 colors)
|
||||
2 : RGB2 (64-color quarter VGA palette, used in AOS)
|
||||
3 : VGA (256 colors)
|
||||
4 : RGB565 (ol' 16-bit "true color")
|
||||
*/
|
||||
int paltype
|
||||
<
|
||||
string UIName = "Palette Type";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = -1;
|
||||
int UIMax = 4;
|
||||
> = {1};
|
||||
/*
|
||||
CGA palette to use:
|
||||
0 : black, white.
|
||||
1 : black, cyan, magenta, white. low contrast
|
||||
2 : black, cyan, magenta, white. high contrast
|
||||
3 : black, green, red, brown. low contrast
|
||||
4 : black, green, red, brown. high contrast
|
||||
5 : black, cyan, red, white. low contrast
|
||||
6 : black, cyan, red, white. high contrast
|
||||
*/
|
||||
int cgapal
|
||||
<
|
||||
string UIName = "CGA Palette";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 6;
|
||||
> = {1};
|
||||
/*
|
||||
EGA palette to use:
|
||||
0 : Standard EGA
|
||||
1 : AOS EGA (it's designed for text, but looks well on images too)
|
||||
*/
|
||||
int egapal
|
||||
<
|
||||
string UIName = "EGA Palette";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 1;
|
||||
> = {0};
|
||||
/*
|
||||
VGA palette to use:
|
||||
0 : Standard VGA
|
||||
1 : Amulets & Armor
|
||||
2 : Blood
|
||||
3 : Doom
|
||||
4 : Duke Nukem 3D
|
||||
5 : Hacx 2.0
|
||||
6 : Heretic
|
||||
7 : Hexen
|
||||
8 : Hexen 2
|
||||
9 : Quake
|
||||
10 : Quake 2
|
||||
11 : Rise of the Triad
|
||||
12 : Shadow Warrior
|
||||
13 : Strife
|
||||
14 : Wolfenstein 3D
|
||||
TODO Project .Blank palette (when the design is finished)
|
||||
*/
|
||||
int vgapal
|
||||
<
|
||||
string UIName = "VGA Palette";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 0;
|
||||
int UIMax = 14;
|
||||
> = {0};
|
||||
/*
|
||||
Dithering mode:
|
||||
-1 : No dithering, just raw banding
|
||||
0 : 2x2 checkerboard dithering, looks like ass
|
||||
1 : 2x2 ordered dithering
|
||||
2 : 8x8 ordered dithering
|
||||
*/
|
||||
int dither
|
||||
<
|
||||
string UIName = "Dithering Pattern";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = -1;
|
||||
int UIMax = 2;
|
||||
> = {2};
|
||||
/* gamma modifier for base color, lower values raise midtones and viceversa */
|
||||
float bgamma
|
||||
<
|
||||
string UIName = "Contrast Modifier";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.35};
|
||||
/* saturation modifier for base color, helps with limited palettes */
|
||||
float bsaturation
|
||||
<
|
||||
string UIName = "Saturation Modifier";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.1};
|
||||
/* base brightness bump for the dither grid */
|
||||
float bdbump
|
||||
<
|
||||
string UIName = "Dither Offset";
|
||||
string UIWidget = "Spinner";
|
||||
> = {-0.1};
|
||||
/* range multiplier for the dither grid */
|
||||
float bdmult
|
||||
<
|
||||
string UIName = "Dither Range";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {0.25};
|
||||
/*
|
||||
Paint filters:
|
||||
-1 : Disabled
|
||||
|
|
@ -178,25 +42,6 @@ float fxaareducemin
|
|||
string UIName = "FXAA Reduce Min";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {128.0};
|
||||
/* ASCII art filter */
|
||||
string str_ascii = "Luma ASCII Art Filter";
|
||||
bool asciienable
|
||||
<
|
||||
string UIName = "Enable ASCII";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
bool asciimono
|
||||
<
|
||||
string UIName = "ASCII Monochrome";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {true};
|
||||
float asciiblend
|
||||
<
|
||||
string UIName = "ASCII Blend";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
/* Depth-cutting chroma key */
|
||||
string str_mask = "Depth Chroma Key";
|
||||
bool maskenable
|
||||
|
|
@ -257,38 +102,6 @@ float masktilty
|
|||
string UIName = "Chroma Key Depth Vertical Tilt";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.0};
|
||||
/* cheap dot matrix */
|
||||
string str_dot = "RGBI Dot Matrix";
|
||||
bool dotenable
|
||||
<
|
||||
string UIName = "Enable Dot Matrix";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
int dotsize
|
||||
<
|
||||
string UIName = "Dot Size";
|
||||
string UIWidget = "Spinner";
|
||||
int UIMin = 1;
|
||||
> = {1};
|
||||
float dotblend
|
||||
<
|
||||
string UIName = "Dot Blend";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.4};
|
||||
float dotmult
|
||||
<
|
||||
string UIName = "Dot Intensity";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
float dotpow
|
||||
<
|
||||
string UIName = "Dot Contrast";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
/* lens curve with chromatic aberration */
|
||||
string str_curve = "Lens Curvature";
|
||||
bool curveenable
|
||||
|
|
@ -454,3 +267,222 @@ float bblurradius
|
|||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
> = {1.0};
|
||||
/* colour matrix */
|
||||
string str_cmat = "Color Matrix";
|
||||
bool cmatenable
|
||||
<
|
||||
string UIName = "Enable Color Matrix";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
float cmat_rr
|
||||
<
|
||||
string UIName = "Color Matrix Red Red";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
float cmat_rg
|
||||
<
|
||||
string UIName = "Color Matrix Red Green";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.0};
|
||||
float cmat_rb
|
||||
<
|
||||
string UIName = "Color Matrix Red Blue";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.0};
|
||||
float cmat_gr
|
||||
<
|
||||
string UIName = "Color Matrix Green Red";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.0};
|
||||
float cmat_gg
|
||||
<
|
||||
string UIName = "Color Matrix Green Green";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
float cmat_gb
|
||||
<
|
||||
string UIName = "Color Matrix Green Blue";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.0};
|
||||
float cmat_br
|
||||
<
|
||||
string UIName = "Color Matrix Blue Red";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.0};
|
||||
float cmat_bg
|
||||
<
|
||||
string UIName = "Color Matrix Blue Green";
|
||||
string UIWidget = "Spinner";
|
||||
> = {0.0};
|
||||
float cmat_bb
|
||||
<
|
||||
string UIName = "Color Matrix Blue Blue";
|
||||
string UIWidget = "Spinner";
|
||||
> = {1.0};
|
||||
bool cmatnormalize
|
||||
<
|
||||
string UIName = "Normalize Matrix";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
/* hue-saturation */
|
||||
string str_hs = "Hue-Saturation";
|
||||
bool hsenable
|
||||
<
|
||||
string UIName = "Enable Hue-Saturation";
|
||||
string UIWidget = "Checkbox";
|
||||
> = {false};
|
||||
float hsover
|
||||
<
|
||||
string UIName = "Overlap";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = 0.0;
|
||||
float UIMax = 0.5;
|
||||
> = {0.0};
|
||||
float hshue_a
|
||||
<
|
||||
string UIName = "Global Hue";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hssat_a
|
||||
<
|
||||
string UIName = "Global Saturation";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hsval_a
|
||||
<
|
||||
string UIName = "Global Value";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hshue_r
|
||||
<
|
||||
string UIName = "Red Hue";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hssat_r
|
||||
<
|
||||
string UIName = "Red Saturation";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hsval_r
|
||||
<
|
||||
string UIName = "Red Value";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hshue_y
|
||||
<
|
||||
string UIName = "Yellow Hue";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hssat_y
|
||||
<
|
||||
string UIName = "Yellow Saturation";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hsval_y
|
||||
<
|
||||
string UIName = "Yellow Value";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hshue_g
|
||||
<
|
||||
string UIName = "Green Hue";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hssat_g
|
||||
<
|
||||
string UIName = "Green Saturation";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hsval_g
|
||||
<
|
||||
string UIName = "Green Value";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hshue_c
|
||||
<
|
||||
string UIName = "Cyan Hue";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hssat_c
|
||||
<
|
||||
string UIName = "Cyan Saturation";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hsval_c
|
||||
<
|
||||
string UIName = "Cyan Value";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hshue_b
|
||||
<
|
||||
string UIName = "Blue Hue";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hssat_b
|
||||
<
|
||||
string UIName = "Blue Saturation";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hsval_b
|
||||
<
|
||||
string UIName = "Blue Value";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hshue_m
|
||||
<
|
||||
string UIName = "Magenta Hue";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hssat_m
|
||||
<
|
||||
string UIName = "Magenta Saturation";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
float hsval_m
|
||||
<
|
||||
string UIName = "Magenta Value";
|
||||
string UIWidget = "Spinner";
|
||||
float UIMin = -1.0;
|
||||
float UIMax = 1.0;
|
||||
> = {0.0};
|
||||
/* colour balance */
|
||||
|
|
|
|||
|
|
@ -64,32 +64,11 @@
|
|||
#define fogfactor (isfog(WeatherAndTime.x)\
|
||||
?isfog(WeatherAndTime.y)?(1.0):(WeatherAndTime.z)\
|
||||
:isfog(WeatherAndTime.y)?(1.0-WeatherAndTime.z):(0.0))
|
||||
/* asset definitions */
|
||||
/* ascii art font */
|
||||
#define FONT_WIDTH 8
|
||||
#define FONT_HEIGHT 4096
|
||||
#define GLYPH_WIDTH 8
|
||||
#define GLYPH_HEIGHT 16
|
||||
#define FONT_LEVELS 255
|
||||
/*
|
||||
aspect correction for certain overlays
|
||||
uncommented : the textures are 1:1 and must be corrected
|
||||
commented : the textures are 16:9 or whatever ratio you use
|
||||
*/
|
||||
//#define ASPECT_LENSDIRT
|
||||
/* texture sizes */
|
||||
#define NOISESIZE 256.0
|
||||
#define HEATSIZE 1024.0
|
||||
#define FROSTSIZE 1024.0
|
||||
/* LUT mode (use only one) */
|
||||
//#define LUTMODE_LEGACY
|
||||
//#define LUTMODE_16
|
||||
#define LUTMODE_64
|
||||
/* !NEW! volume map option, faster and more precise, no legacy tex support */
|
||||
#define VOLUME_LUTS
|
||||
/* some textures can be provided as DDS rather than PNG to save space */
|
||||
//#define HEAT_DDS
|
||||
//#define LENSDIRT_DDS
|
||||
//#define FROST_DDS
|
||||
//#define FROSTBUMP_DDS
|
||||
//#define VIGNETTE_DDS
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 509 KiB |
Reference in a new issue