protected long GetOverrideHash()
    {
        long h = 3;

        unchecked
        {
            h *= (propData == null ? 3 : propData.GetHashCode()) * 3;
            h *= (perPixelNormal == null ? 7 : perPixelNormal.GetNativeTexturePtr().ToInt64()) * 7;
            h *= (keywordSO == null ? 11 : keywordSO.GetHashCode()) * 11;

#if __MICROSPLAT_ALPHAHOLE__
            h *= (clipMap == null ? 5 : clipMap.GetNativeTexturePtr().ToInt64()) * 5;
#endif

#if __MICROSPLAT_PROCTEX__
            h *= (procBiomeMask == null ? 13 : procBiomeMask.GetNativeTexturePtr().ToInt64()) * 13;
            h *= (cavityMap == null ? 17 : cavityMap.GetNativeTexturePtr().ToInt64()) * 17;
            h *= (procTexCfg == null ? 19 : procTexCfg.GetHashCode()) * 19;
#endif
#if __MICROSPLAT_ADVANCED_DETAIL__
            h *= (advDetailControl == null ? 23 : advDetailControl.GetNativeTexturePtr().ToInt64()) * 23;
#endif
#if (VEGETATION_STUDIO || VEGETATION_STUDIO_PRO)
            h *= (vsShadowMap == null ? 31 : vsShadowMap.GetNativeTexturePtr().ToInt64()) * 31;
            h *= (vsGrassMap == null ? 37 : vsGrassMap.GetNativeTexturePtr().ToInt64()) * 37;
#endif
            h *= (streamTexture == null ? 41 : streamTexture.GetNativeTexturePtr().ToInt64()) * 41;
            h *= (terrainDesc == null ? 43 : terrainDesc.GetNativeTexturePtr().ToInt64()) * 43;
#if __MICROSPLAT_GLOBALTEXTURE__
            h *= (geoTextureOverride == null ? 47 : geoTextureOverride.GetNativeTexturePtr().ToInt64()) * 47;
            h *= (globalNormalOverride == null ? 53 : globalNormalOverride.GetNativeTexturePtr().ToInt64()) * 53;
            h *= (globalSAOMOverride == null ? 59 : globalSAOMOverride.GetNativeTexturePtr().ToInt64()) * 59;
            h *= (globalEmisOverride == null ? 61 : globalEmisOverride.GetNativeTexturePtr().ToInt64()) * 61;
            h *= (tintMapOverride == null ? 71 : tintMapOverride.GetNativeTexturePtr().ToInt64()) * 71;
#endif

#if __MICROSPLAT_SCATTER__
            h *= (scatterMapOverride == null ? 79 : scatterMapOverride.GetNativeTexturePtr().ToInt64()) * 79;
#endif

#if __MICROSPLAT_SNOW__
            h *= (snowMaskOverride == null ? 73 : snowMaskOverride.GetNativeTexturePtr().ToInt64()) * 73;
#endif


            if (h == 0)
            {
                Debug.Log("Override hash returned 0, this should not happen");
            }
        }
        return(h);
    }