private void MakeRenderOpaque(Renderer renderer)
    {
        if (renderer == null)
        {
            return;
        }

        CTransparentObject info = null;

        foreach (var v in _AlphaRenderInfos)
        {
            if (v.RendererObject == renderer)
            {
                info = v;
                break;
            }
        }
        if (info == null)
        {
            return;
        }

        info.RendererObject.sharedMaterials = info.OriginMaterials;  // revert materials
        info.RendererObject  = null;
        info.OriginMaterials = null;
        foreach (var v in info.CurrentMaterials)
        {
            if (v != null)
            {
                MaterialPool.Instance.Recycle(v);
            }
        }
        info.CurrentMaterials.Clear();
    }
    private void MakeRenderTransparent(Renderer renderer)
    {
        if (renderer == null)
        {
            return;
        }

        CTransparentObject info = null;

        foreach (var v in _AlphaRenderInfos)
        {
            if (!v.IsInUsed())
            {
                info = v;
                break;
            }
        }

        if (info == null)
        {
            info = new CTransparentObject();
            _AlphaRenderInfos.Add(info);
        }

        info.RendererObject  = renderer;
        info.OriginMaterials = info.RendererObject.sharedMaterials;

        for (int i = 0; i < info.OriginMaterials.Length; ++i)
        {
            if (info.OriginMaterials[i] != null)
            {
                var mat = MaterialPool.Instance.Get(info.OriginMaterials[i]);
                info.CurrentMaterials.Add(mat);

                string shaderName = info.OriginMaterials[i].shader.name;
                if (_CamtransOpaqueShaderNames.Contains(shaderName))
                {
                    var shader = ShaderManager.Instance.MobileCamtransOpaqueShader;
                    if (shader != null)
                    {
                        info.CurrentMaterials[i].shader = shader;
                    }
                }
                else if (_MobileCamtransShaderNames.Contains(shaderName))
                {
                    var shader = ShaderManager.Instance.MobileCamtransShader;
                    if (shader != null)
                    {
                        info.CurrentMaterials[i].shader = shader;
                    }
                }
                else if (!_UnsupportedSet.Contains(shaderName))
                {
                    _UnsupportedSet.Add(shaderName);
                    Common.HobaDebuger.LogWarningFormat("CRenderInfo.InitFromRenderer Unsupported Shader - {0}", shaderName);
                }
            }
            else
            {
                info.CurrentMaterials.Add(null);
            }
        }

        // use cam trans materials
        int nLen = info.OriginMaterials.Length;

        Material[] newMats = null;
        foreach (var v in _ReusableMatArrays)
        {
            if (v != null && v.Length == nLen)
            {
                newMats = v;
                break;
            }
        }

        if (newMats == null)
        {
            newMats = new Material[nLen];
            _ReusableMatArrays.Add(newMats);
        }

        for (int i = 0; i < nLen; ++i)
        {
            newMats[i] = info.CurrentMaterials[i];            //设置半透material
        }
        info.RendererObject.sharedMaterials = newMats;
        for (int i = 0; i < nLen; ++i)
        {
            newMats[i] = null;
        }
    }