【Unity3d脚本】卡通渲染效果脚本
更新:HHH   时间:2023-1-7


@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; 
      } 
     } 
    } 
   


返回游戏开发教程...