UnityShader(十七)透明效果

前言:

在实时渲染中实现透明效果,通常会在渲染模型时控制它的透明通道(Alpha Channel)。当开启透明混合后,一个物体被渲染到屏幕上时每个片元除了颜色值和深度值外,还有一个透明值,1表示像素完全不透明,0表示完全透明。

Unity中通常有两种方法实现透明效果:

1.使用透明测试(Aplha Test),这种方法其实无法实现真正的半透明效果

2.透明度混合(Alpha Blending)

透明度测试

只要一个片元的透明度不满足条件,那么它对应的片元就会被舍弃。被舍弃的片元不会进行任何处理,也不会对颜色缓冲区有任何影响,否则就会按照普通的不透明物体的处理方式进行处理,即进行深度测试、深度写入等。

也就是书透明度测试不需要关闭深度写入,它和其它不透明物体最大的不同就是它会根据透明度来舍弃一些偏远。但是这种效果很极端,要么完全透明,要么完全不透明,也就不能够实现半透明的效果

透明度混合

这种方法可以实现真正的半透明效果。它会使用当前片元的透明度作为混合因子,与已经存储再颜色缓冲中的颜色值进行混合,得到新的颜色。

但是透明度混合需要关闭深度写入,这需要我们小心物体的渲染顺序。但需要注意的是,透明度混合只是关闭了深度写入,但不会关闭深度测试。

渲染顺序的重要性

对于游戏物体都是不透明物体来说,渲染顺序不是很重要,因为强大的深度测试会解决游戏物体的前后关系。

假设现在场景中有两个物体A和B,A为半透明物体,B为透明物体,且A在B的前面。

第一种情况:我们先渲染B,再渲染A。呢么由于不透明物体开启了深度测试和深度写入,而此时深度缓存中没有任何数据,那么B就会被写入颜色缓冲区和深度缓冲区。随后再渲染A,透明物体会进行深度测试但不会深度写入,所以在渲染出的图像中我们发现B会比A距离摄像机更近,我们会使用A的透明度来和颜色缓冲中的B的颜色进行混合,得到真正的半透明物体。

第二种情况:我们先渲染A,再渲染B。渲染A时深度缓冲区没有任何有效数据(因为透明物体是不需要深度写入的),因此A直接写入颜色缓冲中,但不会修改深度缓冲。等到渲染B时,B会进行深度测试直接通过,那么它的颜色就会被直接写入颜色缓冲中,结果就是B的颜色会直接覆盖颜色缓冲中A的颜色,从视觉上来看,B出现在A的前面,这是错误的。

同样,现在假设A和B都是半透明物体,且A在B前面。

第一种情况:先渲染B再渲染A。那么B会正常写入颜色缓冲,然后A会和颜色缓冲中B颜色进行混合,得到正确的半透明效果。

第二种情况:先渲染A再渲染B。那么A会正常写入颜色缓冲,然后B会和颜色缓冲中A颜色进行混合,这样结果就相反了过来,得到错误的结果(B看起来像是在A前面)

UnityShader的渲染顺序

Unity为了解决渲染顺序问题提供了渲染队列(render queue)的解决方案,我们可以使用SubShader的Queue标签来决定我们的模型将归于哪个渲染队列。Unity在内部使用一系列整数索引来表示每个渲染队列,且索引越小表示越先被渲染。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于支持向量机(svm)的人脸识别

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 数据集加载与可视化 from sklearn.datasets import fetch_lfw_people faces fetch_lfw_people(min_faces_per_person60) # Check out sample…

Flutter-仿淘宝京东录音识别图标效果

效果 需求 弹起键盘,录制按钮紧挨着输入框收起键盘,录制按钮回到初始位置 实现 第一步:监听键盘弹起并获取键盘高度第二步:根据键盘高度,录制按钮高度计算偏移高度,并动画移动第三步:键盘收起…

HTML5语义化元素

在HTML5之前,网站的分布层级有哪些呢? nav,header,main,footer 这样做有一个弊端 我们往往过多的使用div,通过ID或class来区分元素 对于浏览器来说这些元素不够语义化 对于我来说搜索引擎来说,不…

项目性能优化—使用JMeter压测SpringBoot项目

我们的压力测试架构图如下: 配置JMeter 在JMeter的bin目录,双击jmeter.bat 新建一个测试计划,并右键添加线程组: 进行配置 一共会发生4万次请求。 ctrl s保存; 添加http请求: 配置http请求:…

【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

docker和K8S理解 一、docker的问世虚拟机是什么?Docker的问世?docker优点及理解 二、Kubernetes-K8SK8S是什么?简单了解K8S架构Master节点Node节点K8S架构图 一、docker的问世 在LXC(Linux container)Linux容器虚拟技术出现之前,业…

lv17 BOA服务器搭建 4

1 boa简介: 其可执行代码只有大约60KB左右,Boa是一个单任务的HTTP服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。Boa支持CGI。 Boa的设计目标是速度和安全。 Boa的主要设计目标是速度和安全性。安…

YOLOv8改进 | 图像去雾 | MB-TaylorFormer改善YOLOv8高分辨率和图像去雾检测(ICCV,全网独家首发)

一、本文介绍 本文给大家带来的改进机制是图像去雾MB-TaylorFormer,其发布于2023年的国际计算机视觉会议(ICCV)上,可以算是一遍比较权威的图像去雾网络, MB-TaylorFormer是一种为图像去雾设计的多分支高效Transformer…

详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议

目录 IP安全概述 IPSec协议簇 IPSec的实现方式 AH(Authentication Header,认证头) ESP(Encapsulating Security Payload,封装安全载荷) IKE(Internet Key Exchange,因特网密钥…

容器部署对比:通用容器部署 vs 使用腾讯云容器镜像服务(TCR)部署 Stable Diffusion

目录 引言1 通用容器部署的主要步骤1.1 准备环境1.2 构建 Docker 镜像1.3 上传镜像1.4 部署容器1.5 配置网络1.6 监控和维护 2 使用腾讯云容器镜像服务(TCR)部署的主要步骤2.1 下载 Stable Diffusion web UI 代码2.2 制作 Docker 镜像2.3 上传镜像到 TCR…

十、MySQL主从架构配置

一、资源配置 主库:192.168.134.132 从库:192.168.134.133 从库:192.168.134.134 二、主从同步基本原理: master用户写入数据,会生成event记录到binary log中,slave会从master读取binlog来进行数据同步…

【STL源码剖析】【2、空间配置器——allocator】

文章目录 1、什么是空间配置器?1.1设计一个简单的空间配置器,JJ::allocator 2、具备次配置力( sub-allocation)的 SGI 空间配置器2.1 什么是次配置力2.2 SGI标准的空间配置器,std::allocator2.2 SGI特殊的空间配置器,std::alloc2.…

09|代理(上):ReAct框架,推理与行动的协同

应用思维链推理并不能解决大模型的固有问题:无法主动更新自己的知识,导致出现事实幻觉。也就是说,因为缺乏和外部世界的接触,大模型只拥有训练时见过的知识,以及提示信息中作为上下文提供的附加知识。如果你问的问题超…

npm install 报错

问题原因是依赖冲突导致不能下载依赖包(dependency conflict), 因为npm版本升级(version>7), npmV7之前的版本遇到依赖冲突会忽视依赖冲突,继续进行安装, npmV7版本开始不会自动…

login登录界面

展示情况 代码&#xff1a; <template><div class"wrapper"><div style"margin: 200px auto; background-color: #fff; width: 350px; height: 300px; padding: 20px; border-radius: 10px"> <div style"margin: 20px 0; text…

C#,图论与图算法,无向图(Graph)回环(Cycle)的不相交集(disjoint)或并集查找(union find)判别算法与源代码

1 回环(Cycle)的不相交集(disjoint)或并集 不相交集数据结构是一种数据结构,它跟踪划分为多个不相交(非重叠)子集的一组元素。联合查找算法是对此类数据结构执行两个有用操作的算法: 查找:确定特定元素所在的子集。这可用于确定两个元素是否在同一子集中。 并集:将…

【软考】系统集成项目管理工程师(二十一)法律法规和标准规范【1分】

一、相关法规标准规范 1.对没有国家标准而又需要在全国某一行业范围内统一的技术要求&#xff0c;可以制定行业标准&#xff0c;在公布国家标准 之后&#xff0c;该项行业标准即行废止。2.对没有国家标准和行业标准而又需要在省、自治区,直辖市范围内统一的工业产品的安全、卫…

吴恩达深度学习环境本地化构建wsl+docker+tensorflow+cuda

Tensorflow2 on wsl using cuda 动机环境选择安装步骤1. WSL安装2. docker安装2.1 配置Docker Desktop2.2 WSL上的docker使用2.3 Docker Destop的登陆2.4 测试一下 3. 在WSL上安装CUDA3.1 Software list needed3.2 [CUDA Support for WSL 2](https://docs.nvidia.com/cuda/wsl-…

25考研|北大软微会「爆炸」吗?

软微不是已经爆炸了吗&#xff1f; 大家去看看他的录取平均分就知道了&#xff0c;没有实力千万别碰&#xff0c;现在考软微已经不存在捡漏之说。 110408的复试线已经划到了465分&#xff0c;这个人真的不低了&#xff0c;因为有数学一和408两个比较难的专业课&#xff0c;复…

华为配置WAPI-PSK安全策略实验

配置WAPI-PSK安全策略示例 组网图形 图1 配置WAPI-PSK安全策略组网图 配置流程组网需求配置思路配置注意事项操作步骤配置文件 配置流程 WLAN不同的特性和功能需要在不同类型的模板下进行配置和维护&#xff0c;这些模板统称为WLAN模板&#xff0c;如域管理模板、射频模板、VAP…

MVC接收请求教程

mvc接收各种请求 1-环境搭建 1.1-准备apifox发送请求 1.2-项目搭建 ①创建Web骨架的Maven项目 ​ --打开2023-IDEA &#xff0c;选择New Project ​ --选择Maven Archetype ​ --注意点&#xff1a;Catalog默认就行了 ​ --Archetype选择webapp ​ --JDK跟着黑马敲最好…
最新文章