图形学初识--深度测试

文章目录

  • 前言
  • 正文
    • 为什么要有深度测试?
      • 画家算法
      • 循环遮挡
    • 深度测试当代最常见实现方式?
      • 总述
      • 什么是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.mfbz.cn/a/675942.html

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

相关文章

【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别

目录 一、 动态SQL1.1 \<if>标签1.2 \<trim>标签1.3 \<where>标签1.4 \<set>标签1.5 \<foreach>标签1.6 \<include>标签 二、 #{}与${}的区别2.1 #{}是预编译sql&#xff0c;${}是即时sql2.2 SQL注入2.3 #{}性能高于${}2.4 ${}用于排序功能…

SpringBoot案例,通关版

项目目录 此项目为了伙伴们可以快速入手SpringBoot项目,全网最详细的版本,每个伙伴都可以学会,这个项目每一步都会带大家做,学完后可以保证熟悉SpringBoot的开发流程项目介绍:项目使用springboot mybatis进行开发带你一起写小项目先把初始环境给你们第一步新建springboot项目返…

短剧出海的优势分析

海外短剧作为一种新兴的内容形式&#xff0c;正以其独特的魅力迅速占领市场&#xff0c;为企业带来了前所未有的商业机遇。本文将深入探讨短剧出海的优势&#xff0c;并为企业和老板们提供实用的操作指南。短剧出海是一个包含多个步骤的复杂过程&#xff0c;短剧出海需要综合考…

第100天:权限提升-数据库RedisPostgre第三方软件TV向日葵服务类

目录 思维导图 案例一: 数据库-Redis 数据库权限提升-计划任务 案例二: 数据库-PostgreSQL 数据库权限提升-漏洞 PostgreSQL 提权漏洞&#xff08;CVE-2018-1058&#xff09; PostgreSQL 高权限命令执行漏洞&#xff08;CVE-2019-9193&#xff09; 案例三: 三方应用-…

使用system verilog进行流水灯和VGA打印字符

使用system verilog进行流水灯和VGA打印字符 目录 **使用system verilog进行流水灯和VGA打印字符****system verilog的优点****VGA程序编写**VGA 控制器模块字符生成模块顶层模块测试基准程序**效果** **流水灯程序设计****效果** **总结** system verilog的优点 面向对象编程…

C# WinForm —— 27 28 29 30 ListView 介绍与应用

1. 简介 和ListBox的外观类似&#xff0c;都可以多列显示&#xff0c;但 ListView 功能更强大&#xff0c;提供了5种不同的显示方式 2. 属性 属性解释(Name)控件ID&#xff0c;在代码里引用的时候会用到Enabled控件是否启用CheckBoxes复选框是否显示在项旁边ContextMenuStri…

浏览器渲染优--防抖节流懒加载

合理选择css选择器 相比于.content-title-span&#xff0c;使用.content .title span时&#xff0c;浏览器计算样式所要花费的时间更多。使用后面一种规则&#xff0c;浏览器必须遍历页面上所有 span 元素&#xff0c;先过滤掉祖先元素不是.title的&#xff0c;再过滤掉.title…

拿笔记下来!产品采购制造类合同怎样写比较稳妥?

拿笔记下来&#xff01;产品采购制造类合同怎样写比较稳妥&#xff1f; 近日&#xff0c;几经波折&#xff0c;泰中两国终于完成了潜艇采购谈判&#xff01;你知道吗&#xff1f;产品制造类合同或协议在起草前如果没有充分考虑各种因素&#xff0c;可能会导致一系列问题和不利…

奶茶店、女装店、餐饮店是高危创业方向,原因如下:

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 现在的俊男靓女们&#xff0c;心中都有一个执念&#xff1a; (1)想证明自己了&#xff0c;开个奶茶去…… (2)想多赚点钱了&#xff0c;加盟餐饮店去…… (3)工作不顺心了&#xff0c;搞个女装店去…… 但凡抱着…

【scau数据库实验一】mysql_navicat_数据库定义实验、基本命令

实验一开始之前&#xff0c;如果还有不会使用navicat建议花五分钟补课哦~ 补课地址&#xff1a;【scau数据库实验先导】mysql_navicat_数据库新建、navicat的使用-CSDN博客 实验目的&#xff1a; 理解和掌握数据库DDL语言&#xff0c;能够熟练地使用SQL DDL语句创建、修改和删…

mac电脑用谷歌浏览器对安卓手机H5页面进行inspect

1、mac上在谷歌浏览器上输入 chrome://inspect 并打开该页面。 2、连接安卓手机到Mac电脑&#xff1a;使用USB数据线将安卓手机连接到Mac电脑。 3、手机上打开要的h5页面 Webview下面选择要的页面&#xff0c;点击inspect&#xff0c;就能像谷歌浏览器页面打开下面的页面&#…

Vue——初识组件

文章目录 前言页面的构成何为组件编写组件组件嵌套注册 效果展示 前言 在官方文档中&#xff0c;对组件的知识点做了一个很全面的说明。本篇博客主要写一个自己的案例讲解。 vue 官方文档 组件基础 页面的构成 说到组件之前&#xff0c;先大致说明下vue中页面的构成要素。 在…

Claude 3可使用第三方API,实现业务流程自动化

5月31日&#xff0c;著名大模型平台Anthropic宣布&#xff0c;Claude3模型可以使用第三方API和工具。 这也就是说&#xff0c;用户通过文本提问的方式就能让Claude自动执行多种任务&#xff0c;例如&#xff0c;从发票中自动提取姓名、日期、金额等&#xff0c;该功能对于开发…

【问题随记】System policy prevents Wi-Fi scans,解决连接 WIFI 需要权限的问题

问题随记 System policy prevents Wi-Fi scans&#xff0c;每次打开我的开发板连接 wifi 都会出现下面的弹窗&#xff0c;这也阻挡了我的WIFI自动连接&#xff0c;然后就需要连上屏幕&#xff0c;输入 wifi 密码&#xff0c;这样才能进行 VNC、SSH 等一系列的连接。 问题解决 …

『 Linux 』缓冲区(万字)

文章目录 &#x1f9a6; 什么是缓冲区&#x1f9a6; 格式化输入/输出&#x1f9a6; 刷新策略&#x1fab6; 块缓冲(fully buffered)&#x1fab6; 无缓冲(unbuffered)&#x1fab6; 行缓冲(line buffered) &#x1f9a6; 现象解释&#x1f9a6; exit()与_exit()&#x1f9a6; 进…

CPU 使用率过高问题排查

文章目录 CPU 使用率过高问题排查1. CPU使用率过高常见问题2. 压力测试2.1 stress安装参数说明测试示例 2.2 stress-ng安装参数说明测试示例 3. 问题排查3.1 使用 top 命令3.2 使用 ps 命令3.3 使用 perf top3.4 vmstat 命令常用信息内存信息磁盘信息 CPU 使用率过高问题排查 …

Plotting World Map in Python

1. 方法一 pygal Plotting World Map Using Pygal in Python import pygal # create a world map worldmap pygal.maps.world.SupranationalWorld() # set the title of map worldmap.title Continents# adding the continents worldmap.add(Africa, [(africa)]) worl…

【微信小程序】小锦哥小程序工具 v2.3.8.0

# 简介 小锦哥小程序工具是一款可以对微信小程序进行解密或者反编译的工具&#xff0c;通过这款工具&#xff0c;可以对别人已经发布的小程序进行解密或者是反编译&#xff0c;然后查看源代码。对于网络安全人员来说&#xff0c;可以使用该工具进行安全审计&#xff0c;发现其…

四川汇聚荣聚荣科技有限公司评价怎么样?

四川汇聚荣聚荣科技有限公司评价如何?在科技日新月异的今天&#xff0c;四川汇聚荣聚荣科技有限公司作为业界的一员&#xff0c;其表现自然引起了广泛关注。那么&#xff0c;这家公司究竟如何呢?接下来&#xff0c;我们将从四个不同方面对其进行深入剖析。 一、技术实力 四川…

3DGS语义分割之LangSplat

LangSplat是CVPR2024的paper. 实现3DGS的语义分割&#xff08;可文本检索语义&#xff09; github: https://github.com/minghanqin/LangSplat?tabreadme-ov-file 主要思想是在3DGS中加入了CLIP的降维语义特征&#xff0c;可用文本检索目标&#xff0c;实现分割。 配置环境&…