unity "EH_SampleShader/ToonShader" 把图片效果输出到 png
时间: 2023-12-28 07:04:59 浏览: 29
你可以使用Unity自带的RenderTexture来将ToonShader的效果输出为PNG图片。下面是一个简单的示例代码:
```csharp
using UnityEngine;
public class ToonShaderExporter : MonoBehaviour
{
public Shader toonShader;
public RenderTexture renderTexture;
public string outputFileName = "output.png";
private void Start()
{
// 创建RenderTexture,用于将ToonShader效果渲染到其中
renderTexture = new RenderTexture(Screen.width, Screen.height, 24);
renderTexture.format = RenderTextureFormat.ARGB32;
renderTexture.Create();
// 将相机的TargetTexture设置为renderTexture
Camera.main.targetTexture = renderTexture;
// 将ToonShader赋给相机的Material
Camera.main.SetReplacementShader(toonShader, "");
// 渲染相机
Camera.main.Render();
// 恢复相机的TargetTexture为空
Camera.main.targetTexture = null;
// 从renderTexture中读取像素数据
Texture2D texture = new Texture2D(renderTexture.width, renderTexture.height, TextureFormat.RGB24, false);
RenderTexture.active = renderTexture;
texture.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);
texture.Apply();
RenderTexture.active = null;
// 将像素数据保存为PNG图片
byte[] bytes = texture.EncodeToPNG();
System.IO.File.WriteAllBytes(outputFileName, bytes);
// 销毁renderTexture和texture
Destroy(renderTexture);
Destroy(texture);
}
}
```
将上述代码添加到一个空物体上,并将ToonShader赋给toonShader变量。然后运行游戏,代码会将ToonShader的效果渲染到RenderTexture,并将RenderTexture保存为PNG图片。最终的PNG图片会保存在Unity项目的根目录下,文件名为output.png。你可以根据需要修改输出文件名和路径。