// Bake
        //------------------------------------------------
        public void BakeMesh(Vector3[] vertPositions,
                             Vector2[] vertUVs,
                             int[] vertUniqueIDs,
                             int[] vertTris,
                             Vector2 pivotPos,
                             apOptTransform parentTransform,
                             Texture2D texture,
                             apPortrait.SHADER_TYPE shaderType,
                             Shader shaderNormal, Shader shaderClipping
                             )
        {
            _parentTransform = parentTransform;

            _vertPositions = vertPositions;
            _vertUVs       = vertUVs;
            _vertUniqueIDs = vertUniqueIDs;
            _vertTris      = vertTris;
            _texture       = texture;

            _pivotPos = pivotPos;
            _nVert    = _vertPositions.Length;


            transform.localPosition += new Vector3(-_pivotPos.x, -_pivotPos.y, 0.0f);

            _matrix_Vert2Mesh         = apMatrix3x3.TRS(new Vector2(-_pivotPos.x, -_pivotPos.y), 0, Vector2.one);
            _matrix_Vert2Mesh_Inverse = _matrix_Vert2Mesh.inverse;

            _shaderType     = shaderType;
            _shaderNormal   = shaderNormal;
            _shaderClipping = shaderClipping;

            if (_shaderNormal == null)
            {
                Debug.LogError("Shader Normal is Null");
            }
            if (_shaderClipping == null)
            {
                Debug.LogError("Shader Clipping is Null");
            }

            //RenderVert를 만들어주자
            _renderVerts = new apOptRenderVertex[_nVert];
            for (int i = 0; i < _nVert; i++)
            {
                _renderVerts[i] = new apOptRenderVertex(
                    _parentTransform, this,
                    _vertUniqueIDs[i], i,
                    new Vector2(vertPositions[i].x, vertPositions[i].y),
                    _vertUVs[i]);

                _renderVerts[i].SetMatrix_1_Static_Vert2Mesh(_matrix_Vert2Mesh);
                _renderVerts[i].SetMatrix_3_Transform_Mesh(parentTransform._matrix_TFResult_WorldWithoutMod.MtrxToSpace);
                _renderVerts[i].Calculate();
            }

            if (_meshFilter == null || _mesh == null)
            {
                _meshFilter = GetComponent <MeshFilter>();
                _mesh       = new Mesh();
                _mesh.name  = this.name + "_Mesh";

                _meshFilter.sharedMesh = _mesh;
            }

            if (_meshRenderer == null)
            {
                _meshRenderer = GetComponent <MeshRenderer>();

                //_material = new Material(Shader.Find("AnyPortrait/Transparent/Colored Texture (2X)"));
                //Debug.Log("Opt Shader : " + _shaderNormal.name + "(" + name + ")");
                //_material = new Material(Shader.Find(_shaderName));
                _material = new Material(_shaderNormal);
                _material.SetColor("_Color", new Color(0.5f, 0.5f, 0.5f, 1.0f));
                _material.SetTexture("_MainTex", _texture);

                _meshRenderer.sharedMaterial = _material;
            }

            _isMaskParent = false;
            _isMaskChild  = false;
            _clipParentID = -1;
            _clipChildIDs = null;

            _vertPositions_Updated = new Vector3[_vertPositions.Length];
            _vertPositions_Local   = new Vector3[_vertPositions.Length];
            for (int i = 0; i < _vertPositions.Length; i++)
            {
                //Calculate 전에는 직접 Pivot Pos를 적용해주자 (Calculate에서는 자동 적용)
                //_vertPositions_Updated[i] = _vertPositions[i] + new Vector3(_pivotPos.x, _pivotPos.y, 0);
                //_vertPositions_Updated[i] = _vertPositions[i];
                //_vertPositions_Updated[i] = _vertPositions[i] - new Vector3(_pivotPos.x, _pivotPos.y, 0);
                _vertPositions_Updated[i] = _renderVerts[i]._vertPos3_LocalUpdated;
            }
            //_texture_Updated = _texture;


            _transform = transform;

            InitMesh(true);

            RefreshMesh();
        }
        // Get / Set
        //-----------------------------------------------
        public Shader GetShader(apPortrait.SHADER_TYPE shaderType, bool isClippedChild, bool isLinearSpace)
        {
            if (!isLinearSpace)
            {
                //Gamma Space
                switch (shaderType)
                {
                case apPortrait.SHADER_TYPE.AlphaBlend:
                    if (!isClippedChild)
                    {
                        return(_shader_Normal_AlphaBlend);
                    }
                    else
                    {
                        return(_shader_Clipped_AlphaBlend);
                    }

                case apPortrait.SHADER_TYPE.Additive:
                    if (!isClippedChild)
                    {
                        return(_shader_Normal_Additive);
                    }
                    else
                    {
                        return(_shader_Clipped_Additive);
                    }

                case apPortrait.SHADER_TYPE.SoftAdditive:
                    if (!isClippedChild)
                    {
                        return(_shader_Normal_SoftAdditive);
                    }
                    else
                    {
                        return(_shader_Clipped_SoftAdditive);
                    }

                case apPortrait.SHADER_TYPE.Multiplicative:
                    if (!isClippedChild)
                    {
                        return(_shader_Normal_Multiplicative);
                    }
                    else
                    {
                        return(_shader_Clipped_Multiplicative);
                    }
                }
            }
            else
            {
                //Linear Space
                switch (shaderType)
                {
                case apPortrait.SHADER_TYPE.AlphaBlend:
                    if (!isClippedChild)
                    {
                        return(_shader_L_Normal_AlphaBlend);
                    }
                    else
                    {
                        return(_shader_L_Clipped_AlphaBlend);
                    }

                case apPortrait.SHADER_TYPE.Additive:
                    if (!isClippedChild)
                    {
                        return(_shader_L_Normal_Additive);
                    }
                    else
                    {
                        return(_shader_L_Clipped_Additive);
                    }

                case apPortrait.SHADER_TYPE.SoftAdditive:
                    if (!isClippedChild)
                    {
                        return(_shader_L_Normal_SoftAdditive);
                    }
                    else
                    {
                        return(_shader_L_Clipped_SoftAdditive);
                    }

                case apPortrait.SHADER_TYPE.Multiplicative:
                    if (!isClippedChild)
                    {
                        return(_shader_L_Normal_Multiplicative);
                    }
                    else
                    {
                        return(_shader_L_Clipped_Multiplicative);
                    }
                }
            }

            return(null);
        }