@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; } } }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。