Ejemplo n.º 1
0
    void CheckShaderEnum()
    {
        if (m_Selctor != ShaderEnum)
        {
            var device = SoftDevice.StaticDevice;
            if (device != null && device.ResMgr != null && device.Pipline != null)
            {
                int idx = (int)ShaderEnum;
                if (idx >= 0 && idx < m_PixelShaderHandles.Count)
                {
                    int handle = m_PixelShaderHandles[idx];
                    if (handle != 0)
                    {
                        device.Pipline.AttachPixelShader(handle);

                        Shader targetShader = null;
                        if ((m_Shaders != null) && (idx < m_Shaders.Length))
                        {
                            targetShader = m_Shaders[idx];
                        }

                        if (targetShader != null)
                        {
                            SoftMeshBinder[] binders = GameObject.FindObjectsOfType <SoftMeshBinder>();
                            if (binders != null)
                            {
                                for (int i = 0; i < binders.Length; ++i)
                                {
                                    var binder = binders[i];
                                    if (binder != null)
                                    {
                                        var renderer = binder.GetComponent <MeshRenderer>();
                                        if (renderer != null)
                                        {
                                            renderer.material.shader = targetShader;
                                            ProcessMaterial(renderer.material, ShaderEnum);
                                        }
                                    }
                                }
                            }
                        }

                        m_Selctor = ShaderEnum;
                    }
                }
            }
        }
    }
Ejemplo n.º 2
0
 private void ProcessMaterial(Material target, PixelShaderEnum selctor)
 {
     switch (selctor)
     {
     case PixelShaderEnum.MipMapShow: {
         List <Vector4> colorLst = new List <Vector4>(MipMapShowPixelShader.m_MipColor.Length);
         for (int i = 0; i < MipMapShowPixelShader.m_MipColor.Length; ++i)
         {
             Color   color = MipMapShowPixelShader.m_MipColor[i];
             Vector4 v     = new Vector4(color.r, color.g, color.b, color.a);
             colorLst.Add(v);
         }
         target.SetVectorArray("_MipmapColor", colorLst);
         break;
     }
     }
 }