64 lines
1.8 KiB
Plaintext
64 lines
1.8 KiB
Plaintext
#include <metal_stdlib>
|
|
using namespace metal;
|
|
struct xlatMtlShaderInput {
|
|
float4 var_uv;
|
|
};
|
|
struct xlatMtlShaderOutput {
|
|
half4 out_data [[color(0)]];
|
|
};
|
|
struct xlatMtlShaderUniform {
|
|
float uni1;
|
|
half4 uni4;
|
|
half _AtmosphereThickness;
|
|
};
|
|
fragment xlatMtlShaderOutput xlatMtlMain (xlatMtlShaderInput _mtl_i [[stage_in]], constant xlatMtlShaderUniform& _mtl_u [[buffer(0)]]
|
|
, texture2d<half> tex1 [[texture(0)]], sampler _mtlsmp_tex1 [[sampler(0)]])
|
|
{
|
|
xlatMtlShaderOutput _mtl_o;
|
|
float mut_uni1_1;
|
|
half4 mut_uni4_2;
|
|
float kKrESun_3;
|
|
float kKr4PI_4;
|
|
mut_uni4_2.zw = _mtl_u.uni4.zw;
|
|
half tmpvar_5_5;
|
|
half tmpvar_3_6;
|
|
half4 c_7;
|
|
c_7.yzw = half3(float3(0.0, 0.0, 0.0));
|
|
c_7.x = _mtl_u.uni4.x;
|
|
float3 tmpvar_8;
|
|
float2 uv_9;
|
|
uv_9 = _mtl_i.var_uv.xy;
|
|
mut_uni4_2.xy = half2(uv_9);
|
|
half3 tmpvar_10;
|
|
tmpvar_10 = tex1.sample(_mtlsmp_tex1, (float2)(mut_uni4_2.xy)).xyz;
|
|
tmpvar_8 = float3(tmpvar_10);
|
|
c_7.xyz = half3(((float3)c_7.xyz + tmpvar_8));
|
|
c_7.z = half(((float)c_7.z + _mtl_u.uni1));
|
|
mut_uni1_1 = (_mtl_u.uni1 + 2.0);
|
|
c_7.w = half(mut_uni1_1);
|
|
half tmpvar_11;
|
|
tmpvar_11 = pow (_mtl_u._AtmosphereThickness, (half)2.5);
|
|
tmpvar_3_6 = ((half)0.05 * tmpvar_11);
|
|
kKrESun_3 = float(tmpvar_3_6);
|
|
tmpvar_5_5 = (tmpvar_11 * (half)0.031416);
|
|
kKr4PI_4 = float(tmpvar_5_5);
|
|
if ((_mtl_i.var_uv.x > 0.5)) {
|
|
float tmpvar_12;
|
|
tmpvar_12 = pow (kKrESun_3, kKr4PI_4);
|
|
c_7.x = half(((float)c_7.x + tmpvar_12));
|
|
};
|
|
_mtl_o.out_data = c_7;
|
|
return _mtl_o;
|
|
}
|
|
|
|
|
|
// stats: 10 alu 1 tex 1 flow
|
|
// inputs: 1
|
|
// #0: var_uv (high float) 4x1 [-1]
|
|
// uniforms: 3 (total size: 18)
|
|
// #0: uni1 (high float) 1x1 [-1] loc 0
|
|
// #1: uni4 (medium float) 4x1 [-1] loc 8
|
|
// #2: _AtmosphereThickness (medium float) 1x1 [-1] loc 16
|
|
// textures: 1
|
|
// #0: tex1 (low 2d) 0x0 [-1] loc 0
|