使用Unity里的ShaderGraph实现物体边框呼吸灯效果

这篇具有很好参考价值的文章主要介绍了使用Unity里的ShaderGraph实现物体边框呼吸灯效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提前声明一下,以下效果需要在hdrp项目中进行。

一、制作边框高亮

1. 创建物体

首先创建好我们的正方体:unity shader graph呼吸灯,Unity3D,unity,游戏引擎

用来接下来的边框显示。

2. 创建材质球

这里需要创建两个材质球,一个用于显示方块的材质,另一个用于边框的显示。

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

(Material用于方块材质,OutlineMat用于边框线)

为了更好地突出边框的视觉效果我这里给它加上了一个贴图,在Material里:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

3. 创建着色器

在材质球同一目录下创建一个ShaderGraph:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

(Create | Shader Graph | HDRP | Unlit Shader Graph)

4. 制作边框样式的着色器

首先我们需要两个变量作为输入:

        Scale 用于指定线框的缩放粗细;

        Color 用于指定线框颜色;

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

接下来进行编写:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

这里将物体的位置与缩放 Scale 进行相乘得到缩放后的位置信息,之后再把color作为基础颜色挂载到Fragment上。

这里需要注意一下Color的模式需要时HDR:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

再设置一下颜色:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

然后需要剔除前方的渲染,只渲染后方:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

做好后将Cube的材质设置成如图所示:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

做好后的效果:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

二、呼吸灯效果

1. 原理分析

呼吸灯呈现的效果是忽亮忽暗,变化程度随着时间均匀变换,所以这里需要时间作为输入增量,对时间求正弦即可以得到指定范围内的均匀变化:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

呼吸灯的亮度变化是基于HDR颜色的Intensity属性,在实际的运算中Intensity属性是不存在的,这只是为了方便进行颜色设置的一层抽象。

所以如果想通过代码来设置 Intensity则需要下面的方式:

Color c;

c = Color(c.r * intensity_ratio, c.g * intensity_ratio, c.b * intensity_ratio);

(伪代码)

即颜色的rgb三个通道乘上强度比率。

HDR拾色器中强度+1,对应的intensity_ratio则是+0.1;

强度-1,则是intensity_ratio = -1;

建议的intensity范围是-1到1之间,对于呼吸灯一亮一暗的需求intensity_ratio只需要属于[0,1]区间即可

所以对于unity shader graph呼吸灯,Unity3D,unity,游戏引擎则需要进行量化操作,使其返回的值在[0,1]之间。

所以式子就会变成这样:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

呼吸灯效果还需要有间隔时间以及亮度限制,为了使得呼吸灯效果功能更加完善,这里在ShaderGraph再引入三个变量:

Delay     : 呼吸间隔
HighLimit : 最亮限制
LowLimit  : 最暗限制

结合图像,delay则就是函数图像两个相邻的最低点横坐标值的差,则推导出:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

(这个图像里delay默认是2)

然后就需要实现亮度限制,很显然,最大亮度限制就是函数图像的最大值,最小亮度限制同理。

所以呢,函数图像纵坐标的差值应该等于最大限制和最小限值的差:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

然后再让它保持在纵坐标[0,1]之间,即在纵坐标向上移动最低限制值和函数图像高低点差值的一半,即:unity shader graph呼吸灯,Unity3D,unity,游戏引擎

这就是呼吸灯的基本原理了。

2. 改进Shader

打开最开始我们创建的Shader,添加三个变量:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

随后在添加一个自定义函数节点:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

最后再像这样连接起来:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

最终效果:

unity shader graph呼吸灯,Unity3D,unity,游戏引擎

(如果说做好后没有变化,记得查看一下Cube的Inspector视图下对于材质球着色器的参数设置)文章来源地址https://www.toymoban.com/news/detail-855588.html

到了这里,关于使用Unity里的ShaderGraph实现物体边框呼吸灯效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity之ShaderGraph如何实现科幻空气墙

    今天在油管上看到一个空气墙的特效,感觉做的非常好看,今天我们就来实现以下这个科幻风格的空气墙 效果如下所示: Dots:ShaderGraph的官方示例中提供的点阵SubGraph节点,如下图所示,需要我们导入示例 我们让Dots点阵和SimpleNoise相乘,得到一个空气墙的基本样式,如下所

    2024年02月08日
    浏览(43)
  • Unity 基于URP使用Highlight Plus实现物体高亮

    内容将会持续更新,有错误的地方欢迎指正,谢谢!   Unity 基于URP使用Highlight Plus实现物体高亮       TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取! 助力快速实现 Highlight Plus 基于URP的物体高亮 为初学

    2024年02月05日
    浏览(37)
  • Unity之ShaderGraph如何实现靠近显示溶解效果

    今天我们来实现一个我再B站看到的一个使用LeapMotion实现的用手部触摸就可以显示的溶解效果。 效果如下图所示: Position:提供对网格顶点或片段的Position 的访问,具体取决于节点所属图形部分的有效着色器阶段。使用Space下拉参数选择输出值的坐标空间。 Remap:基于输入

    2024年02月04日
    浏览(50)
  • [Unity] ShaderGraph实现伪室内效果,性能大解放

    使用版本为:2023.1.19f1  更详细的实现逻辑及步骤参考Mert Kirimgeri的视频: UNITY SHADER GRAPH with Fake Interiors Shader (youtube.com) OS:这简直是个降低性能的天才技术!!! 目录 一、构建虚拟立方体  二、切线空间与视角射线  三、赋予贴图 四、天空盒环境反射 五、两侧空间与插值

    2024年01月23日
    浏览(43)
  • [Unity] 使用Mathf函数实现平滑移动物体的7种方法

     Unity中要利用Mathf中的函数实现物体的平滑运动,有以下7种方法: Mathf.SmoothDamp、Mathf.Lerp、Mathf.SmoothStep三个方法非常相似,分别使用三个方法移动同一个物体的效果如图所示: 可以看出,三者均是先快后慢,但SmoothDamp方法会有一些卡顿;SmoothStep与Lerp比较起来,Mathf.Smooth

    2024年02月12日
    浏览(52)
  • 【unity】ShaderGraph实现等高线和高程渐变设色

    ShaderGraph案例下载地址 等高线的实现思路 方法一: 通过Position节点得到顶点的高度(y)值,将高度值除去等高距离取余,设定余数的输出边界(step) 方法二: 将y值减去y值的取整,差值和差值取反相乘,设定输出边界(step) 高程渐变设色的实现思路 简单赋值方法 使用G

    2024年02月14日
    浏览(38)
  • [Unity] ShaderGraph实现Sprite图片描边/发光效果

    使用版本为:2022.3.10f1  [原始图]      [运行前]      [运行后] 更详细的实现逻辑及步骤参考CodeMonkey的视频: https://youtu.be/FvQFhkS90nI?si=zy6XRlqGnzIdQkqD OS:猴子老师,我永远的神!!! 目录 一、准备工作 二、偏移效果与颜色叠加 三、单侧描边与原理 四、另一侧与Sub管理 五、

    2024年01月20日
    浏览(56)
  • 【Unity ShaderGraph使用雪碧图制作导航光效效果】

    效果: ShaderGraph的制作: shader中uv数和雪碧图的uv数对上就能出效果。 直接上代码: 代码绑定: 下面是雪碧图:

    2024年02月15日
    浏览(51)
  • Unity 使用Final IK实现拟真调整物体IK动画

    演示视频 需求 NPC拿起物体,指定转向放到指定位置,要求动作尽可能自然,贴近真实。 何为IK 谈IK之前先讲一下 正向运动学(forward kinematics) ,正向动力学通俗来说就是 父骨骼带动子骨骼运动 ,Unity父子对象其实已经实现了正向动力学基本功能,当你移动父物体,子物体保

    2024年02月07日
    浏览(43)
  • 【unity造轮子】Unity ShaderGraph使用教程与各种特效案例(持续更新)

    ShaderGraph官方案例:https://github.com/UnityTechnologies/ShaderGraph_ExampleLibrary 最近在玩ShaderGraph,决定把我自己实验的所有效果记录到这篇博客中,附带完整高清的连线动态图,希望对想要学习ShaderGraph的同学有所启发。后续有发现一些新的ShaderGraph我还会继续进行更新。 这里我就不对

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包