Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <metal_stdlib>
- #include <metal_texture>
- using namespace metal;
- struct Globals_Type
- {
- float3 _WorldSpaceCameraPos;
- half4 _WorldSpaceLightPos0;
- half4 unity_SHAr;
- half4 unity_SHAg;
- half4 unity_SHAb;
- half4 unity_OcclusionMaskSelector;
- float4 hlslcc_mtx4x4unity_WorldToShadow[16];
- half4 _LightShadowData;
- float4 unity_ShadowFadeCenterAndType;
- float4 hlslcc_mtx4x4unity_MatrixV[4];
- half4 unity_SpecCube0_HDR;
- float4 unity_ProbeVolumeParams;
- float4 hlslcc_mtx4x4unity_ProbeVolumeWorldToObject[4];
- float3 unity_ProbeVolumeSizeInv;
- float3 unity_ProbeVolumeMin;
- half4 _LightColor0;
- half4 _Color;
- half _Metallic;
- half _Glossiness;
- half _OcclusionStrength;
- };
- struct Mtl_FragmentIn
- {
- float4 TEXCOORD0 [[ user(TEXCOORD0) ]] ;
- half3 TEXCOORD1 [[ user(TEXCOORD1) ]] ;
- half4 TEXCOORD2 [[ user(TEXCOORD2) ]] ;
- half4 TEXCOORD3 [[ user(TEXCOORD3) ]] ;
- half4 TEXCOORD4 [[ user(TEXCOORD4) ]] ;
- half4 TEXCOORD5 [[ user(TEXCOORD5) ]] ;
- };
- struct Mtl_FragmentOut
- {
- half4 SV_Target0 [[ color(0) ]];
- };
- constexpr sampler _mtl_xl_shadow_sampler(address::clamp_to_edge, filter::linear, compare_func::greater_equal);
- fragment Mtl_FragmentOut xlatMtlMain(
- constant Globals_Type& Globals [[ buffer(0) ]],
- sampler samplerunity_SpecCube0 [[ sampler (0) ]],
- sampler samplerunity_ProbeVolumeSH [[ sampler (1) ]],
- sampler sampler_MainTex [[ sampler (2) ]],
- sampler sampler_OcclusionMap [[ sampler (3) ]],
- sampler sampler_ShadowMapTexture [[ sampler (4) ]],
- texture2d<half, access::sample > _MainTex [[ texture (0) ]] ,
- texture2d<half, access::sample > _OcclusionMap [[ texture (1) ]] ,
- texturecube<half, access::sample > unity_SpecCube0 [[ texture (2) ]] ,
- texture3d<float, access::sample > unity_ProbeVolumeSH [[ texture (3) ]] ,
- depth2d<float, access::sample > _ShadowMapTexture [[ texture (4) ]] ,
- Mtl_FragmentIn input [[ stage_in ]])
- {
- Mtl_FragmentOut output;
- //--- Start Early Main ---
- float4 u_xlat16_0;
- float4 u_xlat1;
- float4 u_xlat16_1;
- bool u_xlatb1;
- float3 u_xlat16_2;
- float3 u_xlat16_3;
- float3 u_xlat16_4;
- float3 u_xlat16_5;
- float4 u_xlat6;
- float4 u_xlat16_6;
- float4 u_xlat7;
- float u_xlat16_8;
- float3 u_xlat16_9;
- float3 u_xlat16_10;
- float3 u_xlat12;
- float u_xlat16_12;
- bool u_xlatb12;
- float3 u_xlat16_15;
- float3 u_xlat16_16;
- float u_xlat18;
- float3 u_xlat16_19;
- float u_xlat23;
- float u_xlat16_23;
- bool u_xlatb23;
- float u_xlat16_26;
- float u_xlat34;
- float u_xlat16_35;
- float u_xlat16_36;
- float u_xlat16_37;
- //--- End Early Main ---
- //SAMPLE
- u_xlat16_0.xyz = float3(_MainTex.sample(sampler_MainTex, input.TEXCOORD0.xy).xyz);
- //MUL
- u_xlat16_1.xyz = float3(u_xlat16_0.xyz * float3(Globals._Color.xyz));
- //MAD
- u_xlat16_2.xyz = float3(float3(Globals._Color.xyz) * float3(u_xlat16_0.xyz) + float3(-0.220916301, -0.220916301, -0.220916301));
- //MAD
- u_xlat16_2.xyz = float3(float3(Globals._Metallic) * float3(u_xlat16_2.xyz) + float3(0.220916301, 0.220916301, 0.220916301));
- //MAD
- u_xlat16_35 = float((-float(Globals._Metallic)) * 0.779083729 + 0.779083729);
- //MUL
- u_xlat16_3.xyz = float3(u_xlat16_1.xyz * float3(u_xlat16_35));
- //DP3
- u_xlat16_36 = dot(input.TEXCOORD4.xyz, input.TEXCOORD4.xyz);
- //RSQ
- u_xlat16_36 = rsqrt(u_xlat16_36);
- //MUL
- u_xlat16_0.xyz = float3(float3(u_xlat16_36) * float3(input.TEXCOORD4.xyz));
- //DP3
- u_xlat16_36 = dot(input.TEXCOORD1.xyz, input.TEXCOORD1.xyz);
- //RSQ
- u_xlat16_36 = rsqrt(u_xlat16_36);
- //MUL
- u_xlat16_4.xyz = float3(float3(u_xlat16_36) * float3(input.TEXCOORD1.xyz));
- //MOV
- u_xlat16_16.x = input.TEXCOORD2.w;
- //MOV
- u_xlat16_16.y = input.TEXCOORD3.w;
- //MOV
- u_xlat16_16.z = input.TEXCOORD4.w;
- //ADD
- u_xlat1.xyz = (-float3(u_xlat16_16.xyz)) + Globals._WorldSpaceCameraPos.xyzx.xyz;
- //MOV
- u_xlat6.x = Globals.hlslcc_mtx4x4unity_MatrixV[0].z;
- //MOV
- u_xlat6.y = Globals.hlslcc_mtx4x4unity_MatrixV[1].z;
- //MOV
- u_xlat6.z = Globals.hlslcc_mtx4x4unity_MatrixV[2].z;
- //DP3
- u_xlat1.x = dot(u_xlat1.xyz, u_xlat6.xyz);
- //ADD
- u_xlat12.xyz = float3(u_xlat16_16.xyz) + (-Globals.unity_ShadowFadeCenterAndType.xyz);
- //DP3
- u_xlat12.x = dot(u_xlat12.xyz, u_xlat12.xyz);
- //SQRT
- u_xlat12.x = sqrt(u_xlat12.x);
- //ADD
- u_xlat12.x = (-u_xlat1.x) + u_xlat12.x;
- //MAD
- u_xlat1.x = Globals.unity_ShadowFadeCenterAndType.w * u_xlat12.x + u_xlat1.x;
- //MAD
- u_xlat1.x = u_xlat1.x * float(Globals._LightShadowData.z) + float(Globals._LightShadowData.w);
- u_xlat1.x = clamp(u_xlat1.x, 0.0f, 1.0f);
- //EQ
- u_xlatb12 = Globals.unity_ProbeVolumeParams.x==1.0;
- //IF
- if(u_xlatb12){
- //EQ
- u_xlatb23 = Globals.unity_ProbeVolumeParams.y==1.0;
- //MUL
- u_xlat6.xyz = float3(input.TEXCOORD3.www) * Globals.hlslcc_mtx4x4unity_ProbeVolumeWorldToObject[1].xyz;
- //MAD
- u_xlat6.xyz = Globals.hlslcc_mtx4x4unity_ProbeVolumeWorldToObject[0].xyz * float3(input.TEXCOORD2.www) + u_xlat6.xyz;
- //MAD
- u_xlat6.xyz = Globals.hlslcc_mtx4x4unity_ProbeVolumeWorldToObject[2].xyz * float3(input.TEXCOORD4.www) + u_xlat6.xyz;
- //ADD
- u_xlat6.xyz = u_xlat6.xyz + Globals.hlslcc_mtx4x4unity_ProbeVolumeWorldToObject[3].xyz;
- //MOVC
- u_xlat6.xyz = (bool(u_xlatb23)) ? u_xlat6.xyz : float3(u_xlat16_16.xyz);
- //ADD
- u_xlat6.xyz = u_xlat6.xyz + (-Globals.unity_ProbeVolumeMin.xyzx.xyz);
- //MUL
- u_xlat6.yzw = u_xlat6.xyz * Globals.unity_ProbeVolumeSizeInv.xyzx.xyz;
- //MAD
- u_xlat23 = u_xlat6.y * 0.25 + 0.75;
- //MAD
- u_xlat34 = Globals.unity_ProbeVolumeParams.z * 0.5 + 0.75;
- //MAX
- u_xlat6.x = max(u_xlat34, u_xlat23);
- //SAMPLE
- u_xlat6 = unity_ProbeVolumeSH.sample(samplerunity_ProbeVolumeSH, u_xlat6.xzw);
- //MOV
- u_xlat16_6 = float4(u_xlat6);
- //ELSE
- } else {
- //MOV
- u_xlat16_6.x = float(1.0);
- //MOV
- u_xlat16_6.y = float(1.0);
- //MOV
- u_xlat16_6.z = float(1.0);
- //MOV
- u_xlat16_6.w = float(1.0);
- //ENDIF
- }
- //DP4
- u_xlat16_37 = dot(u_xlat16_6, float4(Globals.unity_OcclusionMaskSelector));
- u_xlat16_37 = clamp(u_xlat16_37, 0.0f, 1.0f);
- //MUL
- u_xlat7.xyz = float3(input.TEXCOORD3.www) * Globals.hlslcc_mtx4x4unity_WorldToShadow[1].xyz;
- //MAD
- u_xlat7.xyz = Globals.hlslcc_mtx4x4unity_WorldToShadow[0].xyz * float3(input.TEXCOORD2.www) + u_xlat7.xyz;
- //MAD
- u_xlat7.xyz = Globals.hlslcc_mtx4x4unity_WorldToShadow[2].xyz * float3(input.TEXCOORD4.www) + u_xlat7.xyz;
- //ADD
- u_xlat7.xyz = u_xlat7.xyz + Globals.hlslcc_mtx4x4unity_WorldToShadow[3].xyz;
- //SAMPLE_C_LZ
- u_xlat16_23 = _ShadowMapTexture.sample_compare(_mtl_xl_shadow_sampler, u_xlat7.xy, saturate(u_xlat7.z), level(0.0));
- //ADD
- u_xlat16_5.x = float((-float(Globals._LightShadowData.x)) + 1.0);
- //MAD
- u_xlat16_5.x = float(u_xlat16_23 * u_xlat16_5.x + Globals._LightShadowData.x);
- //ADD
- u_xlat16_5.x = float(u_xlat1.x + float(u_xlat16_5.x));
- u_xlat16_5.x = clamp(u_xlat16_5.x, 0.0f, 1.0f);
- //MIN
- u_xlat16_37 = min(u_xlat16_37, u_xlat16_5.x);
- //MOVC
- u_xlat16_37 = (u_xlatb12) ? u_xlat16_37 : u_xlat16_5.x;
- //SAMPLE
- u_xlat16_1.x = _OcclusionMap.sample(sampler_OcclusionMap, input.TEXCOORD0.xy).y;
- //ADD
- u_xlat16_5.x = float((-float(Globals._OcclusionStrength)) + 1.0);
- //MAD
- u_xlat16_5.x = float(u_xlat16_1.x * Globals._OcclusionStrength + u_xlat16_5.x);
- //ADD
- u_xlat16_8 = float((-float(Globals._Glossiness)) + 1.0);
- //DP3
- u_xlat16_19.x = dot(u_xlat16_4.xyz, u_xlat16_0.xyz);
- //ADD
- u_xlat16_19.x = float(u_xlat16_19.x + u_xlat16_19.x);
- //MAD
- u_xlat16_19.xyz = float3(u_xlat16_0.xyz * (-u_xlat16_19.xxx) + u_xlat16_4.xyz);
- //MUL
- u_xlat16_9.xyz = float3(float3(u_xlat16_37) * float3(Globals._LightColor0.xyz));
- //IF
- if(u_xlatb12){
- //EQ
- u_xlatb1 = Globals.unity_ProbeVolumeParams.y==1.0;
- //MUL
- u_xlat12.xyz = float3(input.TEXCOORD3.www) * Globals.hlslcc_mtx4x4unity_ProbeVolumeWorldToObject[1].xyz;
- //MAD
- u_xlat12.xyz = Globals.hlslcc_mtx4x4unity_ProbeVolumeWorldToObject[0].xyz * float3(input.TEXCOORD2.www) + u_xlat12.xyz;
- //MAD
- u_xlat12.xyz = Globals.hlslcc_mtx4x4unity_ProbeVolumeWorldToObject[2].xyz * float3(input.TEXCOORD4.www) + u_xlat12.xyz;
- //ADD
- u_xlat12.xyz = u_xlat12.xyz + Globals.hlslcc_mtx4x4unity_ProbeVolumeWorldToObject[3].xyz;
- //MOVC
- u_xlat1.xyz = (bool(u_xlatb1)) ? u_xlat12.xyz : float3(u_xlat16_16.xyz);
- //ADD
- u_xlat1.xyz = u_xlat1.xyz + (-Globals.unity_ProbeVolumeMin.xyzx.xyz);
- //MUL
- u_xlat1.yzw = u_xlat1.xyz * Globals.unity_ProbeVolumeSizeInv.xyzx.xyz;
- //MUL
- u_xlat12.x = u_xlat1.y * 0.25;
- //MUL
- u_xlat7.x = Globals.unity_ProbeVolumeParams.z * 0.5;
- //MAD
- u_xlat18 = (-Globals.unity_ProbeVolumeParams.z) * 0.5 + 0.25;
- //MAX
- u_xlat12.x = max(u_xlat12.x, u_xlat7.x);
- //MIN
- u_xlat1.x = min(u_xlat18, u_xlat12.x);
- //SAMPLE
- u_xlat6 = unity_ProbeVolumeSH.sample(samplerunity_ProbeVolumeSH, u_xlat1.xzw);
- //ADD
- u_xlat7.xyz = u_xlat1.xzw + float3(0.25, 0.0, 0.0);
- //SAMPLE
- u_xlat7 = unity_ProbeVolumeSH.sample(samplerunity_ProbeVolumeSH, u_xlat7.xyz);
- //ADD
- u_xlat1.xyz = u_xlat1.xzw + float3(0.5, 0.0, 0.0);
- //SAMPLE
- u_xlat1 = unity_ProbeVolumeSH.sample(samplerunity_ProbeVolumeSH, u_xlat1.xyz);
- //MOV
- u_xlat16_0.w = 1.0;
- //DP4
- u_xlat16_10.x = half(dot(u_xlat6, float4(u_xlat16_0)));
- //DP4
- u_xlat16_10.y = half(dot(u_xlat7, float4(u_xlat16_0)));
- //DP4
- u_xlat16_10.z = half(dot(u_xlat1, float4(u_xlat16_0)));
- //ELSE
- } else {
- //MOV
- u_xlat16_0.w = 1.0;
- //DP4
- u_xlat16_10.x = dot(float4(Globals.unity_SHAr), u_xlat16_0);
- //DP4
- u_xlat16_10.y = dot(float4(Globals.unity_SHAg), u_xlat16_0);
- //DP4
- u_xlat16_10.z = dot(float4(Globals.unity_SHAb), u_xlat16_0);
- //ENDIF
- }
- //ADD
- u_xlat16_16.xyz = float3(u_xlat16_10.xyz + float3(input.TEXCOORD5.xyz));
- //MAX
- u_xlat16_16.xyz = float3(max(float3(u_xlat16_16.xyz), float3(0.0, 0.0, 0.0)));
- //LOG
- u_xlat16_1.xyz = log2(u_xlat16_16.xyz);
- //MUL
- u_xlat16_1.xyz = float3(float3(u_xlat16_1.xyz) * float3(0.416666657, 0.416666657, 0.416666657));
- //EXP
- u_xlat16_1.xyz = exp2(u_xlat16_1.xyz);
- //MAD
- u_xlat16_1.xyz = float3(float3(u_xlat16_1.xyz) * float3(1.05499995, 1.05499995, 1.05499995) + float3(-0.0549999997, -0.0549999997, -0.0549999997));
- //MAX
- u_xlat16_1.xyz = float3(max(float3(u_xlat16_1.xyz), float3(0.0, 0.0, 0.0)));
- //MUL
- u_xlat16_16.xyz = float3(u_xlat16_5.xxx * u_xlat16_1.xyz);
- //MAD
- u_xlat16_37 = float((-float(u_xlat16_8)) * 0.699999988 + 1.70000005);
- //MUL
- u_xlat16_37 = float(u_xlat16_37 * u_xlat16_8);
- //MUL
- u_xlat16_37 = float(float(u_xlat16_37) * 6.0);
- //SAMPLE_L
- u_xlat16_1 = float4(unity_SpecCube0.sample(samplerunity_SpecCube0, float3(u_xlat16_19.xyz), level(float(u_xlat16_37))));
- //ADD
- u_xlat16_37 = float(float(u_xlat16_1.w) + -1.0);
- //MAD
- u_xlat16_37 = float(float(Globals.unity_SpecCube0_HDR.w) * float(u_xlat16_37) + 1.0);
- //MUL
- u_xlat16_37 = float(u_xlat16_37 * Globals.unity_SpecCube0_HDR.x);
- //MUL
- u_xlat16_19.xyz = float3(u_xlat16_1.xyz * float3(u_xlat16_37));
- //MUL
- u_xlat16_19.xyz = float3(u_xlat16_5.xxx * u_xlat16_19.xyz);
- //MAD
- u_xlat16_10.xyz = float3(float3(-input.TEXCOORD1.xyz) * float3(u_xlat16_36) + float3(Globals._WorldSpaceLightPos0.xyz));
- //DP3
- u_xlat16_36 = dot(u_xlat16_10.xyz, u_xlat16_10.xyz);
- //MAX
- u_xlat16_1.x = float(max(float(u_xlat16_36), 0.00100000005));
- //RSQ
- u_xlat16_36 = rsqrt(u_xlat16_1.x);
- //MUL
- u_xlat16_10.xyz = float3(float3(u_xlat16_36) * u_xlat16_10.xyz);
- //DP3
- u_xlat16_36 = dot(u_xlat16_0.xyz, float3(Globals._WorldSpaceLightPos0.xyz));
- u_xlat16_36 = clamp(u_xlat16_36, 0.0f, 1.0f);
- //DP3
- u_xlat16_37 = dot(u_xlat16_0.xyz, u_xlat16_10.xyz);
- u_xlat16_37 = clamp(u_xlat16_37, 0.0f, 1.0f);
- //DP3
- u_xlat16_4.x = dot(u_xlat16_0.xyz, (-u_xlat16_4.xyz));
- u_xlat16_4.x = clamp(u_xlat16_4.x, 0.0f, 1.0f);
- //DP3
- u_xlat16_15.x = dot(float3(Globals._WorldSpaceLightPos0.xyz), u_xlat16_10.xyz);
- u_xlat16_15.x = clamp(u_xlat16_15.x, 0.0f, 1.0f);
- //MUL
- u_xlat16_26 = float(u_xlat16_8 * u_xlat16_8);
- //MUL
- u_xlat16_37 = float(u_xlat16_37 * u_xlat16_37);
- //MAD
- u_xlat16_1.x = float(float(u_xlat16_26) * float(u_xlat16_26) + -1.0);
- //MAD
- u_xlat16_1.x = float(float(u_xlat16_37) * float(u_xlat16_1.x) + 1.00001001);
- //MAX
- u_xlat16_12 = float(max(float(u_xlat16_15.x), 0.319999993));
- //MAD
- u_xlat16_23 = float(float(u_xlat16_8) * float(u_xlat16_8) + 1.5);
- //MUL
- u_xlat16_12 = float(u_xlat16_23 * u_xlat16_12);
- //MUL
- u_xlat16_1.x = float(u_xlat16_1.x * u_xlat16_12);
- //DIV
- u_xlat16_1.x = float(u_xlat16_26 / u_xlat16_1.x);
- //ADD
- u_xlat16_1.x = float(float(u_xlat16_1.x) + -9.99999975e-05);
- //MAX
- u_xlat16_15.x = float(max(float(u_xlat16_1.x), 0.0));
- //MIN
- u_xlat16_15.x = float(min(float(u_xlat16_15.x), 100.0));
- //MUL
- u_xlat16_26 = float(u_xlat16_8 * u_xlat16_26);
- //MAD
- u_xlat16_26 = float((-float(u_xlat16_26)) * 0.280000001 + 1.0);
- //ADD
- u_xlat16_35 = float((-u_xlat16_35) + Globals._Glossiness);
- //ADD
- u_xlat16_35 = float(float(u_xlat16_35) + 1.0);
- u_xlat16_35 = clamp(u_xlat16_35, 0.0f, 1.0f);
- //MAD
- u_xlat16_10.xyz = float3(u_xlat16_15.xxx * u_xlat16_2.xyz + u_xlat16_3.xyz);
- //MUL
- u_xlat16_9.xyz = float3(u_xlat16_9.xyz * u_xlat16_10.xyz);
- //MUL
- u_xlat16_3.xyz = float3(u_xlat16_3.xyz * u_xlat16_16.xyz);
- //MAD
- u_xlat16_3.xyz = float3(u_xlat16_9.xyz * float3(u_xlat16_36) + u_xlat16_3.xyz);
- //MUL
- u_xlat16_15.xyz = float3(u_xlat16_19.xyz * float3(u_xlat16_26));
- //ADD
- u_xlat16_36 = float((-float(u_xlat16_4.x)) + 1.0);
- //MUL
- u_xlat16_36 = float(u_xlat16_36 * u_xlat16_36);
- //MUL
- u_xlat16_36 = float(u_xlat16_36 * u_xlat16_36);
- //ADD
- u_xlat16_5.xyz = float3((-u_xlat16_2.xyz) + float3(u_xlat16_35));
- //MAD
- u_xlat16_2.xyz = float3(float3(u_xlat16_36) * u_xlat16_5.xyz + u_xlat16_2.xyz);
- //MAD
- output.SV_Target0.xyz = half3(u_xlat16_15.xyz * u_xlat16_2.xyz + u_xlat16_3.xyz);
- //MOV
- output.SV_Target0.w = 1.0;
- //RET
- return output;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement