private void CreateAfterForwardOpaqueCommandBuffer(Camera camera) { #if ENABLE_FORWARD_OPAQUE_CAPTURE if (afterForwardOpaqueCommandBuffer != null) { camera.RemoveCommandBuffer(CameraEvent.AfterForwardOpaque, afterForwardOpaqueCommandBuffer); camera.RemoveCommandBuffer(CameraEvent.AfterSkybox, afterForwardOpaqueCommandBuffer); } if (afterForwardOpaqueCommandBuffer == null || (AfterOpaqueBuffer != null && (AfterOpaqueBuffer.width != camera.pixelWidth || AfterOpaqueBuffer.height != camera.pixelHeight))) { if (AfterOpaqueBuffer != null) { AfterOpaqueBuffer.Clear(); AfterOpaqueBuffer.Release(); Destroy(AfterOpaqueBuffer); AfterOpaqueBuffer = WeatherMakerFullScreenEffect.CreateRenderTexture(WeatherMakerFullScreenEffect.GetRenderTextureDescriptor(1, 1, 1, RenderTextureFormat.DefaultHDR, 0, camera)); } afterForwardOpaqueCommandBuffer = new CommandBuffer { name = afterForwardOpaqueCommandBufferName + Time.unscaledDeltaTime }; afterForwardOpaqueCommandBuffer.Blit(BuiltinRenderTextureType.CameraTarget, AfterOpaqueBuffer); afterForwardOpaqueCommandBuffer.SetGlobalTexture(WMS._CameraOpaqueTexture, AfterOpaqueBuffer); } if (camera.clearFlags == CameraClearFlags.Skybox) { camera.AddCommandBuffer(CameraEvent.AfterSkybox, afterForwardOpaqueCommandBuffer); } else { camera.AddCommandBuffer(CameraEvent.AfterForwardOpaque, afterForwardOpaqueCommandBuffer); } #endif }
private void OnDisable() { // use pre-render to give all other pre-cull scripts a chance to set properties, state, etc. #if UNITY_LWRP RenderPipelineManager.beginCameraRendering -= CameraBeginRendering; RenderPipelineManager.endCameraRendering -= CameraEndRendering; RenderPipelineManager.beginFrameRendering -= CameraBeginFrameRendering; RenderPipelineManager.endFrameRendering -= CameraEndFrameRendering; #else Camera.onPreCull -= CameraPreCull; Camera.onPreRender -= CameraPreRender; Camera.onPostRender -= CameraPostRender; #endif CleanupDepthTextures(); #if ENABLE_FORWARD_OPAQUE_CAPTURE if (AfterOpaqueBuffer != null) { AfterOpaqueBuffer.Release(); Destroy(AfterOpaqueBuffer); AfterOpaqueBuffer = null; } AfterOpaqueBuffer = WeatherMakerFullScreenEffect.DestroyRenderTexture(AfterOpaqueBuffer); #endif }