protected MaterialDesc[] ProcessSharedMaterials(Material[] mats)
        {
            MaterialDesc[] matsDesc = new MaterialDesc [mats.Length];
            for (int i = 0; i < mats.Length; i++)
            {
                matsDesc[i].material = mats[i];
                bool legacyCoverage = (mats[i].GetTag("RenderType", false) == "TransparentCutout");
                #if UNITY_4
                bool isCoverage = legacyCoverage;
                matsDesc[i].coverage = mats[i].HasProperty("_MainTex") && isCoverage;
                #else
                bool isCoverage = legacyCoverage || mats[i].IsKeywordEnabled("_ALPHATEST_ON");
                matsDesc[i].propertyBlock = new MaterialPropertyBlock();
                matsDesc[i].coverage      = mats[i].HasProperty("_MainTex") && isCoverage;
                #endif
                matsDesc[i].cutoff = mats[i].HasProperty("_Cutoff");

                if (isCoverage && !matsDesc[i].coverage && !m_materialWarnings.Contains(matsDesc[i].material))
                {
                    Debug.LogWarning("[AmplifyMotion] TransparentCutout material \"" + matsDesc[i].material.name + "\" {" + matsDesc[i].material.shader.name + "} not using _MainTex standard property.");
                    m_materialWarnings.Add(matsDesc[i].material);
                }
            }
            return(matsDesc);
        }
Exemple #2
0
        internal override void RenderVectors(Camera camera, CommandBuffer renderCB, float scale, AmplifyMotion.Quality quality)
        {
            if (m_initialized && !m_error && m_renderer.isVisible)
            {
                Profiler.BeginSample("Cloth.Render");

                const float rcp255   = 1 / 255.0f;
                bool        mask     = (m_owner.Instance.CullingMask & (1 << m_obj.gameObject.layer)) != 0;
                int         objectId = mask ? m_owner.Instance.GenerateObjectId(m_obj.gameObject) : 255;

                Vector3[] clothVertices = m_cloth.vertices;
                for (int i = 0; i < m_targetVertexCount; i++)
                {
                    m_currVertices[i] = clothVertices[m_targetRemap[i]];
                }

                if (m_starting || !m_wasVisible)
                {
                    Array.Copy(m_currVertices, m_prevVertices, m_targetVertexCount);
                }

                m_clonedMesh.vertices = m_currVertices;
                m_clonedMesh.normals  = m_prevVertices;

                float cameraMotionScale = mask ? m_owner.Instance.CameraMotionMult * scale : 0;
                float objectMotionScale = mask ? m_owner.Instance.ObjectMotionMult * scale : 0;

                renderCB.SetGlobalMatrix("_AM_MATRIX_PREV_M", ( Matrix4x4 )m_prevLocalToWorld);
                renderCB.SetGlobalMatrix("_AM_MATRIX_CURR_M", ( Matrix4x4 )m_currLocalToWorld);
                renderCB.SetGlobalVector("_AM_MOTION_PARAMS", new Vector4(cameraMotionScale, objectMotionScale, objectId * rcp255, 0));

                int qualityPass = (quality == AmplifyMotion.Quality.Mobile) ? 0 : 2;

                for (int i = 0; i < m_sharedMaterials.Length; i++)
                {
                    MaterialDesc matDesc = m_sharedMaterials[i];
                    int          pass    = qualityPass + (matDesc.coverage ? 1 : 0);

                    if (matDesc.coverage)
                    {
                        Texture mainTex = matDesc.material.mainTexture;
                        if (mainTex != null)
                        {
                            matDesc.propertyBlock.SetTexture("_MainTex", mainTex);
                        }
                        if (matDesc.cutoff)
                        {
                            matDesc.propertyBlock.SetFloat("_Cutoff", matDesc.material.GetFloat("_Cutoff"));
                        }
                    }

                    renderCB.DrawMesh(m_clonedMesh, m_currLocalToWorld, m_owner.Instance.ClothVectorsMaterial, i, pass, matDesc.propertyBlock);
                }

                Profiler.EndSample();
            }
        }
Exemple #3
0
        internal override void RenderVectors(Camera camera, CommandBuffer renderCB, float scale, AmplifyMotion.Quality quality)
        {
            if (m_initialized && !m_error && m_meshRenderer.isVisible)
            {
                Profiler.BeginSample("Solid.Render");

                bool mask = (m_owner.Instance.CullingMask & (1 << m_obj.gameObject.layer)) != 0;
                if (!mask || (mask && m_moved))
                {
                    const float rcp255   = 1 / 255.0f;
                    int         objectId = mask ? m_owner.Instance.GenerateObjectId(m_obj.gameObject) : 255;

                    Matrix4x4 prevModelViewProj;
                    if (m_obj.FixedStep)
                    {
                        prevModelViewProj = m_owner.PrevViewProjMatrixRT * ( Matrix4x4 )m_currLocalToWorld;
                    }
                    else
                    {
                        prevModelViewProj = m_owner.PrevViewProjMatrixRT * ( Matrix4x4 )m_prevLocalToWorld;
                    }

                    renderCB.SetGlobalMatrix("_AM_MATRIX_PREV_MVP", prevModelViewProj);
                    renderCB.SetGlobalFloat("_AM_OBJECT_ID", objectId * rcp255);
                    renderCB.SetGlobalFloat("_AM_MOTION_SCALE", mask ? scale : 0);

                    // TODO: cache property blocks

                    int qualityPass = (quality == AmplifyMotion.Quality.Mobile) ? 0 : 2;

                    for (int i = 0; i < m_sharedMaterials.Length; i++)
                    {
                        MaterialDesc matDesc = m_sharedMaterials[i];
                        int          pass    = qualityPass + (matDesc.coverage ? 1 : 0);

                        if (matDesc.coverage)
                        {
                            Texture mainTex = matDesc.material.mainTexture;
                            if (mainTex != null)
                            {
                                matDesc.propertyBlock.SetTexture("_MainTex", mainTex);
                            }
                            if (matDesc.cutoff)
                            {
                                matDesc.propertyBlock.SetFloat("_Cutoff", matDesc.material.GetFloat("_Cutoff"));
                            }
                        }

                        renderCB.DrawMesh(m_mesh, m_transform.localToWorldMatrix, m_owner.Instance.SolidVectorsMaterial, i, pass, matDesc.propertyBlock);
                    }
                }

                Profiler.EndSample();
            }
        }
        internal override void RenderVectors(Camera camera, CommandBuffer renderCB, float scale, AmplifyMotion.Quality quality)
        {
            UnityEngine.Profiling.Profiler.BeginSample("Particle.Render");

            // TODO: batch

            if (m_initialized && !m_error && m_renderer.isVisible)
            {
                bool mask = (m_owner.Instance.CullingMask & (1 << m_obj.gameObject.layer)) != 0;
                if (!mask || (mask && m_moved))
                {
                    const float rcp255   = 1 / 255.0f;
                    int         objectId = mask ? m_owner.Instance.GenerateObjectId(m_obj.gameObject) : 255;

                    renderCB.SetGlobalFloat("_AM_OBJECT_ID", objectId * rcp255);
                    renderCB.SetGlobalFloat("_AM_MOTION_SCALE", mask ? scale : 0);

                    int qualityPass = (quality == AmplifyMotion.Quality.Mobile) ? 0 : 2;

                    for (int i = 0; i < m_sharedMaterials.Length; i++)
                    {
                        MaterialDesc matDesc = m_sharedMaterials[i];
                        int          pass    = qualityPass + (matDesc.coverage ? 1 : 0);

                        if (matDesc.coverage)
                        {
                            Texture mainTex = matDesc.material.mainTexture;
                            if (mainTex != null)
                            {
                                matDesc.propertyBlock.SetTexture("_MainTex", mainTex);
                            }
                            if (matDesc.cutoff)
                            {
                                matDesc.propertyBlock.SetFloat("_Cutoff", matDesc.material.GetFloat("_Cutoff"));
                            }
                        }

                        var enumerator = m_particleDict.GetEnumerator();
                        while (enumerator.MoveNext())
                        {
                            KeyValuePair <uint, Particle> pair = enumerator.Current;

                            Matrix4x4 prevModelViewProj = m_owner.PrevViewProjMatrixRT * ( Matrix4x4 )pair.Value.prevLocalToWorld;
                            renderCB.SetGlobalMatrix("_AM_MATRIX_PREV_MVP", prevModelViewProj);

                            renderCB.DrawMesh(m_mesh, pair.Value.currLocalToWorld, m_owner.Instance.SolidVectorsMaterial, i, pass, matDesc.propertyBlock);
                        }
                    }
                }
            }

            UnityEngine.Profiling.Profiler.EndSample();
        }
        internal override void RenderVectors(Camera camera, float scale, AmplifyMotion.Quality quality)
        {
            Profiler.BeginSample("Solid.Render");

            if (m_initialized && !m_error && m_meshRenderer.isVisible)
            {
                bool mask = (m_owner.Instance.CullingMask & (1 << m_obj.gameObject.layer)) != 0;
                if (!mask || (mask && m_moved))
                {
                    const float rcp255   = 1 / 255.0f;
                    int         objectId = mask ? m_owner.Instance.GenerateObjectId(m_obj.gameObject) : 255;

                    Matrix4x4 prevModelViewProj;
                    if (m_obj.FixedStep)
                    {
                        prevModelViewProj = m_owner.PrevViewProjMatrixRT * m_currLocalToWorld;
                    }
                    else
                    {
                        prevModelViewProj = m_owner.PrevViewProjMatrixRT * m_prevLocalToWorld;
                    }

                    Shader.SetGlobalMatrix("_EFLOW_MATRIX_PREV_MVP", prevModelViewProj);
                    Shader.SetGlobalFloat("_EFLOW_OBJECT_ID", objectId * rcp255);
                    Shader.SetGlobalFloat("_EFLOW_MOTION_SCALE", mask ? scale : 0);

                    int qualityPass = (quality == AmplifyMotion.Quality.Mobile) ? 0 : 2;

                    for (int i = 0; i < m_sharedMaterials.Length; i++)
                    {
                        MaterialDesc matDesc = m_sharedMaterials[i];
                        int          pass    = qualityPass + (matDesc.coverage ? 1 : 0);

                        if (matDesc.coverage)
                        {
                            m_owner.Instance.SolidVectorsMaterial.mainTexture = matDesc.material.mainTexture;
                            if (matDesc.cutoff)
                            {
                                m_owner.Instance.SolidVectorsMaterial.SetFloat("_Cutoff", matDesc.material.GetFloat("_Cutoff"));
                            }
                        }

                        if (m_owner.Instance.SolidVectorsMaterial.SetPass(pass))
                        {
                            Graphics.DrawMeshNow(m_mesh, m_obj.transform.localToWorldMatrix, i);
                        }
                    }
                }
            }

            Profiler.EndSample();
        }
	protected MaterialDesc[] ProcessSharedMaterials( Material[] mats )
	{
		MaterialDesc[] matsDesc = new MaterialDesc [ mats.Length ];
		for ( int i = 0; i < mats.Length; i++ )
		{
			matsDesc[ i ].material = mats[ i ];
			bool legacyCoverage = ( mats[ i ].GetTag( "RenderType", false ) == "TransparentCutout" );
		#if UNITY_3 || UNITY_4
			matsDesc[ i ].coverage = legacyCoverage;
		#else
			matsDesc[ i ].coverage = legacyCoverage || mats[ i ].IsKeywordEnabled( "_ALPHATEST_ON" );
		#endif
			matsDesc[ i ].cutoff = mats[ i ].HasProperty( "_Cutoff" );
		}
		return matsDesc;
	}
 protected MaterialDesc[] ProcessSharedMaterials(Material[] mats)
 {
     MaterialDesc[] matsDesc = new MaterialDesc [mats.Length];
     for (int i = 0; i < mats.Length; i++)
     {
         matsDesc[i].material = mats[i];
         bool legacyCoverage = (mats[i].GetTag("RenderType", false) == "TransparentCutout");
         #if UNITY_3 || UNITY_4
         matsDesc[i].coverage = legacyCoverage;
         #else
         matsDesc[i].coverage = legacyCoverage || mats[i].IsKeywordEnabled("_ALPHATEST_ON");
         #endif
         matsDesc[i].cutoff = mats[i].HasProperty("_Cutoff");
     }
     return(matsDesc);
 }
Exemple #8
0
        internal override void RenderVectors(Camera camera, CommandBuffer renderCB, float scale, AmplifyMotion.Quality quality)
        {
            if (m_initialized && !m_error && m_meshRenderer.isVisible)
            {
                Profiler.BeginSample("Solid.Render");

                bool mask = (m_owner.Instance.CullingMask & (1 << m_obj.gameObject.layer)) != 0;
                if (!mask || (mask && m_moved))
                {
                    const float rcp255   = 1 / 255.0f;
                    int         objectId = mask ? m_owner.Instance.GenerateObjectId(m_obj.gameObject) : 255;

                    float cameraMotionScale = mask ? m_owner.Instance.CameraMotionMult * scale : 0;
                    float objectMotionScale = mask ? m_owner.Instance.ObjectMotionMult * scale : 0;

                    renderCB.SetGlobalMatrix("_AM_MATRIX_PREV_M", ( Matrix4x4 )m_prevLocalToWorld);
                    renderCB.SetGlobalMatrix("_AM_MATRIX_CURR_M", ( Matrix4x4 )m_currLocalToWorld);
                    renderCB.SetGlobalVector("_AM_MOTION_PARAMS", new Vector4(cameraMotionScale, objectMotionScale, objectId * rcp255, 0));

                    int qualityPass = (quality == AmplifyMotion.Quality.Mobile) ? 0 : 2;

                    for (int i = 0; i < m_sharedMaterials.Length; i++)
                    {
                        MaterialDesc matDesc = m_sharedMaterials[i];
                        int          pass    = qualityPass + (matDesc.coverage ? 1 : 0);

                        if (matDesc.coverage)
                        {
                            Texture mainTex = matDesc.material.mainTexture;
                            if (mainTex != null)
                            {
                                matDesc.propertyBlock.SetTexture("_MainTex", mainTex);
                            }
                            if (matDesc.cutoff)
                            {
                                matDesc.propertyBlock.SetFloat("_Cutoff", matDesc.material.GetFloat("_Cutoff"));
                            }
                        }

                        renderCB.DrawMesh(m_mesh, m_transform.localToWorldMatrix, m_owner.Instance.SolidVectorsMaterial, i, pass, matDesc.propertyBlock);
                    }
                }

                Profiler.EndSample();
            }
        }
Exemple #9
0
        internal override void RenderVectors(Camera camera, float scale, AmplifyMotion.Quality quality)
        {
            Profiler.BeginSample("Skinned.Render");

            if (m_initialized && !m_error && m_renderer.isVisible)
            {
                WaitForAsyncUpdate();

                m_clonedMesh.vertices = m_currVertices;
                m_clonedMesh.normals  = m_prevVertices;

                const float rcp255   = 1 / 255.0f;
                int         objectId = m_mask ? m_owner.Instance.GenerateObjectId(m_obj.gameObject) : 255;

                Shader.SetGlobalFloat("_EFLOW_OBJECT_ID", objectId * rcp255);
                Shader.SetGlobalFloat("_EFLOW_MOTION_SCALE", m_mask ? scale : 0);

                int qualityPass = (quality == AmplifyMotion.Quality.Mobile) ? 0 : 2;

                for (int i = 0; i < m_sharedMaterials.Length; i++)
                {
                    MaterialDesc matDesc = m_sharedMaterials[i];
                    int          pass    = qualityPass + (matDesc.coverage ? 1 : 0);

                    if (matDesc.coverage)
                    {
                        m_owner.Instance.SkinnedVectorsMaterial.mainTexture = matDesc.material.mainTexture;
                        if (matDesc.cutoff)
                        {
                            m_owner.Instance.SkinnedVectorsMaterial.SetFloat("_Cutoff", matDesc.material.GetFloat("_Cutoff"));
                        }
                    }

                    if (m_owner.Instance.SkinnedVectorsMaterial.SetPass(pass))
                    {
                        Graphics.DrawMeshNow(m_clonedMesh, m_obj.transform.localToWorldMatrix, i);
                    }
                }
            }

            Profiler.EndSample();
        }
Exemple #10
0
 public void FromCustomObject(SqlConnection con, IntPtr pUdt)
 {
     SqlUdt.SetValue(con, pUdt, "ID", ID.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "CheckID", CheckID.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "WarehouseNo", WarehouseNo.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "HouseNo", HouseNo.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "AreaNo", AreaNo.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "MaterialNo", MaterialNo.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "MaterialDesc", MaterialDesc.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "AccountQty", AccountQty.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "ScanQty", ScanQty.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "Status", Status.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "StockTime", StockTime.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "Operator", Operator.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "OperationTime", OperationTime.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "ProfitLoss", ProfitLoss.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "DifferenceQty", DifferenceQty.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "IsDel", IsDel.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "Creater", Creater.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "CreateTime", CreateTime.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "Modifyer", Modifyer.ToSqlValue());
     SqlUdt.SetValue(con, pUdt, "ModifyTime", ModifyTime.ToSqlValue());
 }
        internal override void RenderVectors(Camera camera, CommandBuffer renderCB, float scale, AmplifyMotion.Quality quality)
        {
            if (m_initialized && !m_error && m_renderer.isVisible)
            {
                Profiler.BeginSample("Skinned.Update");

                if (!m_useFallback)
                {
                    if (!m_useGPU)
                    {
                        WaitForAsyncUpdate();
                    }
                }

                Profiler.EndSample();

                Profiler.BeginSample("Skinned.Render");
                if (!m_useGPU)
                {
                    if (!m_useFallback)
                    {
                        m_clonedMesh.vertices = m_currVertices;
                    }
                    m_clonedMesh.normals = m_prevVertices;
                }

                const float rcp255   = 1 / 255.0f;
                bool        mask     = (m_owner.Instance.CullingMask & (1 << m_obj.gameObject.layer)) != 0;
                int         objectId = mask ? m_owner.Instance.GenerateObjectId(m_obj.gameObject) : 255;

                Matrix4x4 prevModelViewProj;
                if (m_obj.FixedStep)
                {
                    prevModelViewProj = m_owner.PrevViewProjMatrixRT * m_currLocalToWorld;
                }
                else
                {
                    prevModelViewProj = m_owner.PrevViewProjMatrixRT * m_prevLocalToWorld;
                }

                renderCB.SetGlobalMatrix("_AM_MATRIX_PREV_MVP", prevModelViewProj);
                renderCB.SetGlobalFloat("_AM_OBJECT_ID", objectId * rcp255);
                renderCB.SetGlobalFloat("_AM_MOTION_SCALE", mask ? scale : 0);

                if (m_useGPU)
                {
                        #if !UNITY_4
                    Vector4 vertexTexelSize = new Vector4(1.0f / m_gpuVertexTexWidth, 1.0f / m_gpuVertexTexHeight, m_gpuVertexTexWidth, m_gpuVertexTexHeight);

                    renderCB.SetGlobalVector("_AM_VERTEX_TEXEL_SIZE", vertexTexelSize);
                    renderCB.SetGlobalVector("_AM_VERTEX_TEXEL_HALFSIZE", vertexTexelSize * 0.5f);

                    renderCB.SetGlobalTexture("_AM_PREV_VERTEX_TEX", m_gpuPrevVertices);
                    renderCB.SetGlobalTexture("_AM_CURR_VERTEX_TEX", m_gpuCurrVertices);
                        #endif
                }

                int hardwarePass = m_useGPU ? 4 : 0;
                int qualityPass  = (quality == AmplifyMotion.Quality.Mobile) ? 0 : 2;
                int basePass     = hardwarePass + qualityPass;

                for (int i = 0; i < m_sharedMaterials.Length; i++)
                {
                    MaterialDesc matDesc = m_sharedMaterials[i];
                    int          pass    = basePass + (matDesc.coverage ? 1 : 0);

                    if (matDesc.coverage)
                    {
                        Texture mainTex = matDesc.material.mainTexture;
                        if (mainTex != null)
                        {
                            matDesc.propertyBlock.SetTexture("_MainTex", mainTex);
                        }
                        if (matDesc.cutoff)
                        {
                            matDesc.propertyBlock.SetFloat("_Cutoff", matDesc.material.GetFloat("_Cutoff"));
                        }
                    }

                    renderCB.DrawMesh(m_clonedMesh, m_currLocalToWorld, m_owner.Instance.SkinnedVectorsMaterial, i, pass, matDesc.propertyBlock);
                }

                Profiler.EndSample();
            }
        }
 public void Import(MaterialDesc desc)
 {
     Passes = new MaterialPass[desc.Passes.Count];
     for (int i = 0; i < Passes.Length; ++i)
     {
         Passes[i] = new MaterialPass();
         Passes[i].Import(desc.Passes[i]);
     }
 }
 public void Export(MaterialDesc desc)
 {
     desc.Passes = new List<MaterialPassDesc>();
     for (int i = 0; i < Passes.Length; ++i)
     {
         var pass = new MaterialPassDesc();
         Passes[i].Export(pass);
         desc.Passes.Add(pass);
     }
 }
 public static void Serialize(MaterialDesc desc, string filePath)
 {
     var materialSerializing = new Material();
     materialSerializing.Import(desc);
     var str = JsonConvert.SerializeObject(materialSerializing, Formatting.Indented);
     System.IO.File.WriteAllText(filePath, str);
 }
 public static void Deserialize(MaterialDesc desc, string filePath)
 {
     var str = System.IO.File.ReadAllText(filePath);
     var materialSerializing = JsonConvert.DeserializeObject<Material>(str);
     materialSerializing.Export(desc);
 }
Exemple #16
0
        internal override void RenderVectors(Camera camera, float scale, AmplifyMotion.Quality quality)
        {
            if (m_initialized && !m_error && m_renderer.isVisible)
            {
                Profiler.BeginSample("Cloth.Render");

                const float rcp255   = 1 / 255.0f;
                bool        mask     = (m_owner.Instance.CullingMask & (1 << m_obj.gameObject.layer)) != 0;
                int         objectId = mask ? m_owner.Instance.GenerateObjectId(m_obj.gameObject) : 255;

                Vector3[] clothVertices = m_cloth.vertices;
                for (int i = 0; i < m_targetVertexCount; i++)
                {
                    m_currVertices[i] = clothVertices[m_targetRemap[i]];
                }

                if (m_starting || !m_wasVisible)
                {
                    Array.Copy(m_currVertices, m_prevVertices, m_targetVertexCount);
                }

                m_clonedMesh.vertices = m_currVertices;
                m_clonedMesh.normals  = m_prevVertices;

                Matrix4x4 prevModelViewProj;
                if (m_obj.FixedStep)
                {
                    prevModelViewProj = m_owner.PrevViewProjMatrixRT * m_currLocalToWorld;
                }
                else
                {
                    prevModelViewProj = m_owner.PrevViewProjMatrixRT * m_prevLocalToWorld;
                }

                Shader.SetGlobalMatrix("_AM_MATRIX_PREV_MVP", prevModelViewProj);
                Shader.SetGlobalFloat("_AM_OBJECT_ID", objectId * rcp255);
                Shader.SetGlobalFloat("_AM_MOTION_SCALE", mask ? scale : 0);

                int qualityPass = (quality == AmplifyMotion.Quality.Mobile) ? 0 : 2;

                for (int i = 0; i < m_sharedMaterials.Length; i++)
                {
                    MaterialDesc matDesc = m_sharedMaterials[i];
                    int          pass    = qualityPass + (matDesc.coverage ? 1 : 0);

                    if (matDesc.coverage)
                    {
                        m_owner.Instance.ClothVectorsMaterial.mainTexture = matDesc.material.mainTexture;
                        if (matDesc.cutoff)
                        {
                            m_owner.Instance.ClothVectorsMaterial.SetFloat("_Cutoff", matDesc.material.GetFloat("_Cutoff"));
                        }
                    }

                    if (m_owner.Instance.ClothVectorsMaterial.SetPass(pass))
                    {
                                #if UNITY_4
                        Graphics.DrawMeshNow(m_clonedMesh, Matrix4x4.identity, i);
                                #else
                        Graphics.DrawMeshNow(m_clonedMesh, m_currLocalToWorld, i);
                                #endif
                    }
                }

                Profiler.EndSample();
            }
        }
Exemple #17
0
 public void SetMaterial(int index, MaterialDesc materialDesc)
 {
     if(SubmeshMaterials.Length <= index)
     {
         var array = new Material[index + 1];
         Array.Copy(SubmeshMaterials, array, SubmeshMaterials.Length);
         SubmeshMaterials = array;
     }
     SubmeshMaterials[index] = new Material(Game.Instance, materialDesc, materialDesc.ResourceName);
     Game.Instance.AutoDispose(SubmeshMaterials[index]);
 }
	protected MaterialDesc[] ProcessSharedMaterials( Material[] mats )
	{
		MaterialDesc[] matsDesc = new MaterialDesc [ mats.Length ];
		for ( int i = 0; i < mats.Length; i++ )
		{
			matsDesc[ i ].material = mats[ i ];
			bool legacyCoverage = ( mats[ i ].GetTag( "RenderType", false ) == "TransparentCutout" );
		#if UNITY_4
			bool isCoverage = legacyCoverage;
			matsDesc[ i ].coverage = mats[ i ].HasProperty( "_MainTex" ) && isCoverage;
		#else
			bool isCoverage = legacyCoverage || mats[ i ].IsKeywordEnabled( "_ALPHATEST_ON" );
			matsDesc[ i ].propertyBlock = new MaterialPropertyBlock();
			matsDesc[ i ].coverage = mats[ i ].HasProperty( "_MainTex" ) && isCoverage;
		#endif
			matsDesc[ i ].cutoff = mats[ i ].HasProperty( "_Cutoff" );

			if ( isCoverage && !matsDesc[ i ].coverage && !m_materialWarnings.Contains( matsDesc[ i ].material ) )
			{
				Debug.LogWarning( "[AmplifyMotion] TransparentCutout material \"" + matsDesc[ i ].material.name + "\" {" + matsDesc[ i ].material.shader.name + "} not using _MainTex standard property." );
				m_materialWarnings.Add( matsDesc[ i ].material );
			}
		}
		return matsDesc;
	}
Exemple #19
0
 public Material GetMaterial(UIFont font)
 {
     if(!mMaterials.ContainsKey(font))
     {
         var desc = new MaterialDesc();
         desc.Passes[0].InputElements = new InputElement[]{
             new InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0),
             new InputElement("TEXCOORD", 0, Format.R32G32_Float, 12, 0),
         };
         desc.Passes[0].BlendStates = CreateAlphaBlendState();
         desc.Passes[0].ShaderFile = "UIFont.hlsl";
         desc.Passes[0].Textures = new MaterialTextureDesc[1];
         desc.Passes[0].Textures[0] = new MaterialTextureDesc();
         var m = new Material(Game.Instance, desc, font.Texture.DebugName);
         m.Passes[0].TextureList[0] = font.Texture;
         mMaterials[font] = m;
         Game.Instance.AddObject(m);
     }
     return mMaterials[font];
 }