ShaderToy 转换到 Unity中(超级方便的一个工具)
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中(超级方便的一个工具)相关推荐
- Unity中根据矩阵判断一个点在自身的哪一侧
如果你还不是很理解矩阵的含义那么请转到 https://blog.csdn.net/qq_39426265/article/details/101373494 问题起源 在Unity自带的函数中并没有 ...
- 如何在 Unity 中使用 Probuilder 设计一个简单的关卡
通常,当您开始在 Unity 中开发游戏时,您需要一个精简版的环境,您可以在其中移动角色. ProBuilder 允许您快速创建 3D 关卡和原型,以及创建基本的 3D 模型,而无需离开 Unity. ...
- 各Rendering Path技术以及其在Unity中的实现
Rendering Path其实指的就是渲染场景中光照的方式.由于场景中的光源可能很多,甚至是动态的光源.所以怎么在速度和效果上达到一个最好的结果确实很困难.以当今的显卡发展为契机,人们才衍生出了这么 ...
- 【工具】Unity中如何自动化对模型减面?
本文首发公众号洪流学堂.洪流学堂,让你快人几步.你好,我是你的技术探路者大智. 在Unity中,模型的面数对性能的影响非常大.特别是工业领域,工业模型面数通常非常多,在Unity中直接使用如果能跑起来 ...
- Unity 中的坐标系
参考 1.Shadow Map 原理和改进 2.[OpenGL]02 - OpenGL中的坐标系 3.矩阵理论 (这个是京东地址) 4.维基百科(文中的数学概念出处) 5.msdn mul 6.msd ...
- Unity中的AI算法和实现2-有限状态机FSM(上)
本文分享Unity中的AI算法和实现2-有限状态机FSM(上) 在上一篇文章中, 我们基于Waypoint构建了一个最简单的AI怪物, 这个怪物可以在几个点之间巡逻. 本篇文章会在此基础之上, 添加怪 ...
- Unity中导入外部模型与预制件
前言: 在Unity3D的 Asset Store 中下载的包(package)资源, 其默认位置是: C:\Users\用户名\AppData\Roaming\Unity\Asset Store- ...
- unity中的基本材质使用
在unity中我们可以使用unity本身自带的材质来改变物体的颜色,和我们使用法线和高度,光源遮罩来完善我们的物体的质感和其他各种的功能 在unity中我们如何创建一个材质,首先我们在资源管理界面右键 ...
- unity中打开网页
在unity中打开网页需要一个插件 这是下载地址:https://download.csdn.net/download/qq_33515628/10409002 只需要把插件导入unity中,里面已经 ...
最新文章
- 服务器系统摁c,如何系统有效学习c服务器开发
- 对Flush原理的个人理解
- Bootstrap日期插件之Datetimepicker修改默认语言(附带源码)
- python按键盘上哪个键运行_python通过按下键盘特定按键,开始运行python文件
- Linux 高级存储管理
- linux特殊权限位之setuid、setgid和sticky
- LeetCode MySQL 1633. 各赛事的用户注册率
- xgboost实例_XGBoost超详细推导,终于有人讲明白了!
- t4 tornado 模板
- java socket 双网卡_java获取双网卡ip地址
- Android 深入ViewPager补间动画,实现类京东商城首页广告Banner切换效果
- 在执行某个行为时,其大脑是否产生了对应的稳定脑神经模式映射?如果存在稳定映射,是否能运用机器学习方法发现未知行为神经回路?
- 金融科技领域的安全威胁及金融科技安全分析
- 修复计算机之后东西还在吗,硬盘分区表修复后文件还在吗
- 华为云服务器参数配置文件,华为云服务器参数配置文件
- IT 相关常见英文缩写一览
- 【学习OpenCV4】分水岭算法详解
- 中泰证券钢铁行业数据库
- 安全集成服务资质是什么都有哪些等级?申请安全集成服务资质认证有什么好处?
- 西部数码服务器未续费,域名到期了,如何续费?