Unity URP - ShaderToy RenderFeature
在Unity中使用ShaderToy网站上的shader方式:
1. 之前的文章中提到的ShaderToy Renderer : ShaderToy shader快速移植实现
- 最终的渲染结果是一张RenderTexture,可以直接使用;
- 也可以使用提供的对应的Material.
2. 这篇文章中会介绍如何在URP RenderFeature中使用ShaerToy Shader
- 大概说明
-
- 转换Shader过程这里就不详细说明了,具体参考https://www.lazyun.cn/default/10.html
-
- 还是以
ScriptableObject为主要载体,其中记录了多个Channel之间的链接关系,以及Channel使用的Shader,这里直接改用Shaer替换了之前的Material,减少移植的手工操作,如下图所示:

- 还是以
-
- RenderFeature的设置,如下图中所示

- RenderFeature的设置,如下图中所示
- RenderFeature参数详细说明
Draw To Screen: 是否直接画到屏幕上,这个可以用于快速调试Use Screen Mouse: 是否直接使用屏幕鼠标坐标用于交互Texture Scale: RenderTexture的全局缩放比率,降低RenderTexture分辨率缓解渲染和内存压力Final Texture Name: Shader中的Global Texture名称,可以在Shader中直接采样该Texture获取ShaderToy的最终渲染结果用于进一步加工Shader Toy Asset: ShaderToy Shader的主要载体Default RenderTexture Info: 默认的ShaderToy使用的RenderTexture参数,可以在具体Channel中override覆写。Texture Size: RenderTexture的尺寸,最终的尺寸将是这个值和Texture Scale的乘积,需要注意的是: 如果设置为零,将使用屏幕的宽高作为尺寸Format: RenderTexture的格式,默认为ARGB Half, 如果转换结果与ShaderToy网站差距很大,但没其他线索的情况下,可以参数修改这个值Filter Type: 默认BilinearWrap Mode: 默认ClampDepth BufferDepth Buffer
最后放上源码链接:https://github.com/LazyunGame/ShaderToyRenderFeature
