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 上传的数…

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

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

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

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

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

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

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

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

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…

2024年6月29日(星期六)骑行十里箐

2024年6月29日 (星期六)骑行十里箐,早8:00到8:30,大观公园门口集合,9:00准时出发【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:大观公园门口集合 ,家住东,南,北…

如何在前端项目中制定代码注释规范

本文是前端代码规范系列文章,将涵盖前端领域各方面规范整理,其他完整文章可前往主页查阅~ 开始之前,介绍一下​最近很火的开源技术,低代码。 作为一种软件开发技术逐渐进入了人们的视角里,它利用自身独特的优势占领市…

四步轻松搞定!探索字节最新AnimateDiff-Lightning:高质量视频生成的秘密武器!

字节前脚刚发布了文生图大模型 SDXL-Lightning,后脚就又对文生视频领域下手了。 就在这几天又推出了文生视频模型:AnimateDiff-Lightning,它是一种快速的文本到视频生成模型。它生成视频的速度比原始 AnimateDiff 快十倍以上,只需…

秋招Java后端开发冲刺——非关系型数据库篇(MongoDB)

MongoDB 本文介绍非关系型数据库MongoDB的基础知识和常见面试题。 (一)基础知识 1. 介绍:MongoDB是一个基于分布式文件存储的数据库,由C语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。 2.特点 特点…

怎样实现聊天弹幕效果?

可以使用HTML、CSS和JavaScript的组合。以下是一个简单的步骤和示例代码&#xff0c;说明如何创建一个基本的弹幕效果&#xff1a; HTML结构&#xff1a; 创建一个用于显示弹幕的容器和输入弹幕的表单。 <!DOCTYPE html> <html lang"en"> <hea…

转运机器人:智能物流的得力助手

在物流行业&#xff0c;转运机器人已经成为提高转运效率、降低成本的重要工具。而富唯智能转运机器人凭借其出色的性能和智能化的设计&#xff0c;成为了众多企业的得力助手。 富唯智能转运机器人采用了先进的AMR控制系统&#xff0c;可以一体化控制移动机器人并实现与产线设备…

【AIGC】关于我用AI这玩意儿搞到人生第一笔副业这件事

前言 起初只是对AI感兴趣 后来没想到这玩意儿还能让我接兼职 我已经嗅到了AI的商机 接下来就是挖掘更钝金主爸爸 低收入一定要学&#xff01;&#xff01;&#xff01;&#xff01; 新手可以先从Midiourney入手 PS&#xff1a;如果不知道怎么学&#xff0c;可以扫描下方二…

渗透测试之SQL注入

渗透测试之SQL注入 1. SQL注入分类 按照攻击类型分为&#xff1a;联合查询注入、布尔注入、时间延迟注入、报错型注入、堆叠型注入等 按照注入位置分为&#xff1a;HTTP头注入、请求参数注入等 按照数据库场景分为&#xff1a;MySQL注入、MSSQL注入、Oracle场景注入 1. My…

注意!!2024下《系统分析师》易混淆知识点来了,赶紧收藏

宝子们&#xff0c;在复习软考系统分析师中&#xff0c;是不是觉得有很多知识点含义比较相近&#xff0c;很多友友刚看的时候估计会像我一样迷迷糊糊的&#xff0c;作为一个软考老鸟&#xff0c;在这里给大家整理了系分学习过程中易混淆的知识点&#xff0c;大家认真复习就行&a…