Exemplo n.º 1
0
        public override void PreProcess(RenderTexture source, RenderTexture destination)
        {
            if (material == null)
            {
                CreateMaterial();
            }
            if (material != null)// && mGlowEnable)
            {
                RenderTexture m_rtFade = RenderTexturePool.Get(Screen.width, Screen.height, 0);
                if (EarlyOutIfNotSupported(source, destination))
                {
                    return;
                }
                if (m_isRenderFadeTexture)
                {
                    material.SetTexture("_FadeoutTexture", m_rtFade);
                    material.SetFloat("_FadeoutFactor", m_currentFadeFactor);
                    Graphics.Blit(source, destination, material);
                }
                else
                {
                    Graphics.Blit(source, m_rtFade);
                    Graphics.Blit(source, destination);
                    m_isRenderFadeTexture = true;
                }

                RenderTexturePool.Release(m_rtFade);
            }
        }
Exemplo n.º 2
0
 public override void PreProcess(RenderTexture source, RenderTexture destination)
 {
     if (material == null)
     {
         CreateMaterial();
     }
     if (material != null)// && mGlowEnable)
     {
         if (EarlyOutIfNotSupported(source, destination))
         {
             return;
         }
         TimeX += Time.deltaTime;
         if (TimeX > 100)
         {
             TimeX = 0;
         }
         RenderTexture Camera2tex = RenderTexturePool.Get(Screen.width, Screen.height, 24);
         if (Camera2 != null)
         {
             Camera2.targetTexture = Camera2tex;
             material.SetTexture("_MainTex2", Camera2tex);
         }
         material.SetFloat("_TimeX", TimeX);
         material.SetFloat("_Value", BlendFX);
         material.SetFloat("_Value2", SwitchCameraToCamera2);
         material.SetVector("_ScreenResolution", new Vector4(Screen.width, Screen.height, 0.0f, 0.0f));
         Graphics.Blit(source, destination, material);
         RenderTexturePool.Release(Camera2tex);
     }
 }
Exemplo n.º 3
0
        void OnRenderImage(RenderTexture source, RenderTexture destination)
        {
            RenderTexture buffer0 = RenderTexturePool.Get(Screen.width, Screen.height);

            Graphics.Blit(source, buffer0);

            foreach (var p in peblist)
            {
                if (!p.IsApply)
                {
                    continue;
                }

                if (!p.IsInitialized)
                {
                    p.OnEnable();
                    continue;
                }

                RenderTexture buffer1 = RenderTexturePool.Get(Screen.width, Screen.height);
                p.PreProcess(buffer0, buffer1);
                RenderTexturePool.Release(buffer0);
                buffer0 = buffer1;
            }
            Graphics.Blit(buffer0, destination);
            RenderTexturePool.Release(buffer0);
        }
Exemplo n.º 4
0
        public override void PreProcess(RenderTexture source, RenderTexture destination)
        {
            /*RenderTexture*/
            solidSilhouette = RenderTexturePool.Get(Screen.width, Screen.height);
            Graphics.SetRenderTarget(solidSilhouette);


            Graphics.ExecuteCommandBuffer(m_RenderCommand);

            int           width           = (int)(Screen.width * sample);
            int           height          = (int)(Screen.height * sample);
            RenderTexture mBlurSilhouette = RenderTexturePool.Get(width, height);

            Graphics.Blit(solidSilhouette, mBlurSilhouette);

            for (int i = 0; i < iteration; ++i)
            {
                RenderTexture blurTemp = RenderTexturePool.Get(width, height);
                float         offset   = spread * i + 0.5f;
                blurMaterial.SetVector("_Offset", new Vector4(offset / width, offset / height));
                Graphics.Blit(mBlurSilhouette, blurTemp, blurMaterial);
                RenderTexturePool.Release(mBlurSilhouette);
                mBlurSilhouette = blurTemp;
            }

            material.SetTexture("_StencilMap", solidSilhouette);
            material.SetTexture("_BlurMap", mBlurSilhouette);
            material.SetFloat("_Intensity", intensity);
            Graphics.Blit(source, destination, material);

            RenderTexturePool.Release(mBlurSilhouette);
            RenderTexturePool.Release(solidSilhouette);
        }
Exemplo n.º 5
0
        public override void PreProcess(RenderTexture source, RenderTexture destination)
        {
            if (material == null)
            {
                CreateMaterial();
            }
            if (material != null)
            {
                if (EarlyOutIfNotSupported(source, destination))
                {
                    return;
                }
                RenderTexture tempRtA = RenderTexturePool.Get(Screen.width / 4, Screen.height / 4, 0, RenderTextureFormat.ARGB32);
                RenderTexture tempRtB = RenderTexturePool.Get(Screen.width / 4, Screen.height / 4, 0, RenderTextureFormat.ARGB32);
                material.SetVector(strParameter, new Vector4(blurSize, 0.0f, Threshhold, Intensity));

                Graphics.Blit(source, tempRtA, material, 1);

                for (int i = 0; i < blurIterations; ++i)
                {
                    material.SetVector(strParameter, new Vector4(blurSize + i, 0.0f, Threshhold, Intensity));

                    Graphics.Blit(tempRtA, tempRtB, material, 2);
                    Graphics.Blit(tempRtB, tempRtA, material, 3);
                }

                material.SetTexture(strBloom, tempRtA);
                Graphics.Blit(source, destination, material, 0);

                RenderTexturePool.Release(tempRtA);
                RenderTexturePool.Release(tempRtB);
            }
        }
    //统计结果
    public void statiscalResult()
    {
        RenderTexturePool.GetInstance().StatisticalResult();
        Vector2 scoresTotal = RenderTexturePool.GetInstance().scoresTotal;

        Debug.Log("scoresTotal:::" + scoresTotal.x + scoresTotal.y);
        if (scoresTotal == Vector2.zero)
        {
            KBEngine.Event.fireIn("statisticalResult", GameManager.Instance.TeamId, 50f);
        }
        else
        {
            float redData  = (scoresTotal.x / (scoresTotal.x + scoresTotal.y)) * 100;
            float blueData = (scoresTotal.y / (scoresTotal.x + scoresTotal.y)) * 100;
            if (redData == 0)
            {
                redData = 100 - blueData;
            }
            else if (blueData == 0)
            {
                blueData = 100 - redData;
            }
            if (GameManager.Instance.TeamId == CommonConfigs.RED_TEAM_ID)
            {
                KBEngine.Event.fireIn("statisticalResult", CommonConfigs.RED_TEAM_ID, redData);
            }
            else
            {
                KBEngine.Event.fireIn("statisticalResult", CommonConfigs.BLUE_TEAM_ID, blueData);
            }
        }

        //  KBEngine.Event.fireIn("statisticalResult", (byte)1, 65.4f);
    }
Exemplo n.º 7
0
 void OnDisable()
 {
     foreach (var p in peblist)
     {
         p.OnDispose();
     }
     RenderTexturePool.ReleaseAll();
 }
Exemplo n.º 8
0
 public static RenderTexturePool GetInstance()
 {
     if (instance == null)
     {
         instance = new RenderTexturePool();
     }
     return(instance);
 }
Exemplo n.º 9
0
 /// <summary>
 /// 判断物体是否需要渲染
 /// </summary>
 /// <param name="ObjectId"></param>
 /// <param name="obj"></param>
 /// <returns></returns>
 public bool JudgetRenderTexture(int ObjectId, SplatManager obj)
 {
     RenderTexturePool.GetInstance().AddSplatManagerLst(ObjectId, obj);
     if (ObjectIDToTexture2D.ContainsKey(ObjectId))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 10
0
        void OnDestroy()
        {
            if (peblist != null)
            {
                for (int i = 0; i < peblist.Count; i++)
                {
                    peblist[i].OnDispose();
                }
                peblist.Clear();
                RenderTexturePool.ReleaseAll();
            }

            postEffect = null;
        }
Exemplo n.º 11
0
    public bool CanMoveByInk(ref RaycastHit rayHitInfo)
    {
        if (rayHitInfo.transform == null)
        {
            return(false);
        }
        if (rayHitInfo.transform.gameObject.layer != _layerNum)
        {
            return(false);
        }
        //if (CurGroundObj == null || CurGroundObj.name != rayHitInfo.transform.name)
        //{
        //    CurGroundObj = rayHitInfo.transform;
        SplatManager renderObj = rayHitInfo.transform.GetComponent <SplatManager>();

        if (renderObj == null)
        {
            Debug.Log("SplatManager_name_name_name:::" + rayHitInfo.transform.name);
            return(false);
        }

        if (PixelManager.GetInstance() == null)
        {
            Debug.Log("renderObj.ObjectId_PixelManager.GetInstance() is null!!!:::" + renderObj.ObjectId);
            return(false);
        }

        //先判断是否已经有玩家对象和渲染对象了,根据情况添加玩家对象和渲染对象
        if (!PixelManager.GetInstance().ObjectIDToTexture2D.ContainsKey(renderObj.ObjectId))
        {
            Texture2D obj = RenderTexturePool.GetInstance().InstanceTexture2D();
            renderObj.SetRenderTexture2D(ref obj);
            PixelManager.GetInstance().SetObjectIDToTexture2D(renderObj.ObjectId, obj);
            renderObj.RenderTextureToStaticData();
            Debug.Log("PlayerIDToObjectID.GetInstance():::" + PixelManager.GetInstance().PlayerIDToObjectID.Count + " ," + PixelManager.GetInstance().PlayerIDToObjectID.Keys);
        }
        return(PixelManager.GetInstance().IsInOneSelfInk(AvatarEntityId, renderObj.ObjectId, rayHitInfo.textureCoord));
        //  bool data = PixelManager.GetInstance().GetPixelsInfo(PlayerId, _groundHit.textureCoord);
        //   }
    }
Exemplo n.º 12
0
    public bool OnGrouldRayInfoAndRender(out RaycastHit _groundHit)
    {
        if (!RayGroundInfo(out _groundHit))
        {
            return(false);
        }

        if (_groundHit.transform.gameObject.layer != _layerNum)
        {
            return(false);
        }
        if (CurGroundObj == null || CurGroundObj.name != _groundHit.transform.name)
        {
            CurGroundObj = _groundHit.transform;
            SplatManager renderObj = _groundHit.transform.GetComponent <SplatManager>();
            if (renderObj == null)
            {
                Debug.Log("SplatManager_name_name_name:::" + _groundHit.transform.name);
                return(false);
            }

            if (PixelManager.GetInstance() == null)
            {
                Debug.Log("renderObj.ObjectId_PixelManager.GetInstance() is null!!!:::" + renderObj.ObjectId);
                return(false);
            }

            //先判断是否已经有玩家对象和渲染对象了,根据情况添加玩家对象和渲染对象
            if (!PixelManager.GetInstance().SetPlayerIdToObjectID(AvatarEntityId, renderObj.ObjectId))
            {
                Texture2D obj = RenderTexturePool.GetInstance().InstanceTexture2D();
                renderObj.SetRenderTexture2D(ref obj);
                PixelManager.GetInstance().SetObjectIDToTexture2D(renderObj.ObjectId, obj);
                Debug.Log("PlayerIDToObjectID.GetInstance():::" + PixelManager.GetInstance().PlayerIDToObjectID.Count + " ," + PixelManager.GetInstance().PlayerIDToObjectID.Keys);
            }
            //  bool data = PixelManager.GetInstance().GetPixelsInfo(PlayerId, _groundHit.textureCoord);
        }
        return(true);
    }
Exemplo n.º 13
0
        void OnRenderImage(RenderTexture source, RenderTexture destination)
        {
            RenderTexture buffer0 = RenderTexturePool.Get(Screen.width, Screen.height);

            Graphics.Blit(source, buffer0);

            for (int i = 0; i < peblist.Count; i++)
            {
                if (!peblist[i].IsApply)
                {
                    continue;
                }
                //if (peblist[i].InValidQuality()) continue;

                RenderTexture buffer1 = RenderTexturePool.Get(Screen.width, Screen.height);
                peblist[i].PreProcess(buffer0, buffer1);
                RenderTexturePool.Release(buffer0);
                buffer0 = buffer1;
            }
            Graphics.Blit(buffer0, destination);
            RenderTexturePool.Release(buffer0);
        }
Exemplo n.º 14
0
 private void Awake()
 {
     Instance = this;
 }
Exemplo n.º 15
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="PlayerId"></param>
    /// <param name="ObjectId"></param>
    /// <returns>如果返回值为false,表示没有找到相对于的Render,需要主动重新渲染一次</returns>
    public bool SetPlayerIdToObjectID(int PlayerId, int ObjectId)
    {
        if (ObjectId == 10)
        {
            Debug.Log("ObjectId::::" + ObjectId);
        }

        if (PlayerIDToObjectID == null)
        {
            Debug.Log("SetPlayerIdToObjectID_PlayerIDToObjectID::::PlayerIDToObjectID is null!");
        }

        if (!PlayerIDToObjectID.ContainsKey(PlayerId))
        {
            PlayerIDToObjectID.Add(PlayerId, ObjectId);
        }
        else
        {
            int id = PlayerIDToObjectID[PlayerId];
            PlayerIDToObjectID[PlayerId] = ObjectId;
            if (!PlayerIDToObjectID.ContainsValue(id))//如果当下没有玩家站着或者需要渲染的物体,就将需要渲染的物体标志移除掉
            {
                RenderTexturePool.GetInstance().DestoryTexture2D(ObjectIDToTexture2D[id]);
                ObjectIDToTexture2D.Remove(id);
            }
        }

        if (!ObjectIDToTexture2D.ContainsKey(ObjectId))
        {
            return(false);
        }
        else
        {
            return(true);
        }
        ////判断是否包含当前玩家数据,1)没有增加需要数据,并看是否需要主动增加Texture2D渲染
        //if (!PlayerIDToObjectID.ContainsKey(PlayerId))
        //{
        //    PlayerIDToObjectID.Add(PlayerId, ObjectId);
        //    if (ObjectIDToTexture2D.ContainsKey(ObjectId)) return true;
        //    return false;
        //}
        //else
        //{
        //    if (PlayerIDToObjectID.ContainsValue(ObjectId))
        //    {
        //        PlayerIDToObjectID[PlayerId] = ObjectId;
        //        return true;
        //    }
        //    else
        //    {
        //     //   Debug.Log("ddddddddddddddddddddddddddddddddddd");
        //        int id = PlayerIDToObjectID[PlayerId];
        //        PlayerIDToObjectID[PlayerId] = ObjectId;
        //        if (!PlayerIDToObjectID.ContainsValue(id))//如果当下没有玩家站着或者需要渲染的物体,就将需要渲染的物体标志移除掉
        //        {
        //            RenderTexturePool.GetInstance().DestoryTexture2D(ObjectIDToTexture2D[id]);
        //            ObjectIDToTexture2D.Remove(id);
        //        }
        //        return false;
        //    }
        //}
    }
Exemplo n.º 16
0
 public Blur()
 {
     pool   = new RenderTexturePool(RenderTextureFormat.ARGBHalf);
     CS     = Resources.Load <ComputeShader>(PATH);
     K_MAIN = CS.FindKernel("KMain");
 }