How are these radius,width and height variables assigned?
#include "/Engine/Public/Platform.ush"
void MainVS(
in uint GlobalVertexId :SV_VertexID,
in float4 InPosition : ATTRIBUTE0,
in float2 InUV : ATTRIBUTE1,
out float2 OutTexSrc :TEXCOORD0,
out float4 OutPosition :SV_POSITION
)
{
OutTexSrc = InUV;
OutPosition = InPosition;
}
SamplerState TexSrc;
Texture2D TexSrcObj;
//
SamplerState TexColorBar;
Texture2D TexColorBarObj;
//
int radius;
float width;
float height;
const float PI = 3.141592653589793;
const float sigma = 3.0f;
float4 GaussianBlur(in float2 UV)
{
float twoSigmaSqu = 2 * sigma * sigma;
int r = radius; //int(ceil(sigma * 2.57));
float allWeight = 0.0f;
//
vec4 col = vec4(0.0f, 0.0f, 0.0f, 0.0f);
for (int iy = -r; iy < (r + 1); iy++)
{
for (int ix = -r; ix < (r + 1); ix++)
{
float weight = 1.0f / (PI * twoSigmaSqu) * exp(-(ix * ix) / twoSigmaSqu);
float2 offset = float2(1.0f / width * ix, 1.0f / height * iy);
float2 uv_offset = OutTexSrcObjUV + offset;
uv_offset.x = clamp(uv_offset.x, 0.0f, 1.0f);
uv_offset.y = clamp(uv_offset.y, 0.0f, 1.0f);
col += float4(Texture2DSample(TexSrcObj,TexSrc,uv_offset).rgb, 1.0f)* weight;
allWeight += weight;
}
}
col = col / allWeight;
//灰度图映射颜色条
col = float4(Texture2DSample(TexColorBarObj,TexColorBar,float2(col.r,1)).rgb,1.0f)
return col;
}
void MainPS(
in float2 OutTexSrc :TEXCOORD0,
in float4 SvPosition :SV_POSITION,
out float4 OutColor :SV_Target0
)
{
// 输出置换通道。
OutColor = GaussianBlur(OutTexSrc);
}