20 lines
574 B
HLSL
20 lines
574 B
HLSL
// Copyright (c) Wojciech Figat. All rights reserved.
|
|
|
|
#ifndef __TEMPORAL__
|
|
#define __TEMPORAL__
|
|
|
|
#include "./Flax/Common.hlsl"
|
|
|
|
// [Pedersen, 2016, "Temporal Reprojection Anti-Aliasing in INSIDE"]
|
|
float4 ClipToAABB(float4 color, float4 minimum, float4 maximum)
|
|
{
|
|
float4 center = (maximum + minimum) * 0.5;
|
|
float4 extents = (maximum - minimum) * 0.5;
|
|
float4 shift = color - center;
|
|
float4 absUnit = abs(shift / max(extents, 0.0001));
|
|
float maxUnit = max(max(absUnit.x, absUnit.y), absUnit.z);
|
|
return maxUnit > 1.0 ? center + (shift / maxUnit) : color;
|
|
}
|
|
|
|
#endif
|