gutterball-3/Gutterball 3/Assets/Standard Assets/Image Effects (Pro Only)/ContrastEnhance.js
SkunkStudios 71779ef7ac New Version 1.6
New 125 balls & powerups.
Improved graphics.
2025-05-07 06:18:40 +07:00

64 lines
No EOL
2.3 KiB
JavaScript

#pragma strict
@script ExecuteInEditMode
@script RequireComponent(Camera)
@script AddComponentMenu("Image Effects/Contrast Enhance (Unsharp Mask)")
class ContrastEnhance extends PostEffectsBase {
public var intensity : float = 0.5;
public var threshhold : float = 0.0;
private var separableBlurMaterial : Material;
private var contrastCompositeMaterial : Material;
public var blurSpread : float = 1.0;
public var separableBlurShader : Shader = null;
public var contrastCompositeShader : Shader = null;
function CheckResources () : boolean {
CheckSupport (false);
contrastCompositeMaterial = CheckShaderAndCreateMaterial (contrastCompositeShader, contrastCompositeMaterial);
separableBlurMaterial = CheckShaderAndCreateMaterial (separableBlurShader, separableBlurMaterial);
if(!isSupported)
ReportAutoDisable ();
return isSupported;
}
function OnRenderImage (source : RenderTexture, destination : RenderTexture) {
if(CheckResources()==false) {
Graphics.Blit (source, destination);
return;
}
var halfRezColor : RenderTexture = RenderTexture.GetTemporary (source.width / 2.0, source.height / 2.0, 0);
var quarterRezColor : RenderTexture = RenderTexture.GetTemporary (source.width / 4.0, source.height / 4.0, 0);
var secondQuarterRezColor : RenderTexture = RenderTexture.GetTemporary (source.width / 4.0, source.height / 4.0, 0);
// ddownsample
Graphics.Blit (source, halfRezColor);
Graphics.Blit (halfRezColor, quarterRezColor);
// blur
separableBlurMaterial.SetVector ("offsets", Vector4 (0.0, (blurSpread * 1.0) / quarterRezColor.height, 0.0, 0.0));
Graphics.Blit (quarterRezColor, secondQuarterRezColor, separableBlurMaterial);
separableBlurMaterial.SetVector ("offsets", Vector4 ((blurSpread * 1.0) / quarterRezColor.width, 0.0, 0.0, 0.0));
Graphics.Blit (secondQuarterRezColor, quarterRezColor, separableBlurMaterial);
// composite
contrastCompositeMaterial.SetTexture ("_MainTexBlurred", quarterRezColor);
contrastCompositeMaterial.SetFloat ("intensity", intensity);
contrastCompositeMaterial.SetFloat ("threshhold", threshhold);
Graphics.Blit (source, destination, contrastCompositeMaterial);
RenderTexture.ReleaseTemporary (halfRezColor);
RenderTexture.ReleaseTemporary (quarterRezColor);
RenderTexture.ReleaseTemporary (secondQuarterRezColor);
}
}