260 lines
6.6 KiB
Plaintext
260 lines
6.6 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(4294967295)]], texture2d<float> Texture0 [[texture(0)]], sampler Sampler0 [[sampler(0)]])
|
|
{
|
|
main0_out out = {};
|
|
bool _73 = in.in_var_TEXCOORD2.x < scene._m0[in.in_var_TEXCOORD3].rounding.x;
|
|
bool _80;
|
|
if (_73)
|
|
{
|
|
_80 = in.in_var_TEXCOORD2.y < scene._m0[in.in_var_TEXCOORD3].rounding.y;
|
|
}
|
|
else
|
|
{
|
|
_80 = false;
|
|
}
|
|
float _97;
|
|
float3 _98;
|
|
if (_80)
|
|
{
|
|
float _84 = distance(in.in_var_TEXCOORD2, float2(scene._m0[in.in_var_TEXCOORD3].rounding.x));
|
|
float _95;
|
|
float3 _96;
|
|
if (_84 > scene._m0[in.in_var_TEXCOORD3].rounding.x)
|
|
{
|
|
discard_fragment();
|
|
}
|
|
else
|
|
{
|
|
if (abs(_84 - scene._m0[in.in_var_TEXCOORD3].rounding.x) < 1.0)
|
|
{
|
|
_95 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w;
|
|
_96 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz;
|
|
}
|
|
else
|
|
{
|
|
_95 = scene._m0[in.in_var_TEXCOORD3].alpha;
|
|
_96 = in.in_var_TEXCOORD0.xyz;
|
|
}
|
|
}
|
|
_97 = _95;
|
|
_98 = _96;
|
|
}
|
|
else
|
|
{
|
|
_97 = scene._m0[in.in_var_TEXCOORD3].alpha;
|
|
_98 = in.in_var_TEXCOORD0.xyz;
|
|
}
|
|
float _101 = scene._m0[in.in_var_TEXCOORD3]._imageSize.x - scene._m0[in.in_var_TEXCOORD3].rounding.y;
|
|
bool _108;
|
|
if (in.in_var_TEXCOORD2.x > _101)
|
|
{
|
|
_108 = in.in_var_TEXCOORD2.y < scene._m0[in.in_var_TEXCOORD3].rounding.y;
|
|
}
|
|
else
|
|
{
|
|
_108 = false;
|
|
}
|
|
float _125;
|
|
float3 _126;
|
|
if (_108)
|
|
{
|
|
float _112 = distance(in.in_var_TEXCOORD2, float2(_101, scene._m0[in.in_var_TEXCOORD3].rounding.y));
|
|
float _123;
|
|
float3 _124;
|
|
if (_112 > scene._m0[in.in_var_TEXCOORD3].rounding.y)
|
|
{
|
|
discard_fragment();
|
|
}
|
|
else
|
|
{
|
|
if (abs(_112 - scene._m0[in.in_var_TEXCOORD3].rounding.y) < 1.0)
|
|
{
|
|
_123 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w;
|
|
_124 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz;
|
|
}
|
|
else
|
|
{
|
|
_123 = _97;
|
|
_124 = _98;
|
|
}
|
|
}
|
|
_125 = _123;
|
|
_126 = _124;
|
|
}
|
|
else
|
|
{
|
|
_125 = _97;
|
|
_126 = _98;
|
|
}
|
|
bool _134;
|
|
if (_73)
|
|
{
|
|
_134 = in.in_var_TEXCOORD2.y > (scene._m0[in.in_var_TEXCOORD3]._imageSize.y - scene._m0[in.in_var_TEXCOORD3].rounding.y);
|
|
}
|
|
else
|
|
{
|
|
_134 = false;
|
|
}
|
|
float _153;
|
|
float3 _154;
|
|
if (_134)
|
|
{
|
|
float _140 = 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 _151;
|
|
float3 _152;
|
|
if (_140 > scene._m0[in.in_var_TEXCOORD3].rounding.y)
|
|
{
|
|
discard_fragment();
|
|
}
|
|
else
|
|
{
|
|
if (abs(_140 - scene._m0[in.in_var_TEXCOORD3].rounding.y) < 1.0)
|
|
{
|
|
_151 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w;
|
|
_152 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz;
|
|
}
|
|
else
|
|
{
|
|
_151 = _125;
|
|
_152 = _126;
|
|
}
|
|
}
|
|
_153 = _151;
|
|
_154 = _152;
|
|
}
|
|
else
|
|
{
|
|
_153 = _125;
|
|
_154 = _126;
|
|
}
|
|
bool _165;
|
|
if (in.in_var_TEXCOORD2.x > (scene._m0[in.in_var_TEXCOORD3]._imageSize.x - scene._m0[in.in_var_TEXCOORD3].rounding.w))
|
|
{
|
|
_165 = (scene._m0[in.in_var_TEXCOORD3]._imageSize.y - in.in_var_TEXCOORD2.y) < scene._m0[in.in_var_TEXCOORD3].rounding.w;
|
|
}
|
|
else
|
|
{
|
|
_165 = false;
|
|
}
|
|
float _185;
|
|
float3 _186;
|
|
if (_165)
|
|
{
|
|
float _172 = 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 _183;
|
|
float3 _184;
|
|
if (_172 > scene._m0[in.in_var_TEXCOORD3].rounding.y)
|
|
{
|
|
discard_fragment();
|
|
}
|
|
else
|
|
{
|
|
if (abs(_172 - scene._m0[in.in_var_TEXCOORD3].rounding.y) < 1.0)
|
|
{
|
|
_183 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w;
|
|
_184 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz;
|
|
}
|
|
else
|
|
{
|
|
_183 = _153;
|
|
_184 = _154;
|
|
}
|
|
}
|
|
_185 = _183;
|
|
_186 = _184;
|
|
}
|
|
else
|
|
{
|
|
_185 = _153;
|
|
_186 = _154;
|
|
}
|
|
bool _193;
|
|
if (!(in.in_var_TEXCOORD2.x < scene._m0[in.in_var_TEXCOORD3].borderWidth))
|
|
{
|
|
_193 = in.in_var_TEXCOORD2.x > (scene._m0[in.in_var_TEXCOORD3]._imageSize.x - scene._m0[in.in_var_TEXCOORD3].borderWidth);
|
|
}
|
|
else
|
|
{
|
|
_193 = true;
|
|
}
|
|
bool _200;
|
|
if (!_193)
|
|
{
|
|
_200 = in.in_var_TEXCOORD2.y < scene._m0[in.in_var_TEXCOORD3].borderWidth;
|
|
}
|
|
else
|
|
{
|
|
_200 = true;
|
|
}
|
|
bool _209;
|
|
if (!_200)
|
|
{
|
|
_209 = in.in_var_TEXCOORD2.y > (scene._m0[in.in_var_TEXCOORD3]._imageSize.y - scene._m0[in.in_var_TEXCOORD3].borderWidth);
|
|
}
|
|
else
|
|
{
|
|
_209 = true;
|
|
}
|
|
float _214;
|
|
float3 _215;
|
|
if (_209)
|
|
{
|
|
_214 = scene._m0[in.in_var_TEXCOORD3].edgeColor.w;
|
|
_215 = scene._m0[in.in_var_TEXCOORD3].edgeColor.xyz;
|
|
}
|
|
else
|
|
{
|
|
_214 = _185;
|
|
_215 = _186;
|
|
}
|
|
float4 _241;
|
|
if ((scene._m0[in.in_var_TEXCOORD3].flags & 1u) > 0u)
|
|
{
|
|
float4 _229 = Texture0.sample(Sampler0, float2(in.in_var_TEXCOORD1.x, 1.0 - in.in_var_TEXCOORD1.y));
|
|
_241 = float4(_229.xyz, _229.w * _214);
|
|
}
|
|
else
|
|
{
|
|
_241 = float4(powr(_215, float3(2.2000000476837158203125)), _214);
|
|
}
|
|
out.out_var_SV_Target0 = _241;
|
|
return out;
|
|
}
|
|
|