Temporal Smear Update
This commit is contained in:
parent
89138f1a1c
commit
e95ce87015
|
@ -17,6 +17,8 @@ uniform Params
|
|||
float luma;
|
||||
float minBrightness;
|
||||
float saturate;
|
||||
float blur;
|
||||
float blurRange;
|
||||
|
||||
} params;
|
||||
|
||||
|
@ -27,13 +29,25 @@ void main()
|
|||
vec4 currentPixel = imageLoad( currentImage, currentPosition );
|
||||
vec4 lastPixel = imageLoad( lastProcessedImage, currentPosition );
|
||||
|
||||
int blurOffset = int( params.blurRange );
|
||||
vec4 top = imageLoad( lastProcessedImage, currentPosition + ivec2( 0, -blurOffset ) );
|
||||
vec4 left = imageLoad( lastProcessedImage, currentPosition + ivec2( -blurOffset, 0 ) );
|
||||
vec4 bottom = imageLoad( lastProcessedImage, currentPosition + ivec2( 0, blurOffset ) );
|
||||
vec4 right = imageLoad( lastProcessedImage, currentPosition + ivec2( blurOffset, 0 ) );
|
||||
|
||||
vec4 blurred = ( top + left + bottom + right ) / 4.0;
|
||||
|
||||
vec4 blurredLastPixel = mix( lastPixel, blurred, params.blur );
|
||||
|
||||
float luminance = min( 1.0, length( vec3( lastPixel.r, lastPixel.g, lastPixel.b ) ) );
|
||||
float amount = ( luminance - params.minBrightness ) / ( 1.0 - params.minBrightness );
|
||||
amount = min( max( 0.0, amount * params.saturate ), 1.0 ) * params.smearing;
|
||||
amount = mix( 1.0, amount, params.luma );
|
||||
|
||||
vec4 nextPixel = currentPixel + min( 1.0, amount * params.smearing ) * ( lastPixel - currentPixel );
|
||||
vec4 nextPixelBlurred = currentPixel + min( 1.0, amount * params.smearing ) * ( blurredLastPixel - currentPixel );
|
||||
|
||||
|
||||
imageStore( currentImage, currentPosition, mix( currentPixel, nextPixel, params.amount ) );
|
||||
imageStore( currentImage, currentPosition, mix( currentPixel, nextPixelBlurred, params.amount ) );
|
||||
imageStore( lastProcessedImage, currentPosition, nextPixel );
|
||||
}
|
||||
|
|
|
@ -27,6 +27,11 @@ namespace Rokojori
|
|||
[Export( PropertyHint.Range, "0.5,5")]
|
||||
public float lumaSaturate = 1.3f;
|
||||
|
||||
[Export( PropertyHint.Range, "0,1")]
|
||||
public float blur = 0.5f;
|
||||
|
||||
[Export( PropertyHint.Range, "1,30")]
|
||||
public float blurRange = 2f;
|
||||
|
||||
protected override void OnConfigure()
|
||||
{
|
||||
|
@ -43,7 +48,9 @@ namespace Rokojori
|
|||
smearing,
|
||||
lumaAmount,
|
||||
lumaTreshold,
|
||||
lumaSaturate
|
||||
lumaSaturate,
|
||||
blur,
|
||||
blurRange
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue