260 lines
6.5 KiB
Plaintext
260 lines
6.5 KiB
Plaintext
#include <metal_stdlib>
|
|
#include <simd/simd.h>
|
|
|
|
using namespace metal;
|
|
|
|
struct Scene
|
|
{
|
|
float2 imagePosition;
|
|
float2 _imageSize;
|
|
float2 anchorPoint;
|
|
float2 scale;
|
|
float alpha;
|
|
float borderWidth;
|
|
uint flags;
|
|
float4 baseColor;
|
|
float4 rounding;
|
|
float4 edgeColor;
|
|
};
|
|
|
|
struct type_StructuredBuffer_Scene
|
|
{
|
|
Scene _m0[1];
|
|
};
|
|
|
|
struct main0_out
|
|
{
|
|
float4 out_var_SV_Target0 [[color(0)]];
|
|
};
|
|
|
|
struct main0_in
|
|
{
|
|
float4 in_var_TEXCOORD0 [[user(locn0)]];
|
|
float2 in_var_TEXCOORD1 [[user(locn1)]];
|
|
float2 in_var_TEXCOORD2 [[user(locn2)]];
|
|
uint in_var_TEXCOORD3 [[user(locn3)]];
|
|
};
|
|
|
|
fragment main0_out main0(main0_in in [[stage_in]], const device type_StructuredBuffer_Scene& scene [[buffer(0)]], texture2d<float> Texture0 [[texture(0)]], sampler Sampler0 [[sampler(0)]])
|
|
{
|
|
main0_out out = {};
|
|
bool _71 = in.in_var_TEXCOORD2.x < scene._m0[in.in_var_TEXCOORD3].rounding.x;
|
|
bool _78;
|
|
if (_71)
|
|
{
|
|
_78 = in.in_var_TEXCOORD2.y < scene._m0[in.in_var_TEXCOORD3].rounding.y;
|
|
}
|
|
else
|
|
{
|
|
_78 = false;
|
|
}
|
|
float _95;
|
|
float3 _96;
|
|
if (_78)
|
|
{
|
|
float _82 = distance(in.in_var_TEXCOORD2, float2(scene._m0[in.in_var_TEXCOORD3].rounding.x));
|
|
float _93;
|
|
float3 _94;
|
|
if (_82 > scene._m0[in.in_var_TEXCOORD3].rounding.x)
|
|
{
|
|
discard_fragment();
|
|
}
|
|
else
|
|
{
|
|
if (abs(_82 - scene._m0[in.in_var_TEXCOORD3].rounding.x) < 1.0)
|
|
{
|
|
_93 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w;
|
|
_94 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz;
|
|
}
|
|
else
|
|
{
|
|
_93 = scene._m0[in.in_var_TEXCOORD3].alpha;
|
|
_94 = in.in_var_TEXCOORD0.xyz;
|
|
}
|
|
}
|
|
_95 = _93;
|
|
_96 = _94;
|
|
}
|
|
else
|
|
{
|
|
_95 = scene._m0[in.in_var_TEXCOORD3].alpha;
|
|
_96 = in.in_var_TEXCOORD0.xyz;
|
|
}
|
|
float _99 = scene._m0[in.in_var_TEXCOORD3]._imageSize.x - scene._m0[in.in_var_TEXCOORD3].rounding.y;
|
|
bool _106;
|
|
if (in.in_var_TEXCOORD2.x > _99)
|
|
{
|
|
_106 = in.in_var_TEXCOORD2.y < scene._m0[in.in_var_TEXCOORD3].rounding.y;
|
|
}
|
|
else
|
|
{
|
|
_106 = false;
|
|
}
|
|
float _123;
|
|
float3 _124;
|
|
if (_106)
|
|
{
|
|
float _110 = distance(in.in_var_TEXCOORD2, float2(_99, scene._m0[in.in_var_TEXCOORD3].rounding.y));
|
|
float _121;
|
|
float3 _122;
|
|
if (_110 > scene._m0[in.in_var_TEXCOORD3].rounding.y)
|
|
{
|
|
discard_fragment();
|
|
}
|
|
else
|
|
{
|
|
if (abs(_110 - scene._m0[in.in_var_TEXCOORD3].rounding.y) < 1.0)
|
|
{
|
|
_121 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w;
|
|
_122 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz;
|
|
}
|
|
else
|
|
{
|
|
_121 = _95;
|
|
_122 = _96;
|
|
}
|
|
}
|
|
_123 = _121;
|
|
_124 = _122;
|
|
}
|
|
else
|
|
{
|
|
_123 = _95;
|
|
_124 = _96;
|
|
}
|
|
bool _132;
|
|
if (_71)
|
|
{
|
|
_132 = in.in_var_TEXCOORD2.y > (scene._m0[in.in_var_TEXCOORD3]._imageSize.y - scene._m0[in.in_var_TEXCOORD3].rounding.y);
|
|
}
|
|
else
|
|
{
|
|
_132 = false;
|
|
}
|
|
float _151;
|
|
float3 _152;
|
|
if (_132)
|
|
{
|
|
float _138 = distance(in.in_var_TEXCOORD2, float2(scene._m0[in.in_var_TEXCOORD3].rounding.x, scene._m0[in.in_var_TEXCOORD3]._imageSize.y - scene._m0[in.in_var_TEXCOORD3].rounding.y));
|
|
float _149;
|
|
float3 _150;
|
|
if (_138 > scene._m0[in.in_var_TEXCOORD3].rounding.y)
|
|
{
|
|
discard_fragment();
|
|
}
|
|
else
|
|
{
|
|
if (abs(_138 - scene._m0[in.in_var_TEXCOORD3].rounding.y) < 1.0)
|
|
{
|
|
_149 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w;
|
|
_150 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz;
|
|
}
|
|
else
|
|
{
|
|
_149 = _123;
|
|
_150 = _124;
|
|
}
|
|
}
|
|
_151 = _149;
|
|
_152 = _150;
|
|
}
|
|
else
|
|
{
|
|
_151 = _123;
|
|
_152 = _124;
|
|
}
|
|
bool _163;
|
|
if (in.in_var_TEXCOORD2.x > (scene._m0[in.in_var_TEXCOORD3]._imageSize.x - scene._m0[in.in_var_TEXCOORD3].rounding.w))
|
|
{
|
|
_163 = (scene._m0[in.in_var_TEXCOORD3]._imageSize.y - in.in_var_TEXCOORD2.y) < scene._m0[in.in_var_TEXCOORD3].rounding.w;
|
|
}
|
|
else
|
|
{
|
|
_163 = false;
|
|
}
|
|
float _183;
|
|
float3 _184;
|
|
if (_163)
|
|
{
|
|
float _170 = distance(in.in_var_TEXCOORD2, float2(scene._m0[in.in_var_TEXCOORD3]._imageSize.x - scene._m0[in.in_var_TEXCOORD3].rounding.x, scene._m0[in.in_var_TEXCOORD3]._imageSize.y - scene._m0[in.in_var_TEXCOORD3].rounding.y));
|
|
float _181;
|
|
float3 _182;
|
|
if (_170 > scene._m0[in.in_var_TEXCOORD3].rounding.y)
|
|
{
|
|
discard_fragment();
|
|
}
|
|
else
|
|
{
|
|
if (abs(_170 - scene._m0[in.in_var_TEXCOORD3].rounding.y) < 1.0)
|
|
{
|
|
_181 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w;
|
|
_182 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz;
|
|
}
|
|
else
|
|
{
|
|
_181 = _151;
|
|
_182 = _152;
|
|
}
|
|
}
|
|
_183 = _181;
|
|
_184 = _182;
|
|
}
|
|
else
|
|
{
|
|
_183 = _151;
|
|
_184 = _152;
|
|
}
|
|
bool _191;
|
|
if (!(in.in_var_TEXCOORD2.x < scene._m0[in.in_var_TEXCOORD3].borderWidth))
|
|
{
|
|
_191 = in.in_var_TEXCOORD2.x > (scene._m0[in.in_var_TEXCOORD3]._imageSize.x - scene._m0[in.in_var_TEXCOORD3].borderWidth);
|
|
}
|
|
else
|
|
{
|
|
_191 = true;
|
|
}
|
|
bool _198;
|
|
if (!_191)
|
|
{
|
|
_198 = in.in_var_TEXCOORD2.y < scene._m0[in.in_var_TEXCOORD3].borderWidth;
|
|
}
|
|
else
|
|
{
|
|
_198 = true;
|
|
}
|
|
bool _207;
|
|
if (!_198)
|
|
{
|
|
_207 = in.in_var_TEXCOORD2.y > (scene._m0[in.in_var_TEXCOORD3]._imageSize.y - scene._m0[in.in_var_TEXCOORD3].borderWidth);
|
|
}
|
|
else
|
|
{
|
|
_207 = true;
|
|
}
|
|
float _212;
|
|
float3 _213;
|
|
if (_207)
|
|
{
|
|
_212 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w;
|
|
_213 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz;
|
|
}
|
|
else
|
|
{
|
|
_212 = _183;
|
|
_213 = _184;
|
|
}
|
|
float4 _238;
|
|
if ((scene._m0[in.in_var_TEXCOORD3].flags & 1u) > 0u)
|
|
{
|
|
float4 _227 = Texture0.sample(Sampler0, float2(in.in_var_TEXCOORD1.x, 1.0 - in.in_var_TEXCOORD1.y));
|
|
_238 = float4(_227.xyz, _227.w * _212);
|
|
}
|
|
else
|
|
{
|
|
_238 = float4(_213, _212);
|
|
}
|
|
out.out_var_SV_Target0 = _238;
|
|
return out;
|
|
}
|
|
|