@script ExecuteInEditMode
class EdgeDetectEffectNormals extends ImageEffectBase
{
var renderSceneShader : Shader;
private var renderTexture : RenderTexture;
private var shaderCamera : GameObject;
function OnDisable() {
super.OnDisable();
DestroyImmediate (shaderCamera);
if (renderTexture != null) {
RenderTexture.ReleaseTemporary (renderTexture);
renderTexture = null;
} //Unity3D教程手册:www.unitymanual.com
}
function OnPreRender()
{
if (!enabled || !gameObject.active)
return;
if (renderTexture != null) {
RenderTexture.ReleaseTemporary (renderTexture);
renderTexture = null;
}
renderTexture = RenderTexture.GetTemporary (camera.pixelWidth, camera.pixelHeight, 16);
if (!shaderCamera) {
shaderCamera = new GameObject("ShaderCamera", Camera);
shaderCamera.camera.enabled = false;
shaderCamera.hideFlags = HideFlags.HideAndDontSave;
}
//Unity3D脚本:www.unitymanual.com
var cam = shaderCamera.camera;
cam.CopyFrom (camera);
cam.backgroundColor = Color(1,1,1,1);
cam.clearFlags = CameraClearFlags.SolidColor;
cam.targetTexture = renderTexture;
cam.RenderWithShader (renderSceneShader, "RenderType");
}
function OnRenderImage (source : RenderTexture, destination : RenderTexture)
{
var mat = material;
mat.SetTexture("_NormalsTexture", renderTexture);
ImageEffects.BlitWithMaterial (mat, source, destination);
if (renderTexture != null) {
RenderTexture.ReleaseTemporary (renderTexture);
renderTexture = null;
}
}
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。