This commit is contained in:
Emmanuel BENOîT 2017-10-05 18:35:35 +02:00
parent 883dd9e2a6
commit 7483769714
11 changed files with 2213 additions and 16 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,7 @@
#version 450 core
//! type fragment
//! include lib/utils.glsl
layout( location = 0 ) uniform sampler2D u_MainInput;
layout( location = 1 ) uniform sampler2D u_BlurInput;
@ -20,13 +21,13 @@ layout( location = 8 ) uniform vec3 u_ColorGamma;
#define uVigApplyMax (u_Vignette2.y)
layout( location = 0 ) out vec3 o_Color;
layout( location = 0 ) out vec4 o_Color;
void main( void )
{
vec2 pos = gl_FragCoord.xy / u_OutputSize;
float f = u_Bloom.x;
o_Color = textureLod( u_MainInput , pos , 0 ).rgb;
vec3 color = textureLod( u_MainInput , pos , 0 ).rgb;
// Bloom
vec3 bloom = vec3( 0 );
@ -34,10 +35,10 @@ void main( void )
bloom += f * textureLod( u_BlurInput , pos , i ).rgb;
f = pow( f , u_Bloom.y + 1 );
}
o_Color = o_Color + bloom / 2.2;
color = color + bloom / 2.2;
// Color grading
o_Color = ( o_Color * ( u_ColorGain - u_ColorLift ) ) + u_ColorLift;
color = ( color * ( u_ColorGain - u_ColorLift ) ) + u_ColorLift;
// Vignette
vec2 vShape = pow( abs( pos * 2 - 1 ) * uVigShapeMul ,
@ -45,12 +46,14 @@ void main( void )
float vignette = 1 - pow(
2 * ( uVigAspect * vShape.x + ( 1 - uVigAspect) * vShape.y ) ,
1 / ( uVigShapePow * uVigShapeReverse ) );
o_Color *= uVigApplyBase + smoothstep(
color *= uVigApplyBase + smoothstep(
uVigApplyBase , uVigApplyBase + uVigApplyMax , vignette );
// Reinhart
o_Color = o_Color / ( o_Color + 1. );
color = color / ( color + 1. );
// Gamma
o_Color = pow( o_Color , vec3( 1 ) / ( u_ColorGamma + 2.2 ) );
color = pow( color , vec3( 1 ) / ( u_ColorGamma + 2.2 ) );
o_Color = vec4( color , M_Luminosity( color ) );
}

43
shaders/fxaa.f.glsl Normal file
View file

@ -0,0 +1,43 @@
#version 450 core
//! type fragment
#define FXAA_PC 1
#define FXAA_GLSL_130 1
#define FXAA_FAST_PIXEL_OFFSET 1
#define FXAA_GATHER4_ALPHA 1
#define FXAA_QUALITY__PRESET 39
//! include chunks/fxaa-3.11.glsl
layout( location = 0 ) uniform sampler2D u_Input;
layout( location = 1 ) uniform vec2 u_Resolution;
layout( location = 2 ) uniform vec3 u_Parameters;
#define uSPQuality (u_Parameters.x)
#define uEdgeThreshold (u_Parameters.y)
#define uEdgeThresholdMin (u_Parameters.z)
layout( location = 0 ) out vec4 o_Color;
void main( void )
{
o_Color = FxaaPixelShader(
( gl_FragCoord.xy / u_Resolution ) , // pos (vec2)
vec4( 0 ) , // unused (vec4)
u_Input , // input texture
u_Input , // (unused) input texture
u_Input , // (unused) input texture
vec2( 1 ) / u_Resolution , // 1/resolution (vec2)
vec4( 0 ) , // unused (vec4)
vec4( 0 ) , // unused (vec4)
vec4( 0 ) , // unused (vec4)
uSPQuality , // sub-pixel quality (float in [0;1])
uEdgeThreshold , // edge threshold (float, [.063;.333], lower = better)
uEdgeThresholdMin , // edge threshold min (float, [0.0312;0.0833],
// higher = better)
0 , // unused (float)
0 , // unused (float)
0 , // unused (float)
vec4( 0 ) ); // unused (vec4)
}