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); } }
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); } }
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); }
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); }
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); }
void OnDisable() { foreach (var p in peblist) { p.OnDispose(); } RenderTexturePool.ReleaseAll(); }
public static RenderTexturePool GetInstance() { if (instance == null) { instance = new RenderTexturePool(); } return(instance); }
/// <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); } }
void OnDestroy() { if (peblist != null) { for (int i = 0; i < peblist.Count; i++) { peblist[i].OnDispose(); } peblist.Clear(); RenderTexturePool.ReleaseAll(); } postEffect = null; }
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); // } }
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); }
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); }
private void Awake() { Instance = this; }
/// <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; // } //} }
public Blur() { pool = new RenderTexturePool(RenderTextureFormat.ARGBHalf); CS = Resources.Load <ComputeShader>(PATH); K_MAIN = CS.FindKernel("KMain"); }