卡通渲染效果脚本
来源:互联网 发布:淘宝店高达 编辑:程序博客网 时间:2024/04/20 07:08
- @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;
- }
- }
-
- 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;
- }
-
- 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;
- }
- }
- }