You're breathtaking!
This commit is contained in:
32
Source/Shaders/Forward.shader
Normal file
32
Source/Shaders/Forward.shader
Normal file
@@ -0,0 +1,32 @@
|
||||
// Copyright (c) 2012-2020 Wojciech Figat. All rights reserved.
|
||||
|
||||
#include "./Flax/Common.hlsl"
|
||||
|
||||
Texture2D Input : register(t0);
|
||||
Texture2D Distortion : register(t1);
|
||||
|
||||
// Pixel shader for applying distortion pass results to the combined frame
|
||||
META_PS(true, FEATURE_LEVEL_ES2)
|
||||
float4 PS_ApplyDistortion(Quad_VS2PS input) : SV_Target
|
||||
{
|
||||
// Sample accumulated distortion offset
|
||||
half4 accumDist = Distortion.Sample(SamplerPointClamp, input.TexCoord);
|
||||
|
||||
// Offset = [R-B,G-A]
|
||||
half2 distOffset = (accumDist.rg - accumDist.ba);
|
||||
|
||||
static const half InvDistortionScaleBias = 1 / 4.0f;
|
||||
distOffset *= InvDistortionScaleBias;
|
||||
|
||||
float2 newTexCoord = input.TexCoord + distOffset;
|
||||
|
||||
// If we're about to sample outside the valid area, set to 0 distortion
|
||||
FLATTEN
|
||||
if (newTexCoord.x < 0 || newTexCoord.x > 1 || newTexCoord.y < 0 || newTexCoord.y > 1)
|
||||
{
|
||||
newTexCoord = input.TexCoord;
|
||||
}
|
||||
|
||||
// Sample screen using offset coords
|
||||
return Input.SampleLevel(SamplerPointClamp, newTexCoord, 0);
|
||||
}
|
||||
Reference in New Issue
Block a user