Example #1
0
 // Use this for initialization
 void Start()
 {
     awake   = false;
     waking  = false;
     smoke   = this.transform.Find("Cloud Effect").GetComponent <ParticleSystem>();
     player  = Camera.allCameras[0];
     speed   = 4;
     panel   = GameObject.FindObjectOfType <Canvas>().transform.Find("Panel").gameObject;
     blur    = player.GetComponent <UnityStandardAssets.ImageEffects.CameraMotionBlur>();
     overlay = player.GetComponent <UnityStandardAssets.ImageEffects.ScreenOverlay>();
 }
Example #2
0
 private void OnRenderImage(RenderTexture source, RenderTexture destination)
 {
     if (!this.CheckResources())
     {
         Graphics.Blit(source, destination);
     }
     else
     {
         if (this.filterType == CameraMotionBlur.MotionBlurFilter.CameraMotion)
         {
             this.StartFrame();
         }
         RenderTextureFormat format    = (!SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.RGHalf)) ? RenderTextureFormat.ARGBHalf : RenderTextureFormat.RGHalf;
         RenderTexture       temporary = RenderTexture.GetTemporary(CameraMotionBlur.divRoundUp(source.width, this.velocityDownsample), CameraMotionBlur.divRoundUp(source.height, this.velocityDownsample), 0, format);
         this.maxVelocity = Mathf.Max(2f, this.maxVelocity);
         float value = this.maxVelocity;
         bool  flag  = this.filterType == CameraMotionBlur.MotionBlurFilter.ReconstructionDX11 && this.dx11MotionBlurMaterial == null;
         int   num;
         int   height;
         if (this.filterType == CameraMotionBlur.MotionBlurFilter.Reconstruction || flag || this.filterType == CameraMotionBlur.MotionBlurFilter.ReconstructionDisc)
         {
             this.maxVelocity = Mathf.Min(this.maxVelocity, CameraMotionBlur.MAX_RADIUS);
             num    = CameraMotionBlur.divRoundUp(temporary.width, (int)this.maxVelocity);
             height = CameraMotionBlur.divRoundUp(temporary.height, (int)this.maxVelocity);
             value  = (float)(temporary.width / num);
         }
         else
         {
             num    = CameraMotionBlur.divRoundUp(temporary.width, (int)this.maxVelocity);
             height = CameraMotionBlur.divRoundUp(temporary.height, (int)this.maxVelocity);
             value  = (float)(temporary.width / num);
         }
         RenderTexture temporary2 = RenderTexture.GetTemporary(num, height, 0, format);
         RenderTexture temporary3 = RenderTexture.GetTemporary(num, height, 0, format);
         temporary.filterMode  = FilterMode.Point;
         temporary2.filterMode = FilterMode.Point;
         temporary3.filterMode = FilterMode.Point;
         if (this.noiseTexture)
         {
             this.noiseTexture.filterMode = FilterMode.Point;
         }
         source.wrapMode     = TextureWrapMode.Clamp;
         temporary.wrapMode  = TextureWrapMode.Clamp;
         temporary3.wrapMode = TextureWrapMode.Clamp;
         temporary2.wrapMode = TextureWrapMode.Clamp;
         this.CalculateViewProjection();
         if (base.gameObject.activeInHierarchy && !this.wasActive)
         {
             this.Remember();
         }
         this.wasActive = base.gameObject.activeInHierarchy;
         Matrix4x4 matrix4x = Matrix4x4.Inverse(this.currentViewProjMat);
         this.motionBlurMaterial.SetMatrix("_InvViewProj", matrix4x);
         this.motionBlurMaterial.SetMatrix("_PrevViewProj", this.prevViewProjMat);
         this.motionBlurMaterial.SetMatrix("_ToPrevViewProjCombined", this.prevViewProjMat * matrix4x);
         this.motionBlurMaterial.SetFloat("_MaxVelocity", value);
         this.motionBlurMaterial.SetFloat("_MaxRadiusOrKInPaper", value);
         this.motionBlurMaterial.SetFloat("_MinVelocity", this.minVelocity);
         this.motionBlurMaterial.SetFloat("_VelocityScale", this.velocityScale);
         this.motionBlurMaterial.SetFloat("_Jitter", this.jitter);
         this.motionBlurMaterial.SetTexture("_NoiseTex", this.noiseTexture);
         this.motionBlurMaterial.SetTexture("_VelTex", temporary);
         this.motionBlurMaterial.SetTexture("_NeighbourMaxTex", temporary3);
         this.motionBlurMaterial.SetTexture("_TileTexDebug", temporary2);
         if (this.preview)
         {
             Matrix4x4 worldToCameraMatrix = this._camera.worldToCameraMatrix;
             Matrix4x4 identity            = Matrix4x4.identity;
             identity.SetTRS(this.previewScale * 0.3333f, Quaternion.identity, Vector3.one);
             Matrix4x4 gpuprojectionMatrix = GL.GetGPUProjectionMatrix(this._camera.projectionMatrix, true);
             this.prevViewProjMat = gpuprojectionMatrix * identity * worldToCameraMatrix;
             this.motionBlurMaterial.SetMatrix("_PrevViewProj", this.prevViewProjMat);
             this.motionBlurMaterial.SetMatrix("_ToPrevViewProjCombined", this.prevViewProjMat * matrix4x);
         }
         if (this.filterType == CameraMotionBlur.MotionBlurFilter.CameraMotion)
         {
             Vector4 zero      = Vector4.zero;
             float   num2      = Vector3.Dot(base.transform.up, Vector3.up);
             Vector3 rhs       = this.prevFramePos - base.transform.position;
             float   magnitude = rhs.magnitude;
             float   num3      = Vector3.Angle(base.transform.up, this.prevFrameUp) / this._camera.fieldOfView * ((float)source.width * 0.75f);
             zero.x = this.rotationScale * num3;
             num3   = Vector3.Angle(base.transform.forward, this.prevFrameForward) / this._camera.fieldOfView * ((float)source.width * 0.75f);
             zero.y = this.rotationScale * num2 * num3;
             num3   = Vector3.Angle(base.transform.forward, this.prevFrameForward) / this._camera.fieldOfView * ((float)source.width * 0.75f);
             zero.z = this.rotationScale * (1f - num2) * num3;
             if (magnitude > Mathf.Epsilon && this.movementScale > Mathf.Epsilon)
             {
                 zero.w  = this.movementScale * Vector3.Dot(base.transform.forward, rhs) * ((float)source.width * 0.5f);
                 zero.x += this.movementScale * Vector3.Dot(base.transform.up, rhs) * ((float)source.width * 0.5f);
                 zero.y += this.movementScale * Vector3.Dot(base.transform.right, rhs) * ((float)source.width * 0.5f);
             }
             if (this.preview)
             {
                 this.motionBlurMaterial.SetVector("_BlurDirectionPacked", new Vector4(this.previewScale.y, this.previewScale.x, 0f, this.previewScale.z) * 0.5f * this._camera.fieldOfView);
             }
             else
             {
                 this.motionBlurMaterial.SetVector("_BlurDirectionPacked", zero);
             }
         }
         else
         {
             Graphics.Blit(source, temporary, this.motionBlurMaterial, 0);
             Camera camera = null;
             if (this.excludeLayers.value != 0)
             {
                 camera = this.GetTmpCam();
             }
             if (camera && this.excludeLayers.value != 0 && this.replacementClear && this.replacementClear.isSupported)
             {
                 camera.targetTexture = temporary;
                 camera.cullingMask   = this.excludeLayers;
                 camera.RenderWithShader(this.replacementClear, "");
             }
         }
         if (!this.preview && Time.frameCount != this.prevFrameCount)
         {
             this.prevFrameCount = Time.frameCount;
             this.Remember();
         }
         source.filterMode = FilterMode.Bilinear;
         if (this.showVelocity)
         {
             this.motionBlurMaterial.SetFloat("_DisplayVelocityScale", this.showVelocityScale);
             Graphics.Blit(temporary, destination, this.motionBlurMaterial, 1);
         }
         else if (this.filterType == CameraMotionBlur.MotionBlurFilter.ReconstructionDX11 && !flag)
         {
             this.dx11MotionBlurMaterial.SetFloat("_MinVelocity", this.minVelocity);
             this.dx11MotionBlurMaterial.SetFloat("_VelocityScale", this.velocityScale);
             this.dx11MotionBlurMaterial.SetFloat("_Jitter", this.jitter);
             this.dx11MotionBlurMaterial.SetTexture("_NoiseTex", this.noiseTexture);
             this.dx11MotionBlurMaterial.SetTexture("_VelTex", temporary);
             this.dx11MotionBlurMaterial.SetTexture("_NeighbourMaxTex", temporary3);
             this.dx11MotionBlurMaterial.SetFloat("_SoftZDistance", Mathf.Max(0.00025f, this.softZDistance));
             this.dx11MotionBlurMaterial.SetFloat("_MaxRadiusOrKInPaper", value);
             Graphics.Blit(temporary, temporary2, this.dx11MotionBlurMaterial, 0);
             Graphics.Blit(temporary2, temporary3, this.dx11MotionBlurMaterial, 1);
             Graphics.Blit(source, destination, this.dx11MotionBlurMaterial, 2);
         }
         else if (this.filterType == CameraMotionBlur.MotionBlurFilter.Reconstruction || flag)
         {
             this.motionBlurMaterial.SetFloat("_SoftZDistance", Mathf.Max(0.00025f, this.softZDistance));
             Graphics.Blit(temporary, temporary2, this.motionBlurMaterial, 2);
             Graphics.Blit(temporary2, temporary3, this.motionBlurMaterial, 3);
             Graphics.Blit(source, destination, this.motionBlurMaterial, 4);
         }
         else if (this.filterType == CameraMotionBlur.MotionBlurFilter.CameraMotion)
         {
             Graphics.Blit(source, destination, this.motionBlurMaterial, 6);
         }
         else if (this.filterType == CameraMotionBlur.MotionBlurFilter.ReconstructionDisc)
         {
             this.motionBlurMaterial.SetFloat("_SoftZDistance", Mathf.Max(0.00025f, this.softZDistance));
             Graphics.Blit(temporary, temporary2, this.motionBlurMaterial, 2);
             Graphics.Blit(temporary2, temporary3, this.motionBlurMaterial, 3);
             Graphics.Blit(source, destination, this.motionBlurMaterial, 7);
         }
         else
         {
             Graphics.Blit(source, destination, this.motionBlurMaterial, 5);
         }
         RenderTexture.ReleaseTemporary(temporary);
         RenderTexture.ReleaseTemporary(temporary2);
         RenderTexture.ReleaseTemporary(temporary3);
     }
 }
Example #3
0
    public void InitPostProcessingEffects() {

        cameraMotionBlur = this.GetComponentInChildren<UnityStandardAssets.ImageEffects.CameraMotionBlur>();
        depthOfField = this.GetComponentInChildren<UnityStandardAssets.ImageEffects.DepthOfField>();
        cameraMotionBlur.enabled = false;
        depthOfField.enabled = false;
        //Enable CameraMotionBlur if Setting is allowed to be on
        if (PlayerPrefs.GetInt("CMB") == 1)
        {
            CMBEnabled = true;
        }
        else
        {
            CMBEnabled = false;
            cameraMotionBlur.enabled = false;
        }

        if (PlayerPrefs.GetInt("DOF") == 1)
        {
            DOFEnabled = true;
        }
        else
        {
            DOFEnabled = false;
            depthOfField.enabled = false;
        }
    }