图形学初识--深度测试

文章目录

  • 前言
  • 正文
    • 为什么要有深度测试?
      • 画家算法
      • 循环遮挡
    • 深度测试当代最常见实现方式?
      • 总述
      • 什么是z-buffer呢?
      • z-buffer从哪来呢?
      • 如何利用z-buffer实现深度测试?
      • 举个例子
  • 结尾:喜欢的小伙伴点点关注+赞哦!

前言

本章节补充一下深度测试的内容,主要包含:为什么要有深度测试?深度测试现代实现方式?

正文

为什么要有深度测试?

画家算法

当我们渲染两个三角形的时候,如何体现出遮挡关系的呢?实际上一开始,就是谁先渲染谁就可能被覆盖,这种算法就是画家算法。

就如起名,就像画家画画一样,先画的再后面,同样的区域后画的覆盖之!如下图所示:

在这里插入图片描述

循环遮挡

这个山、草地、大树就体现出了这种层次关系,但是当我们需要处理特别复杂的遮挡关系的时候,这种算法就无能为力了,如下所示:

在这里插入图片描述

这种情况就是循环遮挡的关系,无法单纯的实现完成!所以需要引入Z-buer的机制来进行解决这种遮挡问题。

总结一下: 深度测试的本质是为了体现先后的遮挡关系。简单的情形,如画家算法就可以满足,复杂的情形,就需要利用z-buffer机制处理!

深度测试当代最常见实现方式?

总述

通过引入z-buffer机制,通过空间换时间的方法,从而处理像素级别的遮挡问题!

什么是z-buffer呢?

其实本质上就是一块和屏幕空间分辨率同等大小的内存空间,每个元素是一个浮点数!

z-buffer从哪来呢?

大家都看过作者之前讲述屏幕空间变换的那一章节,经过屏幕变换后,得到了每个顶点的z坐标范围为 [ 0 , 1 ] [0,1] [0,1] ,这个z就是代表一种前后关系。

但是这只是顶点级别的前后关系,如何得到像素级别的z值呢?其实很容易联想到,就是三角形光栅化的时候,利用重心坐标插值算法进行插值呗!

如何利用z-buffer实现深度测试?

其实它的思想很混合有点相似,但是它没有中间的部分,它要么通过测试,显示该像素;要么未通过测试,不显示该像素。具体的描述如下:

当我们需要针对 ( x , y ) (x,y) (x,y) 做深度测试时,我们首先获取z-buffer中的对应深度值,假设为 l a s t z last_z lastz ,对于即将渲染的当前像素的深度值,假设为 c u r r e n t z current_z currentz,通过比较两者大小,如果被挡住则丢弃;如果更靠前,则留下来。就是这么简单!

举个例子

假设z越靠近0越近,越靠近1越远,则如下图的初始z-buffer

在这里插入图片描述

当我们需要绘制几个z值为0.4的像素时,如下:

在这里插入图片描述

当又需要绘制一个新的像素区域时,如下:

在这里插入图片描述

是不是很简单呢!当然了,这个深度测试的通过判定,究竟是小的通过,还是大的通过,往往也是由需求而定,各个图形API也都是可以设置的!

结尾:喜欢的小伙伴点点关注+赞哦!

你们的点赞就是我创作的最大动力!希望对各位小伙伴能够有所帮助哦,永远在学习的道路上伴你而行, 我是航火火,火一般的男人!

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

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

相关文章

【计算机毕设】基于SpringBoot的图书进销存管理系统设计与实现 - 源码免费(私信领取)

免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 本研究旨在设计并实现一款基于SpringBoot的图书进销存管理系统,旨在解决图书馆或书店在图书采购、销售和库存管理等方面的问题&#xff…

新手开视频号小店需要做什么准备?只需做好这几个准备,缺一不可

大家好,我是电商花花。 现在视频号小店发展的这么红火,很多人开始在视频号上开始开店,做电商。 目前视频号小店随着流量的市场的保证,不少商家也想通过视频号小店来进行变现。 但是,我们作为一个新手,想…

APP 备案步骤

一、打开阿里云备案系统平台:aliyunbaike.com/go/beian 二、开始备案 三、填写APP名称并进行信息校验 四、填写主办者基础信息和主办者负责人信息 五、填写互联网信息,android打包的APK包可直接上传识别信息,ios需要手动填写信息 公钥和证书SHA-1指纹如…

图片怎么批量转二维码?快速导出批量图片活码的方法

怎么将多张图片快速批量生成二维码?现在用二维码来展示图片在很多的场景下都有应用,这种方式可以有利于用户快速扫码获取内容,提升便利性的同时也可以降低制作者的成本,提供更好的用户体验。有些时候我们需要针对不同的场景或者物…

江苏大信环境科技有限公司:环保领域的开拓者与引领者

2009 年,江苏大信环境科技有限公司在宜兴环保科技工业园成立。自创立之始,该公司便笃定坚守“诚信为本、以质量求生存、以创新谋发展”这一经营理念,全力以赴为客户构建专业的工业有机废气治理整体解决方案,进而成为国家高新技术企…

Streamsets-JDBC模式offset变化逻辑和如何向下传递offset

Streamsets的版本为3.16.0 离线版 offset在jdbc模式中起到非常关键的作用,是滚动查询的基础,offset的准确直接影响数据同步的质量。 本文主要分享一下JDBC Query Consumer中的offset,包括变化逻辑、存储方式、处理器如何获取到最新的offset。…

coze扣子自定义插件使用方式1

1,模型中的工具描述 2,大模型调用,触发接口:

Outlook 邮箱使用技巧

良好时间管理的基本原则 Outlook 是帮你管理电子邮件、日历、联系人和任务的工具。 因此,不论是在沟通还是在时间管理中,它都占据着中心位置。 为充分利用 Outlook,我们提出了一些基本原则: 减少阅读邮件的位置。 如果你使用的是…

机器学习的热门领域及应用趋势

机器学习的热门领域及应用趋势 近年来,机器学习(Machine Learning, ML)已经成为科技领域的热门话题,其在各个行业的应用越来越广泛和深入。本文将详细介绍当前机器学习的几个热门领域,以及人们在这些领域中使用的机器…

文件同步软件,PanguFlow局域网横着走

说到文件同步,它对企业来说及其重要,因为有了文件同步,这个文件数据它才能备份起来,才能用来抵抗自然灾害,比如服务器硬盘损坏了,你要是不备份,这损失可就大了,一款合适的文件同步软…

第二讲笔记:隐私计算助力数据要素流通

1、数据要素流转与数据 2、数据外循环中的信任 焦虑 信任焦虑背后的代表性案例 内鬼门 : 2023 年 , 美国科技公司 Ubiquiti在2021年1月曝出数据泄露事 件, “攻击者”在随后的“谈判”中试 图向该企业勒索近200万美元(50比特 币&…

javacv ffmpeg使用笔记 (补充中...)

javacv ffmpeg使用笔记 一、maven依赖二、示例代码1. 获取视频时长 三、小技巧 一、maven依赖 使用javacv ffmpeg并指定classifier之后,就不需要额外安装ffmpeg软件(jar包中已经内置)了。 全量依赖包(不推荐)安装包总大…

PCIe的链路状态

目录 概述 链路训练的目的 两个概念 下面介绍LTSSM状态机 概述 PCie链路的初始化过程较为复杂,Pcie总线进行链路训练时,将初始化Pcie设备的物理层,发送接收模块和相关的链路状态信息,当链路训练成功结束后,PCIe链…

数据库 mysql 的彻底卸载

MySQL卸载步骤如下: (1)按 winr 快捷键,在弹出的窗口输入 services.msc,打开服务列表。 (2)在服务列表中, 找到 mysql 开头的所有服务, 右键停止,终止对应的…

3D摄影棚布光软件:Set A Light 3D for Mac 永久试用版

Set A Light 3D 是一款专业的灯光设计软件,可以帮助用户轻松创建逼真的灯光效果和场景。它提供了丰富的灯光模型和材质库,用户可以根据需要自由调整灯光的颜色、亮度和方向,实时预览效果。同时还支持灯光的投射、反射和阴影等高级特效&#x…

【Redis】 Java操作客户端命令——列表操作与哈希操作

文章目录 🍃前言🌴列表操作🚩lpush 和 lpop🚩rpush 和 rpop🚩lrange🚩bloop🚩brpop🚩lindex🚩linsert🚩llen 🎋哈希操作🚩hset 和 hge…

java面试题及答案2024,java2024最新面试题及答案(之二)

四、反射 57. 什么是反射? 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力 Java反射: 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调…

JCR一区级 | Matlab实现TCN-BiLSTM-MATT时间卷积双向长短期记忆神经网络多特征分类预测

JCR一区级 | Matlab实现TCN-BiLSTM-MATT时间卷积双向长短期记忆神经网络多特征分类预测 目录 JCR一区级 | Matlab实现TCN-BiLSTM-MATT时间卷积双向长短期记忆神经网络多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.JMatlab实现TCN-BiLSTM-MATT时间卷积双…

html+CSS+js部分基础运用12

一、显示列表项的内容 编写javaScript代码实现用户登录时数据合法性校验功能,界面如图教材P338 第2题,效果如下图所示: 图1 显示列表项内容 二、日期的处理 实时显示当前时间及累计登录时间,如下图2所示。[提示window.setInt…

鸿蒙开发接口资源调度:【@ohos.workScheduler (延迟任务调度)】

延迟任务调度 本模块提供延迟任务注册、取消、查询的能力。 开发者在开发应用时,通过调用延迟任务注册接口,注册对实时性要求不高的延迟任务,该任务默认由系统安排,在系统空闲时根据性能、功耗、热等情况进行调度执行。 说明&am…