74 lines
2.4 KiB
Plaintext
74 lines
2.4 KiB
Plaintext
#include <metal_stdlib>
|
|
#include <simd/simd.h>
|
|
|
|
using namespace metal;
|
|
|
|
struct type_Uniforms
|
|
{
|
|
float4 viewPos;
|
|
float4 lightPosition;
|
|
float time;
|
|
};
|
|
|
|
struct main0_out
|
|
{
|
|
float4 out_var_SV_Target0 [[color(0)]];
|
|
};
|
|
|
|
struct main0_in
|
|
{
|
|
float2 in_var_TEXCOORD0 [[user(locn0)]];
|
|
float3 in_var_TEXCOORD1 [[user(locn1)]];
|
|
float3 in_var_TEXCOORD2 [[user(locn2)]];
|
|
};
|
|
|
|
fragment main0_out main0(main0_in in [[stage_in]], constant type_Uniforms& Uniforms [[buffer(0)]], texture2d<float> Texture [[texture(0)]], sampler Sampler [[sampler(0)]])
|
|
{
|
|
main0_out out = {};
|
|
float4 _59 = Texture.sample(Sampler, in.in_var_TEXCOORD0);
|
|
float _60 = _59.w;
|
|
if (_60 < 0.00999999977648258209228515625)
|
|
{
|
|
discard_fragment();
|
|
}
|
|
float3 _118;
|
|
do
|
|
{
|
|
float3 _74 = Uniforms.lightPosition.xyz - in.in_var_TEXCOORD1;
|
|
float _75 = length(_74);
|
|
float _76 = _75 * _75;
|
|
float _77 = 1.0 / _76;
|
|
float _82;
|
|
if (_75 > 2.0)
|
|
{
|
|
_82 = 0.5 / _76;
|
|
}
|
|
else
|
|
{
|
|
_82 = _77;
|
|
}
|
|
float _87;
|
|
if (_75 > 4.0)
|
|
{
|
|
_87 = _82 * 0.5;
|
|
}
|
|
else
|
|
{
|
|
_87 = _82;
|
|
}
|
|
float _89 = (_75 > 15.0) ? 0.0 : _87;
|
|
float _91 = (_89 > 1.0) ? 1.0 : _89;
|
|
if (length(in.in_var_TEXCOORD2) < 0.100000001490116119384765625)
|
|
{
|
|
_118 = ((in.in_var_TEXCOORD1 * float3(0.800000011920928955078125, 0.800000011920928955078125, 0.5)) * _77) * _91;
|
|
break;
|
|
}
|
|
float3 _99 = fast::normalize(_74);
|
|
_118 = ((float3(0.800000011920928955078125, 0.800000011920928955078125, 0.5) * precise::max(dot(_99, in.in_var_TEXCOORD2), 0.0)) * _91) + (((float3(0.800000011920928955078125, 0.800000011920928955078125, 0.5) * powr(precise::max(dot(in.in_var_TEXCOORD2, fast::normalize(_99 + fast::normalize(in.in_var_TEXCOORD1 - Uniforms.viewPos.xyz))), 0.0), 30.0)) * 2.0) * _91);
|
|
break;
|
|
} while(false);
|
|
out.out_var_SV_Target0 = float4(powr(_59.xyz * ((mix(float3(0.00999999977648258209228515625, 0.00999999977648258209228515625, 0.0030000000260770320892333984375), float3(0.0040000001899898052215576171875, 0.0040000001899898052215576171875, 0.0599999986588954925537109375), float3(in.in_var_TEXCOORD2.y)) * 0.001000000047497451305389404296875) + _118), float3(0.4545454680919647216796875)), _60);
|
|
return out;
|
|
}
|
|
|