protected override void OnRelease() { ProcessedTexture = null; Objects.Clear(); PostProcessingActions = null; Material = null; SourceTextureBuffer = null; FirstTemporaryBuffer = null; SecondTemporaryBuffer = null; ColorCorrectionBuffer = null; ColorCorrectionMaterial = null; BlurBuffer = null; BlurMaterial = null; BloomBuffer = null; BloomMaterial = null; DistortionBuffer = null; DistortionMaterial = null; SharpenBuffer = null; SharpenMaterial = null; NoiseBuffer = null; NoiseTexture = null; NoiseMaterial = null; FXAABuffer = null; FXAAMaterial = null; VignetteMaterial = null; TransparentTexture = null; AlphaDiffuseMaterial = null; AddDiffuseMaterial = null; OpaqueDiffuseMaterial = null; }
public override void OnRender() { var cacheRT = RenderTexture.GetTemporary(mContext.CurrentRenderRT.descriptor); var descriptor = mContext.CurrentRenderRT.descriptor; var bloomBlur1RT = RenderTexture.GetTemporary(descriptor.width >> 1, descriptor.height >> 1, 0, RenderTextureFormat.ARGBHalf);//1/2 descriptor = mContext.CurrentRenderRT.descriptor; var bloomBlur2RT = RenderTexture.GetTemporary(descriptor.width >> 1, descriptor.height >> 1, 0, RenderTextureFormat.ARGBHalf);//1/2 BloomMaterial.SetFloat(mStreak_Length_ID, Model.streak_Length); BloomMaterial.SetFloat(mThreshold_ID, Model.threshold); Graphics.Blit(mContext.CurrentRenderRT, cacheRT, BloomMaterial, PASS2_EXTRACTHDR); Graphics.Blit(cacheRT, bloomBlur1RT, BloomMaterial, PASS1_XBLUR); Graphics.Blit(bloomBlur1RT, bloomBlur2RT, BloomMaterial, PASS1_XBLUR); Graphics.Blit(bloomBlur2RT, bloomBlur1RT, BloomMaterial, PASS1_XBLUR); BloomMaterial.SetTexture(mBloomTex_ID, bloomBlur1RT); Graphics.Blit(mContext.CurrentRenderRT, cacheRT); Graphics.Blit(cacheRT, mContext.CurrentRenderRT, BloomMaterial, PASS0_BASS); RenderTexture.ReleaseTemporary(cacheRT); RenderTexture.ReleaseTemporary(bloomBlur1RT); RenderTexture.ReleaseTemporary(bloomBlur2RT); }
/// <summary> /// Initializes a new instance of the <see cref="BloomEffect"/> class. /// </summary> public BloomEffect(GraphicsDevice graphics) { Material = bloom = new BloomMaterial(graphics); Passes.Add(new PostEffectChain()); Passes.Add(new PostEffectChain(TextureUsage.Bloom, new PostEffect() { Material = threshold = new ThresholdMaterial(graphics), RenderTargetScale = 0.5f, SurfaceFormat = SurfaceFormat.Color }, blur = new BlurEffect(graphics), new PostEffect() { Material = new ScaleMaterial(graphics), RenderTargetScale = 2.0f } )); }