Пример #1
0
 public void ChangeMotionBlur(float amount)
 {
     MotionBlurModel.Settings MotionBlurSettings = cc.motionBlur.settings;
     MotionBlurSettings.shutterAngle = amount;
     cc.motionBlur.settings          = MotionBlurSettings;
     PlayerPrefs.SetFloat("motionBlur", amount);
 }
Пример #2
0
        // Token: 0x06001E9E RID: 7838 RVA: 0x0017CE38 File Offset: 0x0017B038
        public override void PopulateCommandBuffer(CommandBuffer cb)
        {
            if (this.m_FirstFrame)
            {
                this.m_FirstFrame = false;
                return;
            }
            Material material = this.context.materialFactory.Get("Hidden/Post FX/Motion Blur");
            Material mat      = this.context.materialFactory.Get("Hidden/Post FX/Blit");

            MotionBlurModel.Settings settings = base.model.settings;
            RenderTextureFormat      format   = this.context.isHdr ? RenderTextureFormat.DefaultHDR : RenderTextureFormat.Default;
            int tempRT = MotionBlurComponent.Uniforms._TempRT;

            cb.GetTemporaryRT(tempRT, this.context.width, this.context.height, 0, FilterMode.Point, format);
            if (settings.shutterAngle > 0f && settings.frameBlending > 0f)
            {
                this.reconstructionFilter.ProcessImage(this.context, cb, ref settings, BuiltinRenderTextureType.CameraTarget, tempRT, material);
                this.frameBlendingFilter.BlendFrames(cb, settings.frameBlending, tempRT, BuiltinRenderTextureType.CameraTarget, material);
                this.frameBlendingFilter.PushFrame(cb, tempRT, this.context.width, this.context.height, material);
            }
            else if (settings.shutterAngle > 0f)
            {
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, BuiltinRenderTextureType.CameraTarget);
                cb.Blit(BuiltinRenderTextureType.CameraTarget, tempRT, mat, 0);
                this.reconstructionFilter.ProcessImage(this.context, cb, ref settings, tempRT, BuiltinRenderTextureType.CameraTarget, material);
            }
            else if (settings.frameBlending > 0f)
            {
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, BuiltinRenderTextureType.CameraTarget);
                cb.Blit(BuiltinRenderTextureType.CameraTarget, tempRT, mat, 0);
                this.frameBlendingFilter.BlendFrames(cb, settings.frameBlending, tempRT, BuiltinRenderTextureType.CameraTarget, material);
                this.frameBlendingFilter.PushFrame(cb, tempRT, this.context.width, this.context.height, material);
            }
            cb.ReleaseTemporaryRT(tempRT);
        }
Пример #3
0
 public override void PopulateCommandBuffer(CommandBuffer cb)
 {
     if (this.m_FirstFrame)
     {
         this.m_FirstFrame = false;
     }
     else
     {
         Material material = base.context.materialFactory.Get("Hidden/Post FX/Motion Blur");
         Material mat      = base.context.materialFactory.Get("Hidden/Post FX/Blit");
         MotionBlurModel.Settings settings = base.model.settings;
         RenderTextureFormat      format   = !base.context.isHdr ? RenderTextureFormat.Default : RenderTextureFormat.DefaultHDR;
         int nameID = Uniforms._TempRT;
         cb.GetTemporaryRT(nameID, base.context.width, base.context.height, 0, FilterMode.Point, format);
         if ((settings.shutterAngle > 0f) && (settings.frameBlending > 0f))
         {
             this.reconstructionFilter.ProcessImage(base.context, cb, ref settings, 2, nameID, material);
             this.frameBlendingFilter.BlendFrames(cb, settings.frameBlending, nameID, 2, material);
             this.frameBlendingFilter.PushFrame(cb, nameID, base.context.width, base.context.height, material);
         }
         else if (settings.shutterAngle > 0f)
         {
             cb.SetGlobalTexture(Uniforms._MainTex, 2);
             cb.Blit(2, nameID, mat, 0);
             this.reconstructionFilter.ProcessImage(base.context, cb, ref settings, nameID, 2, material);
         }
         else if (settings.frameBlending > 0f)
         {
             cb.SetGlobalTexture(Uniforms._MainTex, 2);
             cb.Blit(2, nameID, mat, 0);
             this.frameBlendingFilter.BlendFrames(cb, settings.frameBlending, nameID, 2, material);
             this.frameBlendingFilter.PushFrame(cb, nameID, base.context.width, base.context.height, material);
         }
         cb.ReleaseTemporaryRT(nameID);
     }
 }
Пример #4
0
 // Token: 0x060068BA RID: 26810 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void EOONHGFEMDO(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #5
0
 // Token: 0x060068E4 RID: 26852 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void ENKIEEFBHFD(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #6
0
 // Token: 0x060068E2 RID: 26850 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void FGIGNOHHBHB(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #7
0
 // Token: 0x060068E1 RID: 26849 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void NEBHFCDDQGL(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #8
0
 // Token: 0x060068E0 RID: 26848 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void PKDDQMMGKQD(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #9
0
            public void ProcessImage(PostProcessingContext context, CommandBuffer cb, ref MotionBlurModel.Settings settings, RenderTargetIdentifier source, RenderTargetIdentifier destination, Material material)
            {
                int   num  = (int)((5f * context.height) / 100f);
                int   num2 = (((num - 1) / 8) + 1) * 8;
                float num3 = settings.shutterAngle / 360f;

                cb.SetGlobalFloat(MotionBlurComponent.Uniforms._VelocityScale, num3);
                cb.SetGlobalFloat(MotionBlurComponent.Uniforms._MaxBlurRadius, (float)num);
                cb.SetGlobalFloat(MotionBlurComponent.Uniforms._RcpMaxBlurRadius, 1f / ((float)num));
                int nameID = MotionBlurComponent.Uniforms._VelocityTex;

                cb.GetTemporaryRT(nameID, context.width, context.height, 0, FilterMode.Point, this.m_PackedRTFormat, RenderTextureReadWrite.Linear);
                cb.Blit((Texture)null, nameID, material, 0);
                int num5 = MotionBlurComponent.Uniforms._Tile2RT;

                cb.GetTemporaryRT(num5, context.width / 2, context.height / 2, 0, FilterMode.Point, this.m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, nameID);
                cb.Blit(nameID, num5, material, 1);
                int num6 = MotionBlurComponent.Uniforms._Tile4RT;

                cb.GetTemporaryRT(num6, context.width / 4, context.height / 4, 0, FilterMode.Point, this.m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, num5);
                cb.Blit(num5, num6, material, 2);
                cb.ReleaseTemporaryRT(num5);
                int num7 = MotionBlurComponent.Uniforms._Tile8RT;

                cb.GetTemporaryRT(num7, context.width / 8, context.height / 8, 0, FilterMode.Point, this.m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, num6);
                cb.Blit(num6, num7, material, 2);
                cb.ReleaseTemporaryRT(num6);
                Vector2 vector = (Vector2.one * ((((float)num2) / 8f) - 1f)) * -0.5f;

                cb.SetGlobalVector(MotionBlurComponent.Uniforms._TileMaxOffs, vector);
                cb.SetGlobalFloat(MotionBlurComponent.Uniforms._TileMaxLoop, (float)((int)(((float)num2) / 8f)));
                int num8 = MotionBlurComponent.Uniforms._TileVRT;

                cb.GetTemporaryRT(num8, context.width / num2, context.height / num2, 0, FilterMode.Point, this.m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, num7);
                cb.Blit(num7, num8, material, 3);
                cb.ReleaseTemporaryRT(num7);
                int num9 = MotionBlurComponent.Uniforms._NeighborMaxTex;

                cb.GetTemporaryRT(num9, context.width / num2, context.height / num2, 0, FilterMode.Point, this.m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, num8);
                cb.Blit(num8, num9, material, 4);
                cb.ReleaseTemporaryRT(num8);
                cb.SetGlobalFloat(MotionBlurComponent.Uniforms._LoopCount, (float)Mathf.Clamp(settings.sampleCount / 2, 1, 0x40));
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, source);
                cb.Blit(source, destination, material, 5);
                cb.ReleaseTemporaryRT(nameID);
                cb.ReleaseTemporaryRT(num9);
            }
Пример #10
0
 // Token: 0x060068D8 RID: 26840 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void MECBNJIJLEG(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #11
0
 // Token: 0x060068B7 RID: 26807 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void OONCJCLHBKC(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #12
0
 // Token: 0x060068CD RID: 26829 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void BBKQJEJLHJL(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #13
0
 // Token: 0x060068CC RID: 26828 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void CKEBGJBCHHE(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #14
0
 // Token: 0x060068C7 RID: 26823 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void OLNBCBOIFPH(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #15
0
            // Token: 0x06002BF1 RID: 11249 RVA: 0x001C76D8 File Offset: 0x001C58D8
            public void ProcessImage(PostProcessingContext context, CommandBuffer cb, ref MotionBlurModel.Settings settings, RenderTargetIdentifier source, RenderTargetIdentifier destination, Material material)
            {
                int   num   = (int)(5f * (float)context.height / 100f);
                int   num2  = ((num - 1) / 8 + 1) * 8;
                float value = settings.shutterAngle / 360f;

                cb.SetGlobalFloat(MotionBlurComponent.Uniforms._VelocityScale, value);
                cb.SetGlobalFloat(MotionBlurComponent.Uniforms._MaxBlurRadius, (float)num);
                cb.SetGlobalFloat(MotionBlurComponent.Uniforms._RcpMaxBlurRadius, 1f / (float)num);
                int velocityTex = MotionBlurComponent.Uniforms._VelocityTex;

                cb.GetTemporaryRT(velocityTex, context.width, context.height, 0, FilterMode.Point, this.m_PackedRTFormat, RenderTextureReadWrite.Linear);
                cb.Blit(null, velocityTex, material, 0);
                int tile2RT = MotionBlurComponent.Uniforms._Tile2RT;

                cb.GetTemporaryRT(tile2RT, context.width / 2, context.height / 2, 0, FilterMode.Point, this.m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, velocityTex);
                cb.Blit(velocityTex, tile2RT, material, 1);
                int tile4RT = MotionBlurComponent.Uniforms._Tile4RT;

                cb.GetTemporaryRT(tile4RT, context.width / 4, context.height / 4, 0, FilterMode.Point, this.m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, tile2RT);
                cb.Blit(tile2RT, tile4RT, material, 2);
                cb.ReleaseTemporaryRT(tile2RT);
                int tile8RT = MotionBlurComponent.Uniforms._Tile8RT;

                cb.GetTemporaryRT(tile8RT, context.width / 8, context.height / 8, 0, FilterMode.Point, this.m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, tile4RT);
                cb.Blit(tile4RT, tile8RT, material, 2);
                cb.ReleaseTemporaryRT(tile4RT);
                Vector2 v = Vector2.one * ((float)num2 / 8f - 1f) * -0.5f;

                cb.SetGlobalVector(MotionBlurComponent.Uniforms._TileMaxOffs, v);
                cb.SetGlobalFloat(MotionBlurComponent.Uniforms._TileMaxLoop, (float)((int)((float)num2 / 8f)));
                int tileVRT = MotionBlurComponent.Uniforms._TileVRT;

                cb.GetTemporaryRT(tileVRT, context.width / num2, context.height / num2, 0, FilterMode.Point, this.m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, tile8RT);
                cb.Blit(tile8RT, tileVRT, material, 3);
                cb.ReleaseTemporaryRT(tile8RT);
                int neighborMaxTex = MotionBlurComponent.Uniforms._NeighborMaxTex;
                int width          = context.width / num2;
                int height         = context.height / num2;

                cb.GetTemporaryRT(neighborMaxTex, width, height, 0, FilterMode.Point, this.m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, tileVRT);
                cb.Blit(tileVRT, neighborMaxTex, material, 4);
                cb.ReleaseTemporaryRT(tileVRT);
                cb.SetGlobalFloat(MotionBlurComponent.Uniforms._LoopCount, (float)Mathf.Clamp(settings.sampleCount / 2, 1, 64));
                cb.SetGlobalTexture(MotionBlurComponent.Uniforms._MainTex, source);
                cb.Blit(source, destination, material, 5);
                cb.ReleaseTemporaryRT(velocityTex);
                cb.ReleaseTemporaryRT(neighborMaxTex);
            }
Пример #16
0
 // Token: 0x060068BC RID: 26812 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void NFMQIGOIPLI(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #17
0
 // Token: 0x060068BE RID: 26814 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void PKPPHCBPDQL(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #18
0
 // Token: 0x060068D9 RID: 26841 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void FELECLDEDFH(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
Пример #19
0
 // Token: 0x060068DA RID: 26842 RVA: 0x00027B3E File Offset: 0x00025D3E
 public void CGGJFJNBDJC(MotionBlurModel.Settings BGBMIEJJQKC)
 {
     this.m_Settings = BGBMIEJJQKC;
 }
            public void ProcessImage(PostProcessingContext context, CommandBuffer cb,
                                     ref MotionBlurModel.Settings settings, RenderTargetIdentifier source,
                                     RenderTargetIdentifier destination, Material material)
            {
                const float kMaxBlurRadius = 5f;

                // Calculate the maximum blur radius in pixels.
                var maxBlurPixels = (int)(kMaxBlurRadius * context.height / 100);

                // Calculate the TileMax size.
                // It should be a multiple of 8 and larger than maxBlur.
                var tileSize = ((maxBlurPixels - 1) / 8 + 1) * 8;

                // Pass 1 - Velocity/depth packing
                var velocityScale = settings.shutterAngle / 360f;

                cb.SetGlobalFloat(Uniforms._VelocityScale, velocityScale);
                cb.SetGlobalFloat(Uniforms._MaxBlurRadius, maxBlurPixels);
                cb.SetGlobalFloat(Uniforms._RcpMaxBlurRadius, 1f / maxBlurPixels);

                var vbuffer = Uniforms._VelocityTex;

                cb.GetTemporaryRT(vbuffer, context.width, context.height, 0, FilterMode.Point, m_PackedRTFormat,
                                  RenderTextureReadWrite.Linear);
                cb.Blit(null, vbuffer, material, (int)Pass.VelocitySetup);

                // Pass 2 - First TileMax filter (1/2 downsize)
                var tile2 = Uniforms._Tile2RT;

                cb.GetTemporaryRT(tile2, context.width / 2, context.height / 2, 0, FilterMode.Point, m_VectorRTFormat,
                                  RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(Uniforms._MainTex, vbuffer);
                cb.Blit(vbuffer, tile2, material, (int)Pass.TileMax1);

                // Pass 3 - Second TileMax filter (1/2 downsize)
                var tile4 = Uniforms._Tile4RT;

                cb.GetTemporaryRT(tile4, context.width / 4, context.height / 4, 0, FilterMode.Point, m_VectorRTFormat,
                                  RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(Uniforms._MainTex, tile2);
                cb.Blit(tile2, tile4, material, (int)Pass.TileMax2);
                cb.ReleaseTemporaryRT(tile2);

                // Pass 4 - Third TileMax filter (1/2 downsize)
                var tile8 = Uniforms._Tile8RT;

                cb.GetTemporaryRT(tile8, context.width / 8, context.height / 8, 0, FilterMode.Point, m_VectorRTFormat,
                                  RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(Uniforms._MainTex, tile4);
                cb.Blit(tile4, tile8, material, (int)Pass.TileMax2);
                cb.ReleaseTemporaryRT(tile4);

                // Pass 5 - Fourth TileMax filter (reduce to tileSize)
                var tileMaxOffs = Vector2.one * (tileSize / 8f - 1f) * -0.5f;

                cb.SetGlobalVector(Uniforms._TileMaxOffs, tileMaxOffs);
                cb.SetGlobalFloat(Uniforms._TileMaxLoop, (int)(tileSize / 8f));

                var tile = Uniforms._TileVRT;

                cb.GetTemporaryRT(tile, context.width / tileSize, context.height / tileSize, 0, FilterMode.Point,
                                  m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(Uniforms._MainTex, tile8);
                cb.Blit(tile8, tile, material, (int)Pass.TileMaxV);
                cb.ReleaseTemporaryRT(tile8);

                // Pass 6 - NeighborMax filter
                var neighborMax       = Uniforms._NeighborMaxTex;
                var neighborMaxWidth  = context.width / tileSize;
                var neighborMaxHeight = context.height / tileSize;

                cb.GetTemporaryRT(neighborMax, neighborMaxWidth, neighborMaxHeight, 0, FilterMode.Point,
                                  m_VectorRTFormat, RenderTextureReadWrite.Linear);
                cb.SetGlobalTexture(Uniforms._MainTex, tile);
                cb.Blit(tile, neighborMax, material, (int)Pass.NeighborMax);
                cb.ReleaseTemporaryRT(tile);

                // Pass 7 - Reconstruction pass
                cb.SetGlobalFloat(Uniforms._LoopCount, Mathf.Clamp(settings.sampleCount / 2, 1, 64));
                cb.SetGlobalTexture(Uniforms._MainTex, source);

                cb.Blit(source, destination, material, (int)Pass.Reconstruction);

                cb.ReleaseTemporaryRT(vbuffer);
                cb.ReleaseTemporaryRT(neighborMax);
            }