Unity可视化Shader工具ASE介绍——自定义函数

阿赵的Unity可视化Shader工具ASE介绍目录
  大家好,我是阿赵。
  之前介绍过一些ASE的用法,发现漏了一个比较重要的,自定义函数的使用。这里补充一下。

一、 使用的场合

  在使用ASE制作Shader的过程中,可能会遇到以下这些情况:

  1. 有些处理方式,写代码几行就搞定,但如果使用节点连接,反而很复杂
  2. 有些算法比较复杂,不知道怎样在ASE里面通过节点连出来。
      简单一句话概括,就是遇到写代码比连节点更简单的时候,我们会像能不能在ASE连节点的基础上,单独某个部分自己写代码?
      答案是可以的。ASE提供了一种节点,叫做Custom Expression节点。
    在这里插入图片描述

  这种节点可以自定义输入输出的参数内容,然后自己写代码实现。

二、 举例说明

  这里我举一个简单的均值模糊的例子。
  均值模糊的算法很简单,只需要把当前像素点附近一定范围内的所有像素点采样一次,把色值加起来再除以像素点数量,求得一个平均的像素颜色,再赋予给原来的像素就行。
  如果是写代码,其实实现起来很简单,输入一个模糊的半径radius,然后那当前像素点的uv,然后写2重循环,对uv做偏移,对图片采样,把色值加起来,再求平均值。
如果写成代码就是这样:

float3 AvargeBlurFun( sampler2D tex, float2 uv, int radius)
{float r = 0;float g = 0;float b = 0;float count = radius*2+1;count = count*count;for(int i = -radius;i<radius+1;i++){for(int j = -radius;j<radius+1;j++){float2 uvTemp = uv + float2(_MainTex_TexelSize.x*i,_MainTex_TexelSize.y*j);float4 colPixel = tex2D(tex,uvTemp);r = r+colPixel.x;g = g+colPixel.y;b = b+colPixel.z;		}}r = r/count;g=g/count;b=b/count;return float3(r,g,b);
}

  这个代码如果用ASE来连接,其实我也不知道怎样连,因为没找到循环的节点。我看到过其他人用ASE实现这个模糊的算法,只能写死采样像素点附近的8个点采样,加上本身的像素点,再做平均。
  所以这时候就需要用到自定义函数的Custom Expression节点。
  先来分析一下,这个求均值的函数,需要的参数有:
1. 一个sampler2D的贴图
2. 该贴图对应的uv坐标
3. 模糊的半径
4. 由于_MainTex_TexelSize在没有定义之前是不能用的,而ASE有节点可以获取
_MainTex_TexelSize,所以_MainTex_TexelSize也最好传进去。

  于是我们需要先新建一个Custom Expression节点,改一下名字:
在这里插入图片描述

  然后由于我们需要输出的是一个rgb值,所以把输出类型改成float3
在这里插入图片描述

  接下来新增刚才说的4个传入参数:
在这里插入图片描述

  在Inputs里面找到第一个参数,修改类型为sampler2D,然后把名字改成tex:
在这里插入图片描述

  接下来点加号,继续添加其他几个输入的参数:
在这里插入图片描述

  然后把其他几个参数的名字和类型修改好
在这里插入图片描述

  这时候,这个自定义节点会变成这样:
在这里插入图片描述

  接下来把代码复制到Code框里面:
在这里插入图片描述

float r = 0;
float g = 0;
float b = 0;
float count = radius*2+1;
count = count*count;
for(int i = -radius;i<radius+1;i++)
{for(int j = -radius;j<radius+1;j++){float2 uvTemp = uv + float2(texelSize.x*i,texelSize.y*j);float4 colPixel = tex2D(tex,uvTemp);r = r+colPixel.x;g = g+colPixel.y;b = b+colPixel.z;		}
}
r = r/count;
g=g/count;
b=b/count;
return float3(r,g,b);

最后把输入输出的参数连接好:
在这里插入图片描述

这时候材质球上已经显示出了参数:
在这里插入图片描述

把材质球赋予给模型,调节radius半径参数,就会出现均值模糊的效果了:
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/460329.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊我在新加坡的近况

我是 2022 年 4 月初过来新加坡的&#xff0c;然后两个月后就把老婆孩子们也接了过来。时至今日&#xff0c;已经两年半有余了。 22 年 8 月初的时候&#xff0c;写过一篇文章「聊聊我在新加坡的生活和工作体验」&#xff0c;没想到成了一篇热门文章&#xff0c;在知乎上不知不…

贪心算法入门(一)

1.什么是贪心算法&#xff1f; 贪心算法是一种解决问题的策略&#xff0c;它将复杂的问题分解为若干个步骤&#xff0c;并在每一步都选择当前最优的解决方案&#xff0c;最终希望能得到全局最优解。这种策略的核心在于“最优”二字&#xff0c;意味着我们追求的是以最少的时间和…

深度强化学习-学习笔记

1.PPO &#xff08;1&#xff09;DeepMind公司发明的算法PPO &#xff08;2&#xff09;OpenAI公司发明的算法PPO2&#xff1b; 近端策略优化算法&#xff08;proximal policy optimization&#xff0c;PPO&#xff09; Actor 网络输出在给定状态 S下采取每个动作的概率分布&a…

pytest脚本常用的执行命令

pytest脚本常用的执行命令 一、一般执行的脚本&#xff0c;执行.py文件整个脚本二、执行.py文件脚本中的一个模块三、执行脚本&#xff0c;执行.py文件整个脚本&#xff0c;或则一个模块&#xff0c;查看对应的日志信息3.1.py文件执行allure的脚本3.2去dos框下去执行对应的脚本…

【水果数据集】水果品种识别 人工智能 机器学习(含数据集)

一、背景意义 随着智能农业和食品管理系统的发展&#xff0c;准确识别不同水果种类变得尤为重要。水果种类数据集是针对水果识别与分类的深度学习项目而建立的重要资源。通过自动化的水果识别系统&#xff0c;农场主能够实时监控水果的种类和成熟度&#xff0c;从而优化采摘和销…

Android平台RTSP|RTMP播放器高效率如何回调YUV或RGB数据?

技术背景 我们在做Android平台RTSP、RTMP播放器的时候&#xff0c;经常遇到这样的技术诉求&#xff0c;开发者希望拿到播放器解码后的YUV或RGB数据&#xff0c;投递给视觉算法&#xff0c;做AI分析&#xff0c;本文以ffmpeg和大牛直播SDK的SmartPlayer为例&#xff0c;介绍下相…

计算机网络-MSTP概述

一、RSTP/STP的缺陷与不足 前面我们学习了RSTP对于STP的一些优化与快速收敛机制。但在划分VLAN的网络中运行RSTP/STP&#xff0c;局域网内所有的VLAN共享一棵生成树&#xff0c;被阻塞后的链路将不承载任何流量&#xff0c;无法在VLAN间实现数据流量的负载均衡&#xff0c;导致…

ios 快捷指令扩展(Intents Extension)简单使用 swift语言

本文介绍使用Xcode15 建立快捷指令的Extension&#xff0c;并描述如何修改快捷指令的IntentHandler&#xff0c;带参数跳转主应用&#xff1b;以及展示多个选项的快捷指令弹框(配置intentdefinition文件)&#xff0c;点击选项带参数跳到主应用的方法 创建快捷指令 快捷指令是…

智能财务 | 数据与融合,激发企业财务数智化转型思考

数据与融合&#xff0c;激发企业财务数智化转型思考 用友持续深耕企业财务领域&#xff0c;见证中国企业走过了财务电算化、信息化时代&#xff0c;当下共同经历数智化时代。2023 年度&#xff0c;通过走访标杆企业&#xff0c;与高校教授、权威机构学者共同探讨等形式&#xf…

openpnp - 解决“底部相机高级校正成功后, 开机归零时,吸嘴自动校验失败的问题“

文章目录 openpnp - 解决"底部相机高级校正成功后, 开机归零时&#xff0c;吸嘴自动校验失败的问题"概述笔记问题现象1问题现象2原因分析现在底部相机和吸嘴的位置偏差记录修正底部相机位置现在再看看NT1在底部相机中的位置开机归零&#xff0c;看看是否能通过所有校…

DreamClear:中科院与字节联合推出!隐私安全优先的高性能图像修复技术

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…

SpringBoot驱动的毕业生招聘信息平台

1 系统概述 1.1 概述  随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。人们的生活水平不断提高&#xff0c;日常生活中毕业生对招聘平台方面的要求也在不断提高&#xff0c;需要招聘平台的人数更是不断增加&#xff0c;使得毕业生信息招聘平台的开发成为必需而且…

Mac程序坞窗口预览的方法来了

当你同一程序内打开的窗口过多的时候&#xff0c;在Mac上想要切换就只能打开程序然后在内部进行切换&#xff0c;没办法直达你想要打开的窗口&#xff0c;多了一步的操作&#xff0c;那么如何才能一步到位呢 如果程序坞有应用程序的缩略图&#xff0c;是不是就可以一步到位了&…

【C/C++】结构体的定义

零.导言 在上一篇博客中&#xff0c;我讲解了qsort函数&#xff0c;并在其中提到了结构体数组的排序&#xff0c;那么结构体是什么呢? 接下来我将详细讲解结构体的定义。 一&#xff0c;结构体是什么&#xff1f; 结构体是自定义的数据类型&#xff0c;可以存放自定义的数据。…

JavaScript 中如何识别异步函数?

我们如何判断一个函数是否是异步函数&#xff08;async function&#xff09;呢&#xff1f; 遇到问题的思考过程是什么呢&#xff0c;首先需要找到二者的区别&#xff0c;那就打印看一下&#xff0c;然后在思考如何做。 由此可以看出二者的差异。 1、使用 typeof 检查函数类…

springboot学生请假管理系统-计算机毕业设计源码12712

摘 要 从20年代开始&#xff0c;计算机在人们的生活和工作中广泛应用&#xff0c;成为了人们生活、工作的得力助手。计算机深入到每个家庭和每个工作场所&#xff0c;网络办公和网络教学取代了传统的手工记录和管理方式。使用计算机办公可以不受时间和地点限制&#xff0c;通过…

频率限制:WAF保护网站免受恶意攻击的关键功能

频率限制&#xff08;Rate Limiting&#xff09;是一项有效的安全措施&#xff0c;用于控制每个 IP 地址的访问速率&#xff0c;以防止恶意用户利用大量请求对网站进行攻击&#xff0c;例如防止 CC 攻击等。频率限制不仅能保护网站资源&#xff0c;还能提升服务的稳定性。 下面…

ClickHouse 神助攻:纽约城市公共交通管理(MTA)数据应用挑战赛

本文字数&#xff1a;13198&#xff1b;估计阅读时间&#xff1a;33 分钟 作者&#xff1a;The PME Team 本文在公众号【ClickHouseInc】首发 我们一向对开放数据挑战充满热情&#xff0c;所以当发现 MTA&#xff08;城市交通管理局&#xff09;在其官网发起了这样的挑战时&…

什么是数据中心?

数据中心是一个专门用于容纳大量联网计算机设备的设施&#xff0c;这些设备共同协作&#xff0c;以处理、存储和传输数据。现代社会中&#xff0c;大部分高科技公司都依赖数据中心来提供在线服务&#xff0c;例如网站、应用程序和云服务等。可以说&#xff0c;数据中心是互联网…

【论文精读】ID-like Prompt Learning for Few-Shot Out-of-Distribution Detection

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;论文精读_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 注&#xff1a;下文…