1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
#ifndef POI_METAL
#define POI_METAL
samplerCUBE _CubeMap;
float _SampleWorld;
POI_TEXTURE_NOSAMPLER(_MetallicMask);
POI_TEXTURE_NOSAMPLER(_SmoothnessMask);
float _Metallic;
float _InvertSmoothness;
float _Smoothness;
float _EnableMetallic;
float3 _MetalReflectionTint;
POI_TEXTURE_NOSAMPLER(_MetallicTintMap);
float3 finalreflections;
float metalicMap;
float3 reflection;
float roughness;
float lighty_boy_uwu_var;
bool shouldMetalHappenBeforeLighting()
{
float4 envSample = UNITY_SAMPLE_TEXCUBE_LOD(unity_SpecCube0, poiCam.reflectionDir, roughness * UNITY_SPECCUBE_LOD_STEPS);
bool probeExists = !(unity_SpecCube0_HDR.a == 0 && envSample.a == 0);
return probeExists && !float(1);
}
float3 fresnelRelflection(in float4 albedo)
{
half3 dotNV = 1 - abs(poiLight.nDotV);
half f = dotNV * dotNV * dotNV * dotNV;
return lerp(lerp(DielectricSpec.rgb, albedo.rgb, metalicMap), saturate(1 - roughness + metalicMap), f);
}
void calculateMetallicness()
{
metalicMap = POI2D_SAMPLER_PAN(_MetallicMask, _MainTex, poiMesh.uv[float(0)], float4(0,0,0,0)) * float(1);
}
void ApplyMetallics(inout float4 finalColor, in float4 albedo)
{
#ifdef FORWARD_BASE_PASS
float smoothnessMap = (POI2D_SAMPLER_PAN(_SmoothnessMask, _MainTex, poiMesh.uv[float(0)], float4(0,0,0,0)));
#ifdef POI_BLACKLIGHT
if (_BlackLightMaskMetallic != 4)
{
metalicMap *= blackLightMask[_BlackLightMaskMetallic];
smoothnessMap *= blackLightMask[_BlackLightMaskMetallic];
}
#endif
if(float(1) == 1)
{
smoothnessMap = 1 - smoothnessMap;
}
smoothnessMap *= float(1);
roughness = 1 - smoothnessMap;
Unity_GlossyEnvironmentData envData;
envData.roughness = roughness;
envData.reflUVW = BoxProjection(
poiCam.reflectionDir, poiMesh.worldPos.xyz,
unity_SpecCube0_ProbePosition,
unity_SpecCube0_BoxMin, unity_SpecCube0_BoxMax
);
float3 probe0 = Unity_GlossyEnvironment(
UNITY_PASS_TEXCUBE(unity_SpecCube0), unity_SpecCube0_HDR, envData
);
envData.reflUVW = BoxProjection(
poiCam.reflectionDir, poiMesh.worldPos.xyz,
unity_SpecCube1_ProbePosition,
unity_SpecCube1_BoxMin, unity_SpecCube1_BoxMax
);
float interpolator = unity_SpecCube0_BoxMin.w;
if(interpolator < 0.99999)
{
float3 probe1 = Unity_GlossyEnvironment(
UNITY_PASS_TEXCUBE_SAMPLER(unity_SpecCube1, unity_SpecCube0),
unity_SpecCube0_HDR, envData
);
reflection = lerp(probe1, probe0, interpolator);
}
else
{
reflection = probe0;
}
float reflecty_lighty_boy_uwu_var_2 = 1.0 / (roughness * roughness + 1.0);
half4 tintMap = POI2D_SAMPLER_PAN(_MetallicTintMap, _MainTex, poiMesh.uv[float(0)], float4(0,0,0,0));
finalColor.rgb *= (1 - metalicMap * tintMap.a);
finalColor.rgb += reflecty_lighty_boy_uwu_var_2 * reflection.rgb * fresnelRelflection(albedo) * float4(1,1,1,1) * tintMap.rgb * tintMap.a;
#endif
}
void ApplyMetallicsFake(inout float4 finalColor, in float4 albedo)
{
#ifdef FORWARD_BASE_PASS
metalicMap = POI2D_SAMPLER_PAN(_MetallicMask, _MainTex, poiMesh.uv[float(0)], float4(0,0,0,0)) * float(1);
float smoothnessMap = (POI2D_SAMPLER_PAN(_SmoothnessMask, _MainTex, poiMesh.uv[float(0)], float4(0,0,0,0)));
#ifdef POI_BLACKLIGHT
if(_BlackLightMaskMetallic != 4)
{
metalicMap *= blackLightMask[_BlackLightMaskMetallic];
smoothnessMap *= blackLightMask[_BlackLightMaskMetallic];
}
#endif
if(float(1) == 1)
{
smoothnessMap = 1 - smoothnessMap;
}
smoothnessMap *= float(1);
roughness = 1 - smoothnessMap;
reflection = texCUBElod(_CubeMap, float4(poiCam.reflectionDir, roughness * UNITY_SPECCUBE_LOD_STEPS));
float reflecty_lighty_boy_uwu_var_2 = 1.0 / (roughness * roughness + 1.0);
half4 tintMap = POI2D_SAMPLER_PAN(_MetallicTintMap, _MainTex, poiMesh.uv[float(0)], float4(0,0,0,0));
finalColor.rgb *= (1 - metalicMap * tintMap.a);
finalColor.rgb += reflecty_lighty_boy_uwu_var_2 * reflection.rgb * fresnelRelflection(albedo) * float4(1,1,1,1) * tintMap.rgb * tintMap.a;
#endif
}
#endif
|