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
|
#ifndef POI_RIM
#define POI_RIM
float4 _RimLightColor;
float _RimLightingInvert;
float _RimWidth;
float _RimStrength;
float _RimSharpness;
float _RimLightColorBias;
float _ShadowMix;
float _ShadowMixThreshold;
float _ShadowMixWidthMod;
float _EnableRimLighting;
float _RimBrighten;
float _RimLightNormal;
float _RimHueShiftEnabled;
float _RimHueShiftSpeed;
float _RimHueShift;
#if defined(PROP_RIMTEX) || !defined(OPTIMIZER_ENABLED)
POI_TEXTURE_NOSAMPLER(_RimTex);
#endif
#if defined(PROP_RIMMASK) || !defined(OPTIMIZER_ENABLED)
POI_TEXTURE_NOSAMPLER(_RimMask);
#endif
#if defined(PROP_RIMWIDTHNOISETEXTURE) || !defined(OPTIMIZER_ENABLED)
POI_TEXTURE_NOSAMPLER(_RimWidthNoiseTexture);
#endif
float _RimWidthNoiseStrength;
float4 rimColor = float4(0, 0, 0, 0);
float rim = 0;
void applyRimLighting(inout float4 albedo, inout float3 rimLightEmission)
{
#if defined(PROP_RIMWIDTHNOISETEXTURE) || !defined(OPTIMIZER_ENABLED)
float rimNoise = POI2D_SAMPLER_PAN(_RimWidthNoiseTexture, _MainTex, poiMesh.uv[float(0)], float4(0,0,0,0));
#else
float rimNoise = 0;
#endif
rimNoise = (rimNoise - .5) * float(0.873);
float viewDotNormal = abs(dot(poiCam.viewDir, poiMesh.normals[float(1)]));
if (float(0))
{
viewDotNormal = 1 - abs(dot(poiCam.viewDir, poiMesh.normals[float(1)]));
}
float rimWidth = float(0.716);
rimWidth -= rimNoise;
#if defined(PROP_RIMMASK) || !defined(OPTIMIZER_ENABLED)
float rimMask = POI2D_SAMPLER_PAN(_RimMask, _MainTex, poiMesh.uv[float(0)], float4(0,0,0,0));
#else
float rimMask = 1;
#endif
#if defined(PROP_RIMTEX) || !defined(OPTIMIZER_ENABLED)
rimColor = POI2D_SAMPLER_PAN(_RimTex, _MainTex, poiMesh.uv[float(0)], float4(0,0,0,0)) * float4(0.06083426,0.06083426,0.06083426,1);
#else
rimColor = float4(0.06083426,0.06083426,0.06083426,1);
#endif
if(float(0))
{
rimColor.rgb = hueShift(rimColor.rgb, float(0) + _Time.x * float(0));
}
rimWidth = max(lerp(rimWidth, rimWidth * lerp(0, 1, poiLight.lightMap - float(0.42)) * float(0.5), float(0)), 0);
rim = 1 - smoothstep(min(float(0.219), rimWidth), rimWidth, viewDotNormal);
rim *= float4(0.06083426,0.06083426,0.06083426,1).a * rimColor.a * rimMask;
rimLightEmission = rim * lerp(albedo, rimColor, float(1)) * float(0);
albedo.rgb = lerp(albedo.rgb, lerp(albedo.rgb, rimColor, float(1)) + lerp(albedo.rgb, rimColor, float(1)) * float(3), rim);
}
#endif
|