summaryrefslogtreecommitdiff
path: root/VRCSDK3Worlds/Assets/_PoiyomiShaders/Shaders/Pro/Includes/CGI_PoiBackFace.cginc
blob: af919efce43c00ada3a4f1db88d831830d671224 (plain)
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
#ifndef POI_BACKFACE
    #define POI_BACKFACE
    
    float _BackFaceEnabled;
    float _BackFaceTextureUV;
    float _BackFaceDetailIntensity;
    float _BackFaceEmissionStrength;
    float2 _BackFacePanning;
    float _BackFaceHueShift;
    float4 _BackFaceColor;

    #if defined(PROP_BACKFACETEXTURE) || !defined(OPTIMIZER_ENABLED)
        UNITY_DECLARE_TEX2D_NOSAMPLER(_BackFaceTexture); float4 _BackFaceTexture_ST;
    #endif
    
    float3 BackFaceColor;
    void applyBackFaceTexture(inout float backFaceDetailIntensity, inout float mixedHueShift, inout float4 albedo, inout float3 backFaceEmission)
    {
        backFaceEmission = 0;
        BackFaceColor = 0;
        UNITY_BRANCH
        if (_BackFaceEnabled)
        {
            if(!poiMesh.isFrontFace)
            {
                #if defined(PROP_BACKFACETEXTURE) || !defined(OPTIMIZER_ENABLED)
                    albedo = POI2D_SAMPLER_PAN(_BackFaceTexture, _MainTex, poiMesh.uv[_BackFaceTextureUV], _BackFacePanning) * _BackFaceColor;
                #endif
                backFaceDetailIntensity = _BackFaceDetailIntensity;
                BackFaceColor = albedo.rgb;
                mixedHueShift = _BackFaceHueShift;
                backFaceEmission = BackFaceColor * _BackFaceEmissionStrength;
            }
        }
    }
    
#endif