private void OnRenderImage(RenderTexture src, RenderTexture dest) { if (this.silentError) { return; } if (!AmplifyUtils.IsInitialized) { AmplifyUtils.InitializeIds(); } if (this.m_highPrecision) { AmplifyUtils.EnsureKeywordEnabled(this.m_bloomMaterial, AmplifyUtils.HighPrecisionKeyword, true); AmplifyUtils.EnsureKeywordEnabled(this.m_finalCompositionMaterial, AmplifyUtils.HighPrecisionKeyword, true); AmplifyUtils.CurrentRTFormat = RenderTextureFormat.DefaultHDR; } else { AmplifyUtils.EnsureKeywordEnabled(this.m_bloomMaterial, AmplifyUtils.HighPrecisionKeyword, false); AmplifyUtils.EnsureKeywordEnabled(this.m_finalCompositionMaterial, AmplifyUtils.HighPrecisionKeyword, false); AmplifyUtils.CurrentRTFormat = RenderTextureFormat.Default; } float num = Mathf.Acos(Vector3.Dot(this.m_cameraTransform.right, Vector3.right)); if (Vector3.Cross(this.m_cameraTransform.right, Vector3.right).y > 0f) { num = -num; } RenderTexture renderTexture = null; RenderTexture renderTexture2 = null; if (!this.m_highPrecision) { this.m_bloomRange.y = 1f / this.m_bloomRange.x; this.m_bloomMaterial.SetVector(AmplifyUtils.BloomRangeId, this.m_bloomRange); this.m_finalCompositionMaterial.SetVector(AmplifyUtils.BloomRangeId, this.m_bloomRange); } this.m_bloomParams.y = this.m_overallThreshold; this.m_bloomMaterial.SetVector(AmplifyUtils.BloomParamsId, this.m_bloomParams); this.m_finalCompositionMaterial.SetVector(AmplifyUtils.BloomParamsId, this.m_bloomParams); int num2 = 1; MainThresholdSizeEnum mainThresholdSize = this.m_mainThresholdSize; if (mainThresholdSize != MainThresholdSizeEnum.Half) { if (mainThresholdSize == MainThresholdSizeEnum.Quarter) { num2 = 4; } } else { num2 = 2; } RenderTexture tempRenderTarget = AmplifyUtils.GetTempRenderTarget(src.width / num2, src.height / num2); if (this.m_maskTexture != null) { this.m_bloomMaterial.SetTexture(AmplifyUtils.MaskTextureId, this.m_maskTexture); Graphics.Blit(src, tempRenderTarget, this.m_bloomMaterial, 1); } else { Graphics.Blit(src, tempRenderTarget, this.m_bloomMaterial, 0); } if (this.m_debugToScreen == DebugToScreenEnum.MainThreshold) { Graphics.Blit(tempRenderTarget, dest, this.m_bloomMaterial, 33); AmplifyUtils.ReleaseAllRT(); return; } bool flag = true; RenderTexture renderTexture3 = tempRenderTarget; if (this.m_bloomDownsampleCount > 0) { flag = false; int num3 = tempRenderTarget.width; int num4 = tempRenderTarget.height; for (int i = 0; i < this.m_bloomDownsampleCount; i++) { this.m_tempDownsamplesSizes[i].x = (float)num3; this.m_tempDownsamplesSizes[i].y = (float)num4; num3 = num3 + 1 >> 1; num4 = num4 + 1 >> 1; this.m_tempAuxDownsampleRTs[i] = AmplifyUtils.GetTempRenderTarget(num3, num4); if (i == 0) { if (!this.m_temporalFilteringActive || this.m_gaussianSteps[i] != 0) { if (this.m_upscaleQuality == UpscaleQualityEnum.Realistic) { Graphics.Blit(renderTexture3, this.m_tempAuxDownsampleRTs[i], this.m_bloomMaterial, 10); } else { Graphics.Blit(renderTexture3, this.m_tempAuxDownsampleRTs[i], this.m_bloomMaterial, 11); } } else { if (this.m_tempFilterBuffer != null && this.m_temporalFilteringActive) { float value = this.m_temporalFilteringCurve.Evaluate(this.m_temporalFilteringValue); this.m_bloomMaterial.SetFloat(AmplifyUtils.TempFilterValueId, value); this.m_bloomMaterial.SetTexture(AmplifyUtils.AnamorphicRTS[0], this.m_tempFilterBuffer); if (this.m_upscaleQuality == UpscaleQualityEnum.Realistic) { Graphics.Blit(renderTexture3, this.m_tempAuxDownsampleRTs[i], this.m_bloomMaterial, 12); } else { Graphics.Blit(renderTexture3, this.m_tempAuxDownsampleRTs[i], this.m_bloomMaterial, 13); } } else if (this.m_upscaleQuality == UpscaleQualityEnum.Realistic) { Graphics.Blit(renderTexture3, this.m_tempAuxDownsampleRTs[i], this.m_bloomMaterial, 10); } else { Graphics.Blit(renderTexture3, this.m_tempAuxDownsampleRTs[i], this.m_bloomMaterial, 11); } bool flag2 = false; if (this.m_tempFilterBuffer != null) { if (this.m_tempFilterBuffer.format != this.m_tempAuxDownsampleRTs[i].format || this.m_tempFilterBuffer.width != this.m_tempAuxDownsampleRTs[i].width || this.m_tempFilterBuffer.height != this.m_tempAuxDownsampleRTs[i].height) { this.CleanTempFilterRT(); flag2 = true; } } else { flag2 = true; } if (flag2) { this.CreateTempFilterRT(this.m_tempAuxDownsampleRTs[i]); } this.m_tempFilterBuffer.DiscardContents(); Graphics.Blit(this.m_tempAuxDownsampleRTs[i], this.m_tempFilterBuffer); if (this.m_debugToScreen == DebugToScreenEnum.TemporalFilter) { Graphics.Blit(this.m_tempAuxDownsampleRTs[i], dest); AmplifyUtils.ReleaseAllRT(); return; } } } else { Graphics.Blit(this.m_tempAuxDownsampleRTs[i - 1], this.m_tempAuxDownsampleRTs[i], this.m_bloomMaterial, 9); } if (this.m_gaussianSteps[i] > 0) { this.ApplyGaussianBlur(this.m_tempAuxDownsampleRTs[i], this.m_gaussianSteps[i], this.m_gaussianRadius[i], i == 0); if (this.m_temporalFilteringActive && this.m_debugToScreen == DebugToScreenEnum.TemporalFilter) { Graphics.Blit(this.m_tempAuxDownsampleRTs[i], dest); AmplifyUtils.ReleaseAllRT(); return; } } } renderTexture3 = this.m_tempAuxDownsampleRTs[this.m_featuresSourceId]; AmplifyUtils.ReleaseTempRenderTarget(tempRenderTarget); } if (this.m_bokehFilter.ApplyBokeh && this.m_bokehFilter.ApplyOnBloomSource) { this.m_bokehFilter.ApplyBokehFilter(renderTexture3, this.m_bloomMaterial); if (this.m_debugToScreen == DebugToScreenEnum.BokehFilter) { Graphics.Blit(renderTexture3, dest); AmplifyUtils.ReleaseAllRT(); return; } } bool flag3 = false; RenderTexture renderTexture4; if (this.m_separateFeaturesThreshold) { this.m_bloomParams.y = this.m_featuresThreshold; this.m_bloomMaterial.SetVector(AmplifyUtils.BloomParamsId, this.m_bloomParams); this.m_finalCompositionMaterial.SetVector(AmplifyUtils.BloomParamsId, this.m_bloomParams); renderTexture4 = AmplifyUtils.GetTempRenderTarget(renderTexture3.width, renderTexture3.height); flag3 = true; Graphics.Blit(renderTexture3, renderTexture4, this.m_bloomMaterial, 0); if (this.m_debugToScreen == DebugToScreenEnum.FeaturesThreshold) { Graphics.Blit(renderTexture4, dest); AmplifyUtils.ReleaseAllRT(); return; } } else { renderTexture4 = renderTexture3; } if (this.m_bokehFilter.ApplyBokeh && !this.m_bokehFilter.ApplyOnBloomSource) { if (!flag3) { flag3 = true; renderTexture4 = AmplifyUtils.GetTempRenderTarget(renderTexture3.width, renderTexture3.height); Graphics.Blit(renderTexture3, renderTexture4); } this.m_bokehFilter.ApplyBokehFilter(renderTexture4, this.m_bloomMaterial); if (this.m_debugToScreen == DebugToScreenEnum.BokehFilter) { Graphics.Blit(renderTexture4, dest); AmplifyUtils.ReleaseAllRT(); return; } } if (this.m_lensFlare.ApplyLensFlare && this.m_debugToScreen != DebugToScreenEnum.Bloom) { renderTexture = this.m_lensFlare.ApplyFlare(this.m_bloomMaterial, renderTexture4); this.ApplyGaussianBlur(renderTexture, this.m_lensFlare.LensFlareGaussianBlurAmount, 1f, false); if (this.m_debugToScreen == DebugToScreenEnum.LensFlare) { Graphics.Blit(renderTexture, dest); AmplifyUtils.ReleaseAllRT(); return; } } if (this.m_anamorphicGlare.ApplyLensGlare && this.m_debugToScreen != DebugToScreenEnum.Bloom) { renderTexture2 = AmplifyUtils.GetTempRenderTarget(renderTexture3.width, renderTexture3.height); this.m_anamorphicGlare.OnRenderImage(this.m_bloomMaterial, renderTexture4, renderTexture2, num); if (this.m_debugToScreen == DebugToScreenEnum.LensGlare) { Graphics.Blit(renderTexture2, dest); AmplifyUtils.ReleaseAllRT(); return; } } if (flag3) { AmplifyUtils.ReleaseTempRenderTarget(renderTexture4); } if (flag) { this.ApplyGaussianBlur(renderTexture3, this.m_gaussianSteps[0], this.m_gaussianRadius[0], false); } if (this.m_bloomDownsampleCount > 0) { if (this.m_bloomDownsampleCount == 1) { if (this.m_upscaleQuality == UpscaleQualityEnum.Realistic) { this.ApplyUpscale(); this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.MipResultsRTS[0], this.m_tempUpscaleRTs[0]); } else { this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.MipResultsRTS[0], this.m_tempAuxDownsampleRTs[0]); } this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.UpscaleWeightsStr[0], this.m_upscaleWeights[0]); } else if (this.m_upscaleQuality == UpscaleQualityEnum.Realistic) { this.ApplyUpscale(); for (int j = 0; j < this.m_bloomDownsampleCount; j++) { int num5 = this.m_bloomDownsampleCount - j - 1; this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.MipResultsRTS[num5], this.m_tempUpscaleRTs[j]); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.UpscaleWeightsStr[num5], this.m_upscaleWeights[j]); } } else { for (int k = 0; k < this.m_bloomDownsampleCount; k++) { int num6 = this.m_bloomDownsampleCount - 1 - k; this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.MipResultsRTS[num6], this.m_tempAuxDownsampleRTs[num6]); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.UpscaleWeightsStr[num6], this.m_upscaleWeights[k]); } } } else { this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.MipResultsRTS[0], renderTexture3); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.UpscaleWeightsStr[0], 1f); } if (this.m_debugToScreen == DebugToScreenEnum.Bloom) { this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.SourceContributionId, 0f); this.FinalComposition(0f, 1f, src, dest, 0); return; } if (this.m_bloomDownsampleCount > 1) { for (int l = 0; l < this.m_bloomDownsampleCount; l++) { this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensDirtWeightsStr[this.m_bloomDownsampleCount - l - 1], this.m_lensDirtWeights[l]); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensStarburstWeightsStr[this.m_bloomDownsampleCount - l - 1], this.m_lensStarburstWeights[l]); } } else { this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensDirtWeightsStr[0], this.m_lensDirtWeights[0]); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensStarburstWeightsStr[0], this.m_lensStarburstWeights[0]); } if (this.m_lensFlare.ApplyLensFlare) { this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.LensFlareRTId, renderTexture); } if (this.m_anamorphicGlare.ApplyLensGlare) { this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.LensGlareRTId, renderTexture2); } if (this.m_applyLensDirt) { this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.LensDirtRTId, this.m_lensDirtTexture); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensDirtStrengthId, this.m_lensDirtStrength * 1f); if (this.m_debugToScreen == DebugToScreenEnum.LensDirt) { this.FinalComposition(0f, 0f, src, dest, 2); return; } } if (this.m_applyLensStardurst) { this.m_starburstMat[0, 0] = Mathf.Cos(num); this.m_starburstMat[0, 1] = -Mathf.Sin(num); this.m_starburstMat[1, 0] = Mathf.Sin(num); this.m_starburstMat[1, 1] = Mathf.Cos(num); this.m_finalCompositionMaterial.SetMatrix(AmplifyUtils.LensFlareStarMatrixId, this.m_starburstMat); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensFlareStarburstStrengthId, this.m_lensStarburstStrength * 1f); this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.LensStarburstRTId, this.m_lensStardurstTex); if (this.m_debugToScreen == DebugToScreenEnum.LensStarburst) { this.FinalComposition(0f, 0f, src, dest, 1); return; } } if (this.m_targetTexture != null) { this.m_targetTexture.DiscardContents(); this.FinalComposition(0f, 1f, src, this.m_targetTexture, -1); Graphics.Blit(src, dest); } else { this.FinalComposition(1f, 1f, src, dest, -1); } }
private void OnRenderImage(RenderTexture src, RenderTexture dest) { if (!this.silentError) { if (!AmplifyUtils.IsInitialized) { AmplifyUtils.InitializeIds(); } if (this.m_highPrecision) { AmplifyUtils.EnsureKeywordEnabled(this.m_bloomMaterial, AmplifyUtils.HighPrecisionKeyword, true); AmplifyUtils.EnsureKeywordEnabled(this.m_finalCompositionMaterial, AmplifyUtils.HighPrecisionKeyword, true); AmplifyUtils.CurrentRTFormat = RenderTextureFormat.DefaultHDR; } else { AmplifyUtils.EnsureKeywordEnabled(this.m_bloomMaterial, AmplifyUtils.HighPrecisionKeyword, false); AmplifyUtils.EnsureKeywordEnabled(this.m_finalCompositionMaterial, AmplifyUtils.HighPrecisionKeyword, false); AmplifyUtils.CurrentRTFormat = RenderTextureFormat.Default; } float cameraRot = Mathf.Acos(Vector3.Dot(this.m_cameraTransform.right, Vector3.right)); if (Vector3.Cross(this.m_cameraTransform.right, Vector3.right).y > 0f) { cameraRot = -cameraRot; } RenderTexture renderTexture = null; RenderTexture texture2 = null; if (!this.m_highPrecision) { this.m_bloomRange.y = 1f / this.m_bloomRange.x; this.m_bloomMaterial.SetVector(AmplifyUtils.BloomRangeId, this.m_bloomRange); this.m_finalCompositionMaterial.SetVector(AmplifyUtils.BloomRangeId, this.m_bloomRange); } this.m_bloomParams.y = this.m_overallThreshold; this.m_bloomMaterial.SetVector(AmplifyUtils.BloomParamsId, this.m_bloomParams); this.m_finalCompositionMaterial.SetVector(AmplifyUtils.BloomParamsId, this.m_bloomParams); int num2 = 1; MainThresholdSizeEnum mainThresholdSize = this.m_mainThresholdSize; if (mainThresholdSize == MainThresholdSizeEnum.Half) { num2 = 2; } else if (mainThresholdSize == MainThresholdSizeEnum.Quarter) { num2 = 4; } RenderTexture tempRenderTarget = AmplifyUtils.GetTempRenderTarget(src.width / num2, src.height / num2); if (this.m_maskTexture == null) { Graphics.Blit(src, tempRenderTarget, this.m_bloomMaterial, 0); } else { this.m_bloomMaterial.SetTexture(AmplifyUtils.MaskTextureId, this.m_maskTexture); Graphics.Blit(src, tempRenderTarget, this.m_bloomMaterial, 1); } if (this.m_debugToScreen == DebugToScreenEnum.MainThreshold) { Graphics.Blit(tempRenderTarget, dest, this.m_bloomMaterial, 0x21); AmplifyUtils.ReleaseAllRT(); } else { bool flag = true; RenderTexture source = tempRenderTarget; if (this.m_bloomDownsampleCount > 0) { flag = false; int width = tempRenderTarget.width; int height = tempRenderTarget.height; int index = 0; while (true) { if (index >= this.m_bloomDownsampleCount) { source = this.m_tempAuxDownsampleRTs[this.m_featuresSourceId]; AmplifyUtils.ReleaseTempRenderTarget(tempRenderTarget); break; } this.m_tempDownsamplesSizes[index].x = width; this.m_tempDownsamplesSizes[index].y = height; width = (width + 1) >> 1; height = (height + 1) >> 1; this.m_tempAuxDownsampleRTs[index] = AmplifyUtils.GetTempRenderTarget(width, height); if (index != 0) { Graphics.Blit(this.m_tempAuxDownsampleRTs[index - 1], this.m_tempAuxDownsampleRTs[index], this.m_bloomMaterial, 9); } else if (!this.m_temporalFilteringActive || (this.m_gaussianSteps[index] != 0)) { if (this.m_upscaleQuality == UpscaleQualityEnum.Realistic) { Graphics.Blit(source, this.m_tempAuxDownsampleRTs[index], this.m_bloomMaterial, 10); } else { Graphics.Blit(source, this.m_tempAuxDownsampleRTs[index], this.m_bloomMaterial, 11); } } else { if ((this.m_tempFilterBuffer == null) || !this.m_temporalFilteringActive) { if (this.m_upscaleQuality == UpscaleQualityEnum.Realistic) { Graphics.Blit(source, this.m_tempAuxDownsampleRTs[index], this.m_bloomMaterial, 10); } else { Graphics.Blit(source, this.m_tempAuxDownsampleRTs[index], this.m_bloomMaterial, 11); } } else { float num6 = this.m_temporalFilteringCurve.Evaluate(this.m_temporalFilteringValue); this.m_bloomMaterial.SetFloat(AmplifyUtils.TempFilterValueId, num6); this.m_bloomMaterial.SetTexture(AmplifyUtils.AnamorphicRTS[0], this.m_tempFilterBuffer); if (this.m_upscaleQuality == UpscaleQualityEnum.Realistic) { Graphics.Blit(source, this.m_tempAuxDownsampleRTs[index], this.m_bloomMaterial, 12); } else { Graphics.Blit(source, this.m_tempAuxDownsampleRTs[index], this.m_bloomMaterial, 13); } } bool flag2 = false; if (this.m_tempFilterBuffer == null) { flag2 = true; } else if ((this.m_tempFilterBuffer.format != this.m_tempAuxDownsampleRTs[index].format) || ((this.m_tempFilterBuffer.width != this.m_tempAuxDownsampleRTs[index].width) || (this.m_tempFilterBuffer.height != this.m_tempAuxDownsampleRTs[index].height))) { this.CleanTempFilterRT(); flag2 = true; } if (flag2) { this.CreateTempFilterRT(this.m_tempAuxDownsampleRTs[index]); } this.m_tempFilterBuffer.DiscardContents(); Graphics.Blit(this.m_tempAuxDownsampleRTs[index], this.m_tempFilterBuffer); if (this.m_debugToScreen == DebugToScreenEnum.TemporalFilter) { Graphics.Blit(this.m_tempAuxDownsampleRTs[index], dest); AmplifyUtils.ReleaseAllRT(); return; } } if (this.m_gaussianSteps[index] > 0) { this.ApplyGaussianBlur(this.m_tempAuxDownsampleRTs[index], this.m_gaussianSteps[index], this.m_gaussianRadius[index], index == 0); if (this.m_temporalFilteringActive && (this.m_debugToScreen == DebugToScreenEnum.TemporalFilter)) { Graphics.Blit(this.m_tempAuxDownsampleRTs[index], dest); AmplifyUtils.ReleaseAllRT(); return; } } index++; } } if (this.m_bokehFilter.ApplyBokeh && this.m_bokehFilter.ApplyOnBloomSource) { this.m_bokehFilter.ApplyBokehFilter(source, this.m_bloomMaterial); if (this.m_debugToScreen == DebugToScreenEnum.BokehFilter) { Graphics.Blit(source, dest); AmplifyUtils.ReleaseAllRT(); return; } } RenderTexture texture5 = null; bool flag3 = false; if (!this.m_separateFeaturesThreshold) { texture5 = source; } else { this.m_bloomParams.y = this.m_featuresThreshold; this.m_bloomMaterial.SetVector(AmplifyUtils.BloomParamsId, this.m_bloomParams); this.m_finalCompositionMaterial.SetVector(AmplifyUtils.BloomParamsId, this.m_bloomParams); texture5 = AmplifyUtils.GetTempRenderTarget(source.width, source.height); flag3 = true; Graphics.Blit(source, texture5, this.m_bloomMaterial, 0); if (this.m_debugToScreen == DebugToScreenEnum.FeaturesThreshold) { Graphics.Blit(texture5, dest); AmplifyUtils.ReleaseAllRT(); return; } } if (this.m_bokehFilter.ApplyBokeh && !this.m_bokehFilter.ApplyOnBloomSource) { if (!flag3) { flag3 = true; texture5 = AmplifyUtils.GetTempRenderTarget(source.width, source.height); Graphics.Blit(source, texture5); } this.m_bokehFilter.ApplyBokehFilter(texture5, this.m_bloomMaterial); if (this.m_debugToScreen == DebugToScreenEnum.BokehFilter) { Graphics.Blit(texture5, dest); AmplifyUtils.ReleaseAllRT(); return; } } if (this.m_lensFlare.ApplyLensFlare && (this.m_debugToScreen != DebugToScreenEnum.Bloom)) { renderTexture = this.m_lensFlare.ApplyFlare(this.m_bloomMaterial, texture5); this.ApplyGaussianBlur(renderTexture, this.m_lensFlare.LensFlareGaussianBlurAmount, 1f, false); if (this.m_debugToScreen == DebugToScreenEnum.LensFlare) { Graphics.Blit(renderTexture, dest); AmplifyUtils.ReleaseAllRT(); return; } } if (this.m_anamorphicGlare.ApplyLensGlare && (this.m_debugToScreen != DebugToScreenEnum.Bloom)) { texture2 = AmplifyUtils.GetTempRenderTarget(source.width, source.height); this.m_anamorphicGlare.OnRenderImage(this.m_bloomMaterial, texture5, texture2, cameraRot); if (this.m_debugToScreen == DebugToScreenEnum.LensGlare) { Graphics.Blit(texture2, dest); AmplifyUtils.ReleaseAllRT(); return; } } if (flag3) { AmplifyUtils.ReleaseTempRenderTarget(texture5); } if (flag) { this.ApplyGaussianBlur(source, this.m_gaussianSteps[0], this.m_gaussianRadius[0], false); } if (this.m_bloomDownsampleCount <= 0) { this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.MipResultsRTS[0], source); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.UpscaleWeightsStr[0], 1f); } else if (this.m_bloomDownsampleCount == 1) { if (this.m_upscaleQuality != UpscaleQualityEnum.Realistic) { this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.MipResultsRTS[0], this.m_tempAuxDownsampleRTs[0]); } else { this.ApplyUpscale(); this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.MipResultsRTS[0], this.m_tempUpscaleRTs[0]); } this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.UpscaleWeightsStr[0], this.m_upscaleWeights[0]); } else if (this.m_upscaleQuality != UpscaleQualityEnum.Realistic) { for (int i = 0; i < this.m_bloomDownsampleCount; i++) { int index = (this.m_bloomDownsampleCount - 1) - i; this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.MipResultsRTS[index], this.m_tempAuxDownsampleRTs[index]); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.UpscaleWeightsStr[index], this.m_upscaleWeights[i]); } } else { this.ApplyUpscale(); for (int i = 0; i < this.m_bloomDownsampleCount; i++) { int index = (this.m_bloomDownsampleCount - i) - 1; this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.MipResultsRTS[index], this.m_tempUpscaleRTs[i]); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.UpscaleWeightsStr[index], this.m_upscaleWeights[i]); } } if (this.m_debugToScreen == DebugToScreenEnum.Bloom) { this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.SourceContributionId, 0f); this.FinalComposition(0f, 1f, src, dest, 0); } else { if (this.m_bloomDownsampleCount <= 1) { this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensDirtWeightsStr[0], this.m_lensDirtWeights[0]); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensStarburstWeightsStr[0], this.m_lensStarburstWeights[0]); } else { for (int i = 0; i < this.m_bloomDownsampleCount; i++) { this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensDirtWeightsStr[(this.m_bloomDownsampleCount - i) - 1], this.m_lensDirtWeights[i]); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensStarburstWeightsStr[(this.m_bloomDownsampleCount - i) - 1], this.m_lensStarburstWeights[i]); } } if (this.m_lensFlare.ApplyLensFlare) { this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.LensFlareRTId, renderTexture); } if (this.m_anamorphicGlare.ApplyLensGlare) { this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.LensGlareRTId, texture2); } if (this.m_applyLensDirt) { this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.LensDirtRTId, this.m_lensDirtTexture); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensDirtStrengthId, this.m_lensDirtStrength * 1f); if (this.m_debugToScreen == DebugToScreenEnum.LensDirt) { this.FinalComposition(0f, 0f, src, dest, 2); return; } } if (this.m_applyLensStardurst) { this.m_starburstMat[0, 0] = Mathf.Cos(cameraRot); this.m_starburstMat[0, 1] = -Mathf.Sin(cameraRot); this.m_starburstMat[1, 0] = Mathf.Sin(cameraRot); this.m_starburstMat[1, 1] = Mathf.Cos(cameraRot); this.m_finalCompositionMaterial.SetMatrix(AmplifyUtils.LensFlareStarMatrixId, this.m_starburstMat); this.m_finalCompositionMaterial.SetFloat(AmplifyUtils.LensFlareStarburstStrengthId, this.m_lensStarburstStrength * 1f); this.m_finalCompositionMaterial.SetTexture(AmplifyUtils.LensStarburstRTId, this.m_lensStardurstTex); if (this.m_debugToScreen == DebugToScreenEnum.LensStarburst) { this.FinalComposition(0f, 0f, src, dest, 1); return; } } if (this.m_targetTexture == null) { this.FinalComposition(1f, 1f, src, dest, -1); } else { this.m_targetTexture.DiscardContents(); this.FinalComposition(0f, 1f, src, this.m_targetTexture, -1); Graphics.Blit(src, dest); } } } } }