Пример #1
0
    public override void SetMaterial(PanoManager.EPANOTEXTUREMODE texMode, Vector2 mediaSize, Vector2 contentSize, params PanoManager.PanoTextureForOneDevice[] texDeviceArr)
    {
        ATrace.Log(string.Format("Pano11Mesh SetOneMaterial: texMode:{0} mediaSize:{1} contentSize:{2}", texMode, mediaSize, contentSize
                                 ));
        int i = 0;


        ATrace.Log("Pano11Mesh texDeviceArr.Length:" + texDeviceArr.Length);
        foreach (Renderer r in _Renderers)
        {
            Material mat = new Material(PanoManager.Instance.GetShader(texMode));
            r.material = mat;

            if (texDeviceArr.Length > i)//应当传入两个设备的图集
            {
                r.gameObject.SetActive(true);
                //两个镜头的两张贴图,所以TexArr取不同index
                SetOneMaterial(mat, 0, 1, GetContentRect(mediaSize, contentSize), texMode, texDeviceArr[i]);
            }
            else
            {
                r.gameObject.SetActive(false);
            }

            i++;
        }

        base.SetMaterial(texMode, mediaSize, contentSize, texDeviceArr);
    }
Пример #2
0
 void SetPlaneMeshMaterial(PanoManager.EPANOTEXTUREMODE texMode, Texture[] texarr, Material mat)
 {
     if (texMode == PanoManager.EPANOTEXTUREMODE.EPM_YUV)
     {
         if (texarr.Length > 0)
         {
             mat.SetTexture("_MainTex", texarr[0]);
         }
         if (texarr.Length > 1)
         {
             mat.SetTexture("_MainTexU", texarr[1]);
         }
         if (texarr.Length > 2)
         {
             mat.SetTexture("_MainTexV", texarr[2]);
         }
     }
     else if (texMode == PanoManager.EPANOTEXTUREMODE.EMP_RGB)
     {
         if (texarr.Length > 0)
         {
             mat.SetTexture("_MainTex", texarr[0]);
         }
     }
     else if (texMode == PanoManager.EPANOTEXTUREMODE.EPM_SurfaceToTexture)
     {
         if (texarr.Length > 0)
         {
             mat.SetTexture("_MainTex", texarr[0]);
         }
     }
 }
Пример #3
0
    public Shader GetShader(PanoManager.EPANOTEXTUREMODE texMode)
    {
        Shader shader = null;

        if (texMode == PanoManager.EPANOTEXTUREMODE.EMP_RGB)
        {
            shader = Shader.Find("Unlit/RGB");
        }
        else if (texMode == PanoManager.EPANOTEXTUREMODE.EMP_ALPHARGB)
        {
            shader = Shader.Find("Unlit/AlphaRGB");
        }
        else if (texMode == PanoManager.EPANOTEXTUREMODE.EPM_YUV)
        {
            shader = Shader.Find("Unlit/AlphaYUV");
        }
        else if (texMode == PanoManager.EPANOTEXTUREMODE.EPM_SurfaceToTexture)
        {
#if UNITY_5_6
            shader = Shader.Find("Unlit/SurfaceToTexture");
#else
            shader = Shader.Find("Unlit/AlphaRGB");
#endif
        }

        return(shader);
    }
Пример #4
0
    protected void SetOneMaterial(Material mat, int index, int sum, Rect rc, PanoManager.EPANOTEXTUREMODE texMode, PanoManager.PanoTextureForOneDevice texDevice)
    {
        ATrace.Log(string.Format("SetOneMaterial: index:{0} sum:{1} rc:{2}", index, sum, rc.ToString()));
        PanoManager.PanoTextureForOneDevice dv = texDevice;

        if (texMode == PanoManager.EPANOTEXTUREMODE.EPM_YUV)
        {
            if (dv._TextureArr.Length > 0)
            {
                SetOneMaterialOneParam(mat, index, sum, rc, dv._TextureArr[0], "_MainTex");
            }
            if (dv._TextureArr.Length > 1)
            {
                SetOneMaterialOneParam(mat, index, sum, rc, dv._TextureArr[1], "_MainTexU");
            }
            if (dv._TextureArr.Length > 2)
            {
                SetOneMaterialOneParam(mat, index, sum, rc, dv._TextureArr[2], "_MainTexV");
            }
        }
        else if (texMode == PanoManager.EPANOTEXTUREMODE.EMP_RGB)
        {
            if (dv._TextureArr.Length > 0)
            {
                SetOneMaterialOneParam(mat, index, sum, rc, dv._TextureArr[0]);
            }
        }
        else if (texMode == PanoManager.EPANOTEXTUREMODE.EPM_SurfaceToTexture)
        {
            if (dv._TextureArr.Length > 0)
            {
                SetOneMaterialOneParam(mat, index, sum, rc, dv._TextureArr[0]);
            }
        }
    }
Пример #5
0
    public override void SetMaterial(PanoManager.EPANOTEXTUREMODE texMode, Vector2 mediaSize, Vector2 contentSize, params PanoManager.PanoTextureForOneDevice[] texDeviceArr)
    {
        int i = 0;

        foreach (Renderer r in _Renderers)
        {
            Material mat = new Material(PanoManager.Instance.GetShader(texMode));
            r.material = mat;

            if (texDeviceArr.Length > 0)
            {
                SetOneMaterial(mat, 0, 1, GetContentRect(mediaSize, contentSize), texMode, texDeviceArr[i]);
            }

            i++;
        }


        base.SetMaterial(texMode, mediaSize, contentSize, texDeviceArr);
    }
Пример #6
0
    public override void SetMaterial(PanoManager.EPANOTEXTUREMODE texMode, Vector2 mediaSize, Vector2 contentSize, params PanoManager.PanoTextureForOneDevice[] texDeviceArr)
    {
        int i = 0;

        foreach (Renderer r in _Renderers)
        {
            Material mat = new Material(PanoManager.Instance.GetShader(texMode));

            r.material = mat;

            if (texDeviceArr != null && texDeviceArr.Length > 0)//默认设备只有一个,只取[0]
            {
                SetOneMaterial(mat, i, 2, GetContentRect(mediaSize, contentSize), texMode, texDeviceArr[0]);
                ATrace.Log(string.Format("SetMaterial:{0} {1}", i, r.gameObject.name));
            }


            i++;
        }

        base.SetMaterial(texMode, mediaSize, contentSize, texDeviceArr);
    }
Пример #7
0
    public override void ResetTexture()
    {
        Texture rtex = PanoManager.Instance.GetRenderTexture();

        PanoManager.PanoTextureForOneDevice dv = PanoManager.Instance.GetPanoTextureDeviceArr(0);
        Texture[] texarr = dv._TextureArr;

        _HalfSphereMesh.sharedMaterial.SetTexture("_MainTex", rtex);

        if (texarr.Length > 0)
        {
            //Shader shader = PanoManager.Instance.GetCurrentShader();

            Material mat = new Material(_PlaneMesh.sharedMaterial.shader);
            _PlaneMesh.sharedMaterial      = mat;
            _PlaneMeshClone.sharedMaterial = mat;

            PanoManager.EPANOTEXTUREMODE texmode = PanoManager.Instance.GetTextureMode();

            SetPlaneMeshMaterial(texmode, texarr, mat);
        }
    }
Пример #8
0
 public virtual void SetMaterial(PanoManager.EPANOTEXTUREMODE texMode, Vector2 mediaSize, Vector2 contentSize, params PanoManager.PanoTextureForOneDevice[] texDeviceArr)
 {
     //SetFlipScale();
 }