ShaderToy 转换到Unity中

ShaderToy 我们都知道它是一个神奇的网站,在上面有着许多炫酷的特效,各路大神集聚。但是里面shader都是GLSL写的。

如果我们想把ShaderToy上的特效移植到Unity中就需要我们手动去修改代码,修改方法无非就是:定义一系列宏来和ShaderToy中的GLSL衔接,如下模板:

Shader "Shadertoy/Template" { Properties{iMouse ("Mouse Pos", Vector) = (100, 100, 0, 0)iChannel0("iChannel0", 2D) = "white" {}  iChannelResolution0 ("iChannelResolution0", Vector) = (100, 100, 0, 0)}CGINCLUDE    #include "UnityCG.cginc"   #pragma target 3.0      #define vec2 float2#define vec3 float3#define vec4 float4#define mat2 float2x2#define mat3 float3x3#define mat4 float4x4#define iGlobalTime _Time.y#define mod fmod#define mix lerp#define fract frac#define texture2D tex2D#define iResolution _ScreenParams#define gl_FragCoord ((_iParam.scrPos.xy/_iParam.scrPos.w) * _ScreenParams.xy)#define PI2 6.28318530718#define pi 3.14159265358979#define halfpi (pi * 0.5)#define oneoverpi (1.0 / pi)fixed4 iMouse;sampler2D iChannel0;fixed4 iChannelResolution0;struct v2f {    float4 pos : SV_POSITION;    float4 scrPos : TEXCOORD0;   };              v2f vert(appdata_base v) {  v2f o;o.pos = mul (UNITY_MATRIX_MVP, v.vertex);o.scrPos = ComputeScreenPos(o.pos);return o;}  vec4 main(vec2 fragCoord);fixed4 frag(v2f _iParam) : COLOR0 { vec2 fragCoord = gl_FragCoord;return main(gl_FragCoord);}  vec4 main(vec2 fragCoord) {return vec4(1, 1, 1, 1);}ENDCG    SubShader {    Pass {    CGPROGRAM    #pragma vertex vert    #pragma fragment frag    #pragma fragmentoption ARB_precision_hint_fastest     ENDCG    }    }     FallBack Off
}

但是也有点太麻烦了,此时我们就可以借助GitHub上的这个工具自动转换,方便太多了。

下面就简单介绍一下使用方法:

一:首先克隆该项目到本地,用Unity打开

里面有一些例子:

二:在ShaderToy上找到自己喜欢的特效,并且克隆代码

三:在Unity 打开 Window —> ShaderMan,并且copy刚才的代码到输入框里,点击转换即可在ShaderToy文件夹下找到转换后的shader文件

ShaderToy 转换到 Unity中(超级方便的一个工具)相关推荐

  1. Unity中根据矩阵判断一个点在自身的哪一侧

    如果你还不是很理解矩阵的含义那么请转到 https://blog.csdn.net/qq_39426265/article/details/101373494 问题起源 在Unity自带的函数中并没有 ...

  2. 如何在 Unity 中使用 Probuilder 设计一个简单的关卡

    通常,当您开始在 Unity 中开发游戏时,您需要一个精简版的环境,您可以在其中移动角色. ProBuilder 允许您快速创建 3D 关卡和原型,以及创建基本的 3D 模型,而无需离开 Unity. ...

  3. 各Rendering Path技术以及其在Unity中的实现

    Rendering Path其实指的就是渲染场景中光照的方式.由于场景中的光源可能很多,甚至是动态的光源.所以怎么在速度和效果上达到一个最好的结果确实很困难.以当今的显卡发展为契机,人们才衍生出了这么 ...

  4. 【工具】Unity中如何自动化对模型减面?

    本文首发公众号洪流学堂.洪流学堂,让你快人几步.你好,我是你的技术探路者大智. 在Unity中,模型的面数对性能的影响非常大.特别是工业领域,工业模型面数通常非常多,在Unity中直接使用如果能跑起来 ...

  5. Unity 中的坐标系

    参考 1.Shadow Map 原理和改进 2.[OpenGL]02 - OpenGL中的坐标系 3.矩阵理论 (这个是京东地址) 4.维基百科(文中的数学概念出处) 5.msdn mul 6.msd ...

  6. Unity中的AI算法和实现2-有限状态机FSM(上)

    本文分享Unity中的AI算法和实现2-有限状态机FSM(上) 在上一篇文章中, 我们基于Waypoint构建了一个最简单的AI怪物, 这个怪物可以在几个点之间巡逻. 本篇文章会在此基础之上, 添加怪 ...

  7. Unity中导入外部模型与预制件

    前言: 在Unity3D的 Asset Store  中下载的包(package)资源, 其默认位置是: C:\Users\用户名\AppData\Roaming\Unity\Asset Store- ...

  8. unity中的基本材质使用

    在unity中我们可以使用unity本身自带的材质来改变物体的颜色,和我们使用法线和高度,光源遮罩来完善我们的物体的质感和其他各种的功能 在unity中我们如何创建一个材质,首先我们在资源管理界面右键 ...

  9. unity中打开网页

    在unity中打开网页需要一个插件 这是下载地址:https://download.csdn.net/download/qq_33515628/10409002 只需要把插件导入unity中,里面已经 ...

最新文章

  1. 服务器系统摁c,如何系统有效学习c服务器开发
  2. 对Flush原理的个人理解
  3. Bootstrap日期插件之Datetimepicker修改默认语言(附带源码)
  4. python按键盘上哪个键运行_python通过按下键盘特定按键,开始运行python文件
  5. Linux 高级存储管理
  6. linux特殊权限位之setuid、setgid和sticky
  7. LeetCode MySQL 1633. 各赛事的用户注册率
  8. xgboost实例_XGBoost超详细推导,终于有人讲明白了!
  9. t4 tornado 模板
  10. java socket 双网卡_java获取双网卡ip地址
  11. Android 深入ViewPager补间动画,实现类京东商城首页广告Banner切换效果
  12. 在执行某个行为时,其大脑是否产生了对应的稳定脑神经模式映射?如果存在稳定映射,是否能运用机器学习方法发现未知行为神经回路?
  13. 金融科技领域的安全威胁及金融科技安全分析
  14. 修复计算机之后东西还在吗,硬盘分区表修复后文件还在吗
  15. 华为云服务器参数配置文件,华为云服务器参数配置文件
  16. IT 相关常见英文缩写一览
  17. 【学习OpenCV4】分水岭算法详解
  18. 中泰证券钢铁行业数据库
  19. 安全集成服务资质是什么都有哪些等级?申请安全集成服务资质认证有什么好处?
  20. 西部数码服务器未续费,域名到期了,如何续费?

热门文章

  1. 光电耦合器如何选型以及型号推荐
  2. 上拉刷新下拉加载的实现
  3. 整理几个叮咚抢菜、美团买菜助手
  4. 仿真软件测试工程师麦克,仿真工程师面试经验 - 共61条真实仿真工程师面试经验分享 - 职业圈...
  5. 【自控原理】第四章 根轨迹法
  6. 如何用div+css布局页面
  7. X版Dr.COM校园网使用路由器上网
  8. mysql网络数据库操作模块_15.mysql数据库操作与Paramiko模块
  9. QlExpress 性能优化(二)
  10. 解决单点故障 - 有状态服务的高可用