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)/PostEffectsBase.js

204 lines
5.3 KiB
JavaScript

1 month ago
#pragma strict
@script ExecuteInEditMode
@script RequireComponent (Camera)
class PostEffectsBase extends MonoBehaviour {
protected var supportHDRTextures : boolean = true;
protected var isSupported : boolean = true;
function CheckShaderAndCreateMaterial (s : Shader, m2Create : Material) : Material {
if (!s) {
Debug.Log("Missing shader in " + this.ToString ());
enabled = false;
return null;
}
if (s.isSupported && m2Create && m2Create.shader == s)
return m2Create;
if (!s.isSupported) {
NotSupported ();
Debug.LogError("The shader " + s.ToString() + " on effect "+this.ToString()+" is not supported on this platform!");
return null;
}
else {
m2Create = new Material (s);
m2Create.hideFlags = HideFlags.DontSave;
if (m2Create)
return m2Create;
else return null;
}
}
function CreateMaterial (s : Shader, m2Create : Material) : Material {
if (!s) {
Debug.Log ("Missing shader in " + this.ToString ());
return null;
}
if (m2Create && (m2Create.shader == s) && (s.isSupported))
return m2Create;
if (!s.isSupported) {
return null;
}
else {
m2Create = new Material (s);
m2Create.hideFlags = HideFlags.DontSave;
if (m2Create)
return m2Create;
else return null;
}
}
function OnEnable() {
isSupported = true;
}
// deprecated but needed for old effects to survive upgrade
function CheckSupport () : boolean {
return CheckSupport (false);
}
function CheckResources () : boolean {
Debug.LogWarning ("CheckResources () for " + this.ToString() + " should be overwritten.");
return isSupported;
}
function Start () {
CheckResources ();
}
function CheckSupport (needDepth : boolean) : boolean {
isSupported = true;
supportHDRTextures = SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.ARGBHalf);
if (!SystemInfo.supportsImageEffects || !SystemInfo.supportsRenderTextures) {
NotSupported ();
return false;
}
if(needDepth && !SystemInfo.SupportsRenderTextureFormat (RenderTextureFormat.Depth)) {
NotSupported ();
return false;
}
if(needDepth)
camera.depthTextureMode |= DepthTextureMode.Depth;
return true;
}
function CheckSupport (needDepth : boolean, needHdr : boolean) : boolean {
if(!CheckSupport(needDepth))
return false;
if(needHdr && !supportHDRTextures) {
NotSupported ();
return false;
}
return true;
}
function ReportAutoDisable () {
Debug.LogWarning ("The image effect " + this.ToString() + " has been disabled as it's not supported on the current platform.");
}
// deprecated but needed for old effects to survive upgrading
function CheckShader (s : Shader) : boolean {
Debug.Log("The shader " + s.ToString () + " on effect "+ this.ToString () + " is not part of the Unity 3.2+ effects suite anymore. For best performance and quality, please ensure you are using the latest Standard Assets Image Effects (Pro only) package.");
if (!s.isSupported) {
NotSupported ();
return false;
}
else {
return false;
}
}
function NotSupported () {
enabled = false;
isSupported = false;
return;
}
function DrawBorder (dest : RenderTexture, material : Material ) {
var x1 : float;
var x2 : float;
var y1 : float;
var y2 : float;
RenderTexture.active = dest;
var invertY : boolean = true; // source.texelSize.y < 0.0f;
// Set up the simple Matrix
GL.PushMatrix();
GL.LoadOrtho();
for (var i : int = 0; i < material.passCount; i++)
{
material.SetPass(i);
var y1_ : float; var y2_ : float;
if (invertY)
{
y1_ = 1.0; y2_ = 0.0;
}
else
{
y1_ = 0.0; y2_ = 1.0;
}
// left
x1 = 0.0;
x2 = 0.0 + 1.0/(dest.width*1.0);
y1 = 0.0;
y2 = 1.0;
GL.Begin(GL.QUADS);
GL.TexCoord2(0.0, y1_); GL.Vertex3(x1, y1, 0.1);
GL.TexCoord2(1.0, y1_); GL.Vertex3(x2, y1, 0.1);
GL.TexCoord2(1.0, y2_); GL.Vertex3(x2, y2, 0.1);
GL.TexCoord2(0.0, y2_); GL.Vertex3(x1, y2, 0.1);
// right
x1 = 1.0 - 1.0/(dest.width*1.0);
x2 = 1.0;
y1 = 0.0;
y2 = 1.0;
GL.TexCoord2(0.0, y1_); GL.Vertex3(x1, y1, 0.1);
GL.TexCoord2(1.0, y1_); GL.Vertex3(x2, y1, 0.1);
GL.TexCoord2(1.0, y2_); GL.Vertex3(x2, y2, 0.1);
GL.TexCoord2(0.0, y2_); GL.Vertex3(x1, y2, 0.1);
// top
x1 = 0.0;
x2 = 1.0;
y1 = 0.0;
y2 = 0.0 + 1.0/(dest.height*1.0);
GL.TexCoord2(0.0, y1_); GL.Vertex3(x1, y1, 0.1);
GL.TexCoord2(1.0, y1_); GL.Vertex3(x2, y1, 0.1);
GL.TexCoord2(1.0, y2_); GL.Vertex3(x2, y2, 0.1);
GL.TexCoord2(0.0, y2_); GL.Vertex3(x1, y2, 0.1);
// bottom
x1 = 0.0;
x2 = 1.0;
y1 = 1.0 - 1.0/(dest.height*1.0);
y2 = 1.0;
GL.TexCoord2(0.0, y1_); GL.Vertex3(x1, y1, 0.1);
GL.TexCoord2(1.0, y1_); GL.Vertex3(x2, y1, 0.1);
GL.TexCoord2(1.0, y2_); GL.Vertex3(x2, y2, 0.1);
GL.TexCoord2(0.0, y2_); GL.Vertex3(x1, y2, 0.1);
GL.End();
}
GL.PopMatrix();
}
}