Unity2018 Shader Graph 实验室

Shader Shader Graph Unity 

Tips:
-- 在shader forge和amplyfy Shader节点图形化shader编程的诱惑下,unity官方终于在2018版本也推出了而自己shader节点可视化编程工具Shaderr Graph。本篇文章是对Shader Graph一些效果的尝试,建议学习shader的朋友也尝试下这些工具,对shader的理解会更加直观
-- 效果中自发光光晕是使用的PostProcess中bloom,须自行添加
-- 图看不清,右击在标签页中打开
-- 想要自发光更炫,Color属性节点开启HDR模式

目录

  1. bilibili小电视
  2. 光剑
  3. 火焰卡牌

1.Bilibili小电视([]~( ̄▽ ̄)~*)

效果

BILIBILI

节点图

节点图

效果说明

该效果主要分为三个部分:

  1. 红色部分,通过一个纹理与一个颜色相乘来作为其基础效果。
  2. 紫色部分,边缘高光,通过一个菲涅尔节点和颜色相乘赋给自发光。
  3. 黄色部分,随时间的扭曲和剔除,通过Step阶梯点和Twirl扭曲节点实现,Noise节点辅助产生扭曲条纹状效果。

节点说明

名称 说明
Fresnel 菲涅尔反射,简单来说就是表面与视角越是平行,则高光效果越明显 (Unity就不能出个中文文档吗,哭http://api.unrealengine.com/CHN/Engine/Rendering/Materials/HowTo/Fresnel/index.html
Step 如果输入In大于等于输入Edge,返回1,否则返回0
Twirl 将类似于黑洞的旋转扭曲效果应用于输入的UV。扭曲效果的中心参考点由输入参数Center决定,效果的整体强度由输入参数Strength决定。输入Offset可用于偏移结果的各个通道。
Position 获取mesh的顶点或片段的位置。可选的空间有Object, View, World, Tangent。(我们使用该位置为世界坐标下的位置,作为Twirl的中心点位置)
Time 可以获取Unity中的时间值。

2.光剑(愿原力与你同在QAQ)

效果

sword

节点图

enter description here

效果说明

该效果主要分为三个部分:

  1. 红色部分,通过Positon的object即模型坐标下的Y方向Step来获得溶解效果。
  2. 紫色部分,通过Noise,时间节点作用于UV与模型Position相加,给与模型沿着Y轴抖动的效果。
  3. 黄色部分,一个简单的自发光。

节点说明

名称 说明
Position 区别于上次,这次我们使用的Object坐标下,即模型空间下获取模型自身的顶点位置属性
Split 分割,将一个多维向量分割成多个1维的数值。如果输入的向量小于4维,不够的维度会使用默认值分别是 (0, 0, 0, 1)。
Gradient Noise 渐变噪点,基于输入的UV生成一个渐变噪点图(Perlin噪点)。Scale可以控制噪点图的大小。
Tiling And Offset 平铺和偏移,这个功能我们会经常用到,一般只要有贴图的材质上都会有Tiling And Offset。将输入参数UV的值,通过Tiling和Offset改变平铺和偏移。

3.地狱之门(愿火焰进化一切)

效果

Fire

节点图

火焰

效果说明

UV偏移与发光不在赘述,该效果的要点是边缘部分的与原来颜色叠加,这样火焰的边缘亮度更高,下过更好。这里我们主要通过不同Step后的图作差值来获取边缘。
黄色:纹理取样
蓝色:遮罩
红色:UV偏移

节点说明

名称 说明
One Minus 1减去,因为纹理像素对应 0~1,所以可以使用该节点做取反操作
Add 相加,这里我们通过相加来混合边缘颜色和原有颜色,也在cutoff剔除的时候加了些,防止将边缘部分剔除
Subtract 相减,我们通过两个不同Step截取后的图相减,从而获得他们的插值部分,即人为获取一定边缘部分

4.火焰卡牌(快进来坐吧,酒馆里可热闹了)

效果

MaskCard

节点图

节点图

效果说明

像卡牌中流动的效果和前面用到的一样,都是通过控制UV和噪声图来达到的。诸如流水,岩浆,魂魄,雾霭都可以通过这样的方式实现。这个效果比较简单,如果通过多层通道控制遮罩效果,每个遮罩下有不同的特效,我们就可以做出看起来炫酷的效果了。

节点说明

这个效果实现比较简单,需要说明的如若需要多个遮罩效果,可以放在一张图的不同通道下做遮罩。R,G,B,A四层可以做四个遮罩图,这样更能节省资源。然后通过Mask节点来提取不同的遮罩,在控制不同遮罩的效果,我们就能做出更加炫酷的特效。

5.序列帧动画(一切尽在卡牌中)

效果

AniNum
AniFram

节点图

aniframe

效果说明

该效果主要实现了序列帧动画,想通过animatior的方式将分割好的序列帧图片播放一样。可以实现读数,火焰,翻页一些效果。

节点说明

名称 说明
Ceilling 返回大于或等于输入值的最小整数。(floor:返回小于或等于输入值的最小整数;round:返回最接近输入值的整数)
Flipbook 将UV分割成若干份width列,height行,通过Tile作为索引来控制UV偏移,实现类似翻页等效果

6.血瓶(

Unity2018 Shader Graph 实验室的更多相关文章

  1. 不能直接获取?聊聊如何在Shader Graph中获取深度图

    0x00 前言 在这篇文章中,我们选择了过去几周Unity官方社区交流群以及UUG社区群中比较有代表性的几个问题,总结在这里和大家进行分享.主要涵盖了** StreamingAssets.Profil ...

  2. Unity Shader Graph 小功能实现(一)边缘发光

    在Unity 2018.2 版本正式启用了高清渲染管线,shader可视化编程. 现在我们就尝尝鲜,来实现了个物体边缘发光的shader效果. 准备 点击Windos->Package Mang ...

  3. Unity Shader Graph(三)Phase In and Out

    软件环境 Unity 2018.1.6f1 Lightweight Render Pipeline 1.1.11-preview Phase In and Out效果预览 角色沿Y轴逐渐出现和消失 S ...

  4. Unity Shader Graph(二)Dissolve Effect

    此篇文章记录Dissolve Effect(溶解特效)的制作过程 软件环境 Unity 2018.1.2f1 Packages: Lightweight Render Pipeline 1.1.11 ...

  5. Unity Shader Graph(一)初次尝试

    软件环境 Unity Version: 2018.1.2f1 边缘发光材质效果 创建工程 打开Unity并创建一个新工程 安装依赖项 Window -> Package Manager打开包管理 ...

  6. [Unity] Shader Graph Error 当前渲染管道与此主节点不兼容(The current render pipeline is not compatible with this master node)

    Shader Graph Error  : The current render pipeline is not compatible with this master node 问题产生环境: Un ...

  7. Shader Graph

    About Shader Graph https://docs.unity3d.com/Packages/com.unity.shadergraph@7.3/manual/index.html uni ...

  8. 使用Shader Graph实现《塞尔达传说:旷野之息》风格的着色器

    https://mp.weixin.qq.com/s/19Xq6wYuXP0gQJDvC9Fh0g

  9. 聊聊如何正确向Compute Shader传递数组

    0x00 前言 前一段时间去英国出差,发现Unity Brighton 办公室的手绘地图墙很漂亮,在这里分享给大家. 在这篇文章中,我们选择了过去几周Unity官方社区交流群以及UUG社区群中比较有代 ...

随机推荐

  1. [CSS]关于z-index与position的一次奇异经历

    前言: 前不久,同事S遇到了一个关于position和z-index的问题. 他折腾了一天没搞定,群发了邮件寻求帮助, 我一开始以为很简单,就主动说帮忙,简单尝试之后,才发现貌似没那么简单. 问题主要 ...

  2. html操作

    HTML(hyper text markup language): 超文本标记语言,标准通用标记语言下的一个应用. 超文本就是指页面内可以包含图片.连接.音乐.程序等非文字元素. 超文本标记语言的结构 ...

  3. 使用Linux进行缓冲区溢出实验的配置记录

    在基础的软件安全实验中,缓冲区溢出是一个基础而又经典的问题.最基本的缓冲区溢出即通过合理的构造输入数据,使得输入数据量超过原始缓冲区的大小,从而覆盖数据输入缓冲区之外的数据,达到诸如修改函数返回地址等 ...

  4. 转载】JQuery中如何传递参数如click(),change()等具体实现

    转载地址:http://www.jb51.net/article/36249.htm 有个需求让两个select中option相互转换,这个作业就是给几个按钮添加click()事件接下来为大家介绍下如 ...

  5. AOP-切面是如何织入到目标对象中的

    切面是如何织入到目标对象中的???这大概是每个人在学习AOP的过程中都会产生的疑问吧. 当我们在调用目标方法时候,也就是通过代理对象调用目标方法的时候,比如:JdkDynamicAopProxy会通过 ...

  6. 4719: [Noip2016]天天爱跑步

    Time Limit: 40 Sec Memory Limit: 512 MB Submit: 1986 Solved: 752 [Submit][Status][Discuss] Descripti ...

  7. 使用yii的layout,加入<?php echo $content; ?>这句话时,它会自动在子页面上面添加一个div包裹

    使用yii的layout,加入<?php echo $content; ?>这句话时,它会自动在子页面上面添加一个div包裹,而且div的id命名为id=content,这个和已有id重复 ...

  8. Windows启动控制台登录模式

    效果如下: 实现代码: Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Lo ...

  9. jQuery内容横向拖拽滚动

    如果有业务需求:使用横向滚动,而又不想用滚动条,可以使用横向拖拽滚动,主要是利用元素的scrollLeft特性: 废话不多说直接上代码: css: .box{ width:100%; height:3 ...

  10. java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8E' for column 'nick' at row 1

    java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8E' for column 'nick' at row 1 mysql报错 ...