You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/Top Down/Standard Assets/Image Effects (Pro Only)/EdgeDetectEffectNormals.js

66 lines
1.7 KiB
JavaScript

2 months ago
#pragma strict
@script ExecuteInEditMode
@script RequireComponent (Camera)
@script AddComponentMenu ("Image Effects/Edge Detection (Geometry)")
enum EdgeDetectMode {
Thin = 0,
Thick = 1,
}
class EdgeDetectEffectNormals extends PostEffectsBase {
public var mode : EdgeDetectMode = EdgeDetectMode.Thin;
public var sensitivityDepth : float = 1.0;
public var sensitivityNormals : float = 1.0;
public var edgesOnly : float = 0.0;
public var edgesOnlyBgColor : Color = Color.white;
public var edgeDetectShader : Shader;
private var edgeDetectMaterial : Material = null;
function OnDisable()
{
if (edgeDetectMaterial)
DestroyImmediate(edgeDetectMaterial);
}
function CheckResources () : boolean {
CheckSupport (true);
edgeDetectMaterial = CheckShaderAndCreateMaterial (edgeDetectShader,edgeDetectMaterial);
if(!isSupported)
ReportAutoDisable ();
return isSupported;
}
@ImageEffectOpaque
function OnRenderImage (source : RenderTexture, destination : RenderTexture) {
if(CheckResources()==false) {
Graphics.Blit (source, destination);
return;
}
var sensitivity : Vector2 = Vector2 (sensitivityDepth, sensitivityNormals);
source.filterMode = FilterMode.Point;
edgeDetectMaterial.SetVector ("sensitivity", Vector4 (sensitivity.x, sensitivity.y, 1.0, sensitivity.y));
edgeDetectMaterial.SetFloat ("_BgFade", edgesOnly);
var vecCol : Vector4 = edgesOnlyBgColor;
edgeDetectMaterial.SetVector ("_BgColor", vecCol);
if (mode == EdgeDetectMode.Thin) {
Graphics.Blit (source, destination, edgeDetectMaterial, 0);
}
else {
Graphics.Blit (source, destination, edgeDetectMaterial, 1);
}
}
}