Unity | Shader基础知识(第十六集:简单的全息扫描效果)

目录

一、前言

二、准备模型

三、 场景准备

 四、代码准备

五、透明度设置

六、补充介绍

1.Pass语法介绍

2.ColorMask

 七、作者的碎碎念


一、前言

这节课的内容是接着弧形边缘光的效果之后做的。

Unity | Shader基础知识(第十四集:简单效果练习)_unity shader 实例-CSDN博客

做出的效果如(图1、2所示)

图1 全息车

 

图2 全息车

二、准备模型

我们学习嘛~随便来一个模型就行,可以在unity商店下一个,免费的。

图1 unity商店

我每次都会把素材准备写上,因为我初学的时候,总找不到素材。up下载的是这个(如图2所示)。

图2 模型选择

三、 场景准备

如果你和我下载的是同一个模型,你放进场景里(如图3所示)

图3 车模型

 四、代码准备

下方是之前第十四集做弧形光的代码,我们在这个代码的基础上学。把这个代码的shader设置在材质球上。

Shader "Custom/012"
{Properties{_Color("Color",Color)=(0,0.5,0.5,0)//这里把范围改成了0.5-20_Power("Power",Range(0.5,20)) = 3}SubShader{CGPROGRAM#pragma surface surf Lambertfloat4 _Color;float _Power;struct Input{float3 viewDir;};void surf(Input IN,inout SurfaceOutput o){half dotp =1-saturate(dot(normalize(IN.viewDir),o.Normal));o.Emission =_Color.rgb * pow(dotp,_Power);}ENDCG}
}

 这个车里面有很多零件,假设我们现在只做车身。我们把车身的一些位置换成我们新写的材质。(如图4所示)

图4 材质替换

你也可以都换了,只是效果不一样而已。到此,我们其实已经获得了一个发光的车。材质的颜色可以调成自己喜欢的颜色,这里也略了。

五、透明度设置

全息的一个主要参与因素,就是颜色。因为现在还是教学,我们先只实现一个大概的效果。我们让现在不发光的地方透明。

(如图5所示)当红框的位置不等于0时,会发光,也就是说,这个数和0越接近,就越需要透明。

透明度本身就是0的时候是透明的,1的时候是实心的,所以,得出代码。

图5 代码

所以,得出代码如下:

            void surf(Input IN,inout SurfaceOutput o){half dotp =1-saturate(dot(normalize(IN.viewDir),o.Normal));o.Emission =_Color.rgb * pow(dotp,_Power);//把透明度加进去o.Alpha = pow(dotp,_Power);}

加了透明度,别忘记了:

            Tags{"Queue" ="Transparent"}CGPROGRAM#pragma surface surf Lambert alpha:fade

 然后你就会得到(如图6所示)

图6 透明车

因为颜色太单一了,就不太好看,我们希望渐变一点,就在 Emission里面增大一点,自发光是随着发光的强弱会变颜色的。

void surf(Input IN,inout SurfaceOutput o)
{half dotp =1-saturate(dot(normalize(IN.viewDir),o.Normal));//这里放大一点自发光倍数o.Emission =_Color.rgb * pow(dotp,_Power)*10;o.Alpha = pow(dotp,_Power);
}

你就会收到一个颜色渐变的车。(如图7所示)

图7 渐变色车

这时候你去移动参数,已经有扫描的效果了。(如图8所示)

图8 全息效果车

六、补充介绍

 上面的车在消失以后是可以看见内饰的,如果你需要一个看不见内部结构的车,就需要在shader里面添加新的代码。

1.Pass语法介绍

Pass的写法以前讲过了。

Unity | Shader基础知识(第二集:shader语言的格式)_unity shader语言-CSDN博客

Pass是通道的意思,可以在一个shader脚本里写不同的渲染,然后你就可以选择,调用哪一个pass(如图9所示)。

图9 调用pass

如果在所有地方都没有专门设置渲染哪个,不渲染哪个,先哪个后哪个,那所有pass会挨个渲染。

 那在这里旧事重提的原因是,有一些设定,智能写在pass里面,不能写在外面。

2.ColorMask

这是个什么东西呢?就是你再渲染这个材质所在的东西时,肯定视线里面不光有一个物体,肯定有很多。(如图10所示,所以我们车门后面有蓝色的其他内饰)。

如果你的车不是透明的,那肯定可以遮挡上。(如图10所示)

图10 实心车

那透明的,如果我又不想显示后面怎么办? 

这时候我们就可以用ColorMask,可以选择这些被挡住的东西要不要显示出来,显示哪部分颜色?

ColorMask R,意思是输出颜色中只有R通道会被写入

ColorMask G,意思是输出颜色中只有G通道会被写入

ColorMask B,意思是输出颜色中只有B通道会被写入

ColorMask A,意思是输出颜色中只有A通道会被写入

ColorMask RGB 或者GB,或者RB等,或者其他组合,然后相应的通道会被写入

ColorMask 0,清空所有颜色

我们希望所有遮挡的都不显示,就用0这个。

但是,这个只能写在Pass里,而且,我们是先清空,再画别的,所以这个Pass要写在前面。代码如下:

Shader "Custom/012"
{Properties{_Color("Color",Color)=(0,0.5,0.5,0)_Power("Power",Range(0.5,20)) = 3}SubShader{Tags{"Queue" ="Transparent"}//这里先把遮挡的都清空Pass{ColorMask 0}//然后再把别的显示出来CGPROGRAM#pragma surface surf Lambert alpha:fadefloat4 _Color;float _Power;struct Input{float3 viewDir;};void surf(Input IN,inout SurfaceOutput o){half dotp =1-saturate(dot(normalize(IN.viewDir),o.Normal));o.Emission =_Color.rgb * pow(dotp,_Power)*10;o.Alpha = pow(dotp,_Power);}ENDCG}
}

 七、作者的碎碎念

你们还想看什么效果,记得留言哦~

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

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

相关文章

idea或vscode支持vue语法,ts可解析*.vue

一、ide不能解析vue文件 刚开始导入时,在vscode中的vue文件中内容都是灰色的 ide不能解析vue解决方法: 1.idea或webstorm安装vue.js插件 2.在vscode中 vue2.0的项目安装vetur插件vue3.0及以上的项目安装Vue-official插件(之前是Volar&…

PC XMind v24 解锁版安装教程 (全球领先的商业思维导图软件)

前言 XMind 是一款专业的全球领先的商业思维导图软件,在国内使用广泛,拥有强大的功能、包括思维管理、商务演示、与办公软件协同工作等功能。它采用全球先进的Eclipse RCP软件架构,是集思维导图与头脑风暴于一体的可视化思考工具&#xff0c…

mysql GROUP_CONCAT分组连接

文章目录 GROUP_CONCAT 分组连接GROUP_CANCAT 的使用分班级列出名单分班级列出名单并包含显示性别组合IFNULL组合IF组合case when GROUP_CONCAT 分组连接 准备的数据示例 CREATE TABLE students (id int(11) NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,classNa…

Rust监控可观测性

可观测性 在监控章节的引言中,我们提到了老板、前端、后端眼中的监控是各不相同的,那么有没有办法将监控模型进行抽象、统一呢? 来简单分析一下: 业务指标实时展示,这是一个指标型的数据( metric )手机 APP 上传的数…

Karabiner-Elements 设置mac键盘

软件下载地址: Karabiner-Elements 修改键盘位置,但是重启后,就消失了。 {"description": "New Rule (change left_shiftcaps_lock to page_down, right_shiftcaps_lock to left_commandmission_control)","manip…

Python下三方库pyttsx3让你的文本读出来(Win10环境)

一、三方库pyttsx3简介: pyttsx3是一个文本到语音转换的Python库,能够跨平台工作在Windows、MacOS和Linux系统上。这个库的一个显著特点是它不依赖于网络连接,因为它使用了系统自带的语音引擎。pyttsx3支持多种语音属性,包括语速…

Android简介-历史、API等级与体系结构

1. Android简介 Android是一种基于Linux内核的自由及开放源代码的操作系统。最初是由安迪鲁宾(Andy Rubin)开发的一款相机操作系统。2005年8月被Google收购。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。…

Kylin维度与度量:大数据分析的双剑合璧

Kylin维度与度量:大数据分析的双剑合璧 在大数据分析的浩瀚宇宙中,Apache Kylin作为一颗璀璨的星辰,以其卓越的预计算能力,为数据分析提供了前所未有的速度与效率。Kylin的维度和度量,构成了其多维数据分析的核心&…

【AI原理解析】—决策树原理

目录 一、定义与背景 二、基本组成 三、构建过程(以分类问题为例) 四、剪枝处理 五、算法与应用 一、定义与背景 决策树是一种基于树形结构的监督学习算法,主要用于分类和回归问题。它通过构建一棵树来模拟人类进行决策的过程&#xff0…

学历优先还是专业优先?高考志愿填报的抉择

学历优先还是专业优先?高考志愿填报的抉择 2024年高考帷幕落下,新一轮的思考与选择悄然来临。对于每一位高考考生,选择学校和专业是开启大学新生活的两个前置必选项。然而,有时候“鱼与熊掌不可兼得”,在分数受限的情…

博途(TIA Portal)自动化工程软件下载安装,TIA Portal V18软件安装包获取

博途(TIA Portal)不仅仅是一款自动化工程软件,它更是西门子自动化领域的璀璨明珠。 它能够将西门子的所有自动化产品无缝集成在一起,无论是PLC、人机界面,还是伺服系统、马达、变频器、网络组件等,博途都能…

开发中间件的底层原理通常涉及以下几个关键方面:

开发中间件的底层原理通常涉及以下几个关键方面: 1. **抽象化(Abstraction)**: - 中间件提供一层抽象,以便应用程序可以与底层系统或网络服务交互,而无需了解具体的实现细节。 2. **封装(E…

餐饮行业气体泄露风险预警:可燃气体报警器的校准检测策略

在餐饮行业中,使用天然气、液化石油气等可燃气体作为烹饪能源是普遍现象。 然而,气体泄露问题时常威胁着餐饮场所的安全,一旦发生泄露,可能导致火灾、爆炸等严重事故。 因此,为了确保餐饮场所的安全,安装…

Oracle 中 FETCH FIRST ... ROWS WITH TIES子句

在 Oracle 数据库中,FETCH FIRST … ROWS WITH TIES 是一个子句,它用于与 ORDER BY 子句结合,以获取与第一组(根据排序条件)具有相同排序值的所有行。这通常用于在结果集中包括那些与最前面的几行具有相同排序值的行。…

文生视频模型Sora刷屏的背后的数据支持

前言:近日,OpenAI的首个文生视频模型Sora横空出世,引发了一波Sora热潮。与其相关的概念股连续多日涨停,多家媒体持续跟踪报道,央视也针对Sora进行了报道,称这是第一个真正意义上的视频生成大模型。 01 …

计算机视觉实验二:基于支持向量机和随机森林的分类(Part two: 编程实现基于随机森林的泰坦尼克号人员生存与否分类)

目录 一、实验内容 二、实验目的 三、实验步骤 四、实验结果截图 五、实验完整代码 一、实验内容 编程实现基于随机森林的泰坦尼克号人员生存与否分类,基本功能包括:Titanic - Machine Learning from Disaster数据集的下载;数值型数据和文本型数据的筛查、舍弃、合并、…

Rust日常开发三方库精选

日常开发三方库精选 对计算机、编程、架构的理解决定一个程序员的上限,而工具则决定了他的下限,三尺森寒利剑在手,问世间谁敢一战。 本文就分门别类的精心挑选了一些非常适合日常开发使用的三方库,同时针对优缺点、社区活跃等进…

Ubuntu20.04离线安装dpkg

方法一:百度云盘下载离线安装包 链接:https://pan.baidu.com/s/1L7TaFwE35bMfOJbXmJcWwQ 提取码:mjsm --来自百度网盘超级会员V4的分享 方法二:找一台联网计算机,自行下载离线安装包。 1. 创建存放离线包文件夹 …

一次DC9靶机的渗透测试

1.信息收集 2.SQL注入获取用户 3.LFI读取etcpasswd 4.Hydra爆破SSH 5.添加etcpasswd用户提权 1.信息收集: 探测存活主机 nmap -sP 192.168.11.1/24 发现主机探测端口和服务: nmap -sV -p 1-65535 192.168.11.144 2.SQL注入获取用户: HT…

liunx 搭建 zookeeper

创建下载路径 #创建文件夹 mkdir -p /mydata/zookeeper #进入文件夹 cd /mydata/zookeeper下载zookeeper文件 #下载 wget https://mirrors.aliyun.com/apache/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz #解压文件 tar -zxvf apache-zookeeper-3.5.9-bin.…