2014-12-07 19:09:38 -05:00
|
|
|
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
2014-03-14 14:13:41 -04:00
|
|
|
|
|
|
|
|
/*=============================================================================
|
|
|
|
|
PostProcessVisualizeGBuffer.usf: PostProcessing shader to visualize the GBuffer
|
|
|
|
|
=============================================================================*/
|
|
|
|
|
|
|
|
|
|
#include "Common.usf"
|
|
|
|
|
#include "PostProcessCommon.usf"
|
|
|
|
|
#include "DeferredShadingCommon.usf"
|
|
|
|
|
#include "PostProcessHistogramCommon.usf"
|
|
|
|
|
|
|
|
|
|
/** Main pixel shader function */
|
|
|
|
|
void MainPS(float4 UVAndScreenPos : TEXCOORD0, out float4 OutColor : SV_Target0)
|
|
|
|
|
{
|
|
|
|
|
float Alpha = 1;
|
|
|
|
|
|
|
|
|
|
#if DRAWING_TILE
|
|
|
|
|
int2 PixelPos = (int2)(UVAndScreenPos.zw * ScreenPosToPixel.xy + ScreenPosToPixel.zw + 0.5f);
|
|
|
|
|
|
|
|
|
|
// half viewport size
|
|
|
|
|
int2 HalfInsetSize = (int2)(ViewportSize.xy / 2);
|
|
|
|
|
// quarter viewport size
|
|
|
|
|
int2 QuarterInsetSize = (int2)(ViewportSize.xy / 4);
|
|
|
|
|
|
|
|
|
|
// 16 tiles over the full viewport
|
|
|
|
|
int2 QuarterTileXY = (int2)((uint2)PixelPos / QuarterInsetSize);
|
|
|
|
|
// pixel position within a quartertile
|
|
|
|
|
int2 QuarterTileLocalPos = PixelPos - QuarterTileXY * QuarterInsetSize;
|
|
|
|
|
|
|
|
|
|
const int Border1 = 10;
|
|
|
|
|
const int Border2 = 8;
|
|
|
|
|
float BorderDistance = ComputeDistanceToRect(QuarterTileLocalPos, int2(0, 0) + Border1.xx, QuarterInsetSize - 2 * Border1.xx);
|
|
|
|
|
Alpha = 1 - saturate((BorderDistance - Border2.x) * 0.5f);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
OutColor = float4(Texture2DSample(PostprocessInput0, PostprocessInput0Sampler, UVAndScreenPos.xy).rgb, Alpha);
|
|
|
|
|
}
|