卡通渲染效果脚本

来源:互联网 发布:淘宝店高达 编辑:程序博客网 时间:2024/04/20 07:08
  1. @script ExecuteInEditMode  
  2. class EdgeDetectEffectNormals extends ImageEffectBase  
  3. {  
  4.  var renderSceneShader : Shader;  
  5.    
  6.  private var renderTexture : RenderTexture;  
  7.  private var shaderCamera : GameObject;  
  8.    
  9.  function OnDisable() {  
  10.   super.OnDisable();  
  11.   DestroyImmediate (shaderCamera);  
  12.   if (renderTexture != null) {  
  13.    RenderTexture.ReleaseTemporary (renderTexture);  
  14.    renderTexture = null;  
  15.   }  
  16.  }  
  17.    
  18.  function OnPreRender()  
  19.  {  
  20.   if (!enabled || !gameObject.active)  
  21.    return;  
  22.      
  23.   if (renderTexture != null) {  
  24.    RenderTexture.ReleaseTemporary (renderTexture);  
  25.    renderTexture = null;  
  26.   }  
  27.   renderTexture = RenderTexture.GetTemporary (camera.pixelWidth, camera.pixelHeight, 16);  
  28.   if (!shaderCamera) {  
  29.    shaderCamera = new GameObject("ShaderCamera", Camera);  
  30.    shaderCamera.camera.enabled = false;  
  31.    shaderCamera.hideFlags = HideFlags.HideAndDontSave;  
  32.   }  
  33.     
  34.   var cam = shaderCamera.camera;  
  35.   cam.CopyFrom (camera);  
  36.   cam.backgroundColor = Color(1,1,1,1);  
  37.   cam.clearFlags = CameraClearFlags.SolidColor;  
  38.   cam.targetTexture = renderTexture;  
  39.   cam.RenderWithShader (renderSceneShader, "RenderType");   
  40.  }  
  41.    
  42.  function OnRenderImage (source : RenderTexture, destination : RenderTexture)  
  43.  {  
  44.   var mat = material;  
  45.   mat.SetTexture("_NormalsTexture", renderTexture);  
  46.   ImageEffects.BlitWithMaterial (mat, source, destination);  
  47.   if (renderTexture != null) {  
  48.    RenderTexture.ReleaseTemporary (renderTexture);  
  49.    renderTexture = null;  
  50.   }  
  51.  }  
  52. }  
原创粉丝点击