【Unity】从零使用Amplify Shader - 屏幕抓取与扭曲

这篇具有很好参考价值的文章主要介绍了【Unity】从零使用Amplify Shader - 屏幕抓取与扭曲。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

很多实际项目中,我们都需要对当前整个屏幕进行一些特殊处理,那再ASE中其实可以非常快速的实现,下面就跟着教程试试吧。

创建材质:

● 右键 - Create - Amplify Shader - Legacy - Unlit
● 在创建出的Shader上右键 - Create - Material - 起个名字
● 打开ASE编辑器。

初步实现:
  • 在ASE中,想要抓取屏幕内容,只需要了解两个最重要的节点:
    • Screen Position - 屏幕坐标
    • Grab Screen Color - 当前屏幕颜色

【Unity】从零使用Amplify Shader - 屏幕抓取与扭曲

  • 在这里我们首先连接了一个 Component Mask,这也是我们第一次用到这个节点,它的意义也很简单,知道Mask的概念就能懂一半:筛选我们需要的内容,这里因为我们只需要屏幕的二维坐标也就是XY,所以勾选XY即可。
  • 接下来就直接将屏幕坐标连接到Grab Screen Color节点的UV上,最后输出颜色到片元着色Frag Color。
  • 到此为止我们已经可以获得屏幕信息了,可以利用一个2D Sprite来测试一下。
扭曲
  • 这一步操作算是重点了,折射(扭曲)。虽然是重点,但其实也超简单!
  • 先直接上基本完成图,首先把几个控制变量忽略不看。那么就剩下Panner,Texture和Lerp三个节点了。
    • Lerp是核心,作用是对屏幕UV进行了一个插值。 这里给出公式:lerp(a, b, f) //(1-f)a + bf , 简单理解就是B向着A混合。
    • Panner是让UV滚动起来,这里Speed在Y方向-1也就是在Y方向进行滚动。
    • Texture就没什么可说的,用它的R的值来做插值混合,这里用黑底渐变图是为了让图形周围更圆滑,不像矩形那么锋利,可以从接下来的图中看到。

【Unity】从零使用Amplify Shader - 屏幕抓取与扭曲

  • 记得给Lerp的Alpha的控制变量赋值才能看到变化。
  • 那么我们在屏幕中随便给一张背景图片,然后再添加一个2D Sprite矩形测试后的结果如下:
  • 【Unity】从零使用Amplify Shader - 屏幕抓取与扭曲
  • 最后,调整一下截图的尺寸,然后像上面提到的替换一些圆滑的贴图到Texture节点。可以看到动起来以后的画面了:

【Unity】从零使用Amplify Shader - 屏幕抓取与扭曲

总结:

到上面为止,基本折射扭曲的概念和示例已经差不多结束了,但是值得注意的是,这种全屏操作是非常消耗性能的,因为每帧都会去截取屏幕图形,使用的时候需要慎重考虑。那实际应用中都用在什么地方呢?举个例子:一个类似黑洞的子弹,这种持续时间短且会回收的资源,用一下这样的shader还是性能可接收的。但是用在子弹上多数情况就需要使用粒子,提示这个材质要用在粒子上,需要一个额外节点Vertex Color顶点色,具体大家自己去尝试一下吧文章来源地址https://www.toymoban.com/news/detail-498092.html

到了这里,关于【Unity】从零使用Amplify Shader - 屏幕抓取与扭曲的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity中Shader的屏幕坐标

    Unity中Shader的屏幕坐标 屏幕归一化坐标 = 当前像素 总像素 屏幕归一化坐标 = frac{当前像素}{总像素} 屏幕归一化坐标 = 总像素 当前像素 ​ _ScreenParams 屏幕的相关参数,单位为像素。 x表示屏幕的宽度 y表示屏幕的高度 z表示1+1/屏幕宽度 w表示1+1/屏幕高度 UNITY_VPOS_TYPE screenPos

    2024年02月09日
    浏览(27)
  • 【Unity Shader】屏幕后处理3.0:均值模糊和高斯模糊

    发现之前学习记录的太过详细,导致整理的过程占用太长的时间了,这篇之后博客重要的是掌握实现过程,关于基础的理论会更多的放上别人写得更好的文章。 参考:【Unity Shader编程】之十五 屏幕高斯模糊(Gaussian Blur)后期特效的实现 高斯模糊只是各种模糊方式中的一种。模

    2023年04月08日
    浏览(28)
  • 【Unity Shader】屏幕后处理4.0:基于高斯模糊的Bloom

    原本打算写高斯模糊和双重模糊两个实现Bloom方法的对比,但两个加在一起篇幅过长,于是拆成两篇文章来进行。 学习前建议应先搞清楚的几个概念 HDR LDR ToneMapping 几种模糊算法 最近一直在学习Unity Shader实现各种后处理效果,Bloom效果就是其中之一,它也是游戏中最常见的效

    2023年04月11日
    浏览(33)
  • C# &OpenCV 从零开发(0):前言

    由于我想换个机器视觉+运动控制的工作,我就开始了自学机器视觉方向的技术。但是Halcon毕竟是商业化的库,国内用盗版还是怕被告。所以期望使用OpenCV。 OpenCV目前已知的方法的有两个版本 Python:用起来挺简单的,就是Python的语言不适合管理,感觉以后必定会出现问题,不适

    2024年01月18日
    浏览(51)
  • 从零开始学Spring Boot系列-前言

    在数字化和信息化的时代,Java作为一种成熟、稳定且广泛应用的编程语言,已经成为构建企业级应用的首选。而在Java生态系统中,Spring框架无疑是其中最为耀眼的一颗明星。它提供了全面的编程和配置模型,用于构建企业级应用。随着Spring Boot的出现,这一框架变得更加易于

    2024年02月22日
    浏览(46)
  • 从零开始理解Linux中断架构(1)-前言

    前言         前段时间在转行手撸WIFI路由器,搞wifi路由器需要理解网络驱动程序,以太网卡驱动程序,无线WIFI驱动程序,而网卡驱动的关键路径就在中断程序中,需要了解NIC设备驱动程序如何收发数据,为了彻底的知道数据包是如何二层传递上来的,又需要了解一点Lin

    2024年02月09日
    浏览(44)
  • Unity 使用Shader实现序列帧动画

    序列帧动画图片使用shader逐帧播放 可以直接使用,拿走不谢。 可以挂到材质上放入Image组件的材质中使用。

    2024年02月13日
    浏览(31)
  • 【unity实战】使用shader和shader Graph实现2d图片描边效果(附源码)

    最近在学习shader Graph相关内容,其实关于实现2d图片描边效果,网上可以看到很多教程,但是我发现大多数都是基于比较老旧的2018unity版本,可是我们实际开发使用可能是比较新的2021及以上版本,差别还是有的,实际在升级或者使用过程中,会遇到诸多问题,而且也很少有人

    2024年02月16日
    浏览(32)
  • 【C# 中抓取包含多个屏幕内容的整个桌面】

    要在 C# 中抓取包含多个屏幕内容的整个桌面,可以使用 .NET Framework 或者其他第三方库来实现。一种常见的方法是使用 System.Windows.Forms 和 System.Drawing 命名空间中的类来实现屏幕截图。以下是一个示例代码,演示如何抓取包含多个屏幕内容的整个桌面: 在这个示例中,我们遍

    2024年02月21日
    浏览(22)
  • 【Unity】Unity Shader学习笔记(四)创建和使用、基本语法、属性基本类型、数值精度

    由于着色器是依赖于材质的,所以创建着色器之前通常要先创建一个材质(Material)。然后再创建一个Shader。 结果如下: 然后给材质指定Shader,再给物体指定材质。 建好Shader后双击打开,通常默认使用vs studio开发shader。一个Shader主要的内容都是写在 Shader {} 代码块中,其中包

    2024年02月16日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包