当前位置: 首页 > news >正文

Unity Shader 学习14:模版测试 与 深度测试

        目录

一、模版检测

1. 概念

① 比较 Comp

② 更新 Pass

2. 示例分析 - 3D卡牌

二、深度检测

1. 概念

① 比较:深度测试 Z-Test

② 更新:深度写入 Z-Write

2. 示例分析


一、模版检测

核心:当前模版缓冲区中的值 [stencilBufferValue] 和 准备渲染的物体的模版参考值(我们设的) [referenceValue]比较默认情况下 只有通过比较才会渲染像素,否则抛弃

1. 概念

① 比较 Comp

这个比较可以用 大于等于小于不等于这些方式,或者直接了当地不管三七二十一,设为 永远通过 或者 永远不通过

② 更新 Pass

而模板测试结束时,可以分别选择在 通过或者没通过 的情况下,对当前缓冲区的值做不同的更新操作,比如默认情况就是,在通过时 替换 (replace) 缓冲区的值为物体的参考值。

2. 示例分析 - 3D卡牌

这样的3d卡牌的效果原因是,只有在这个卡面之内的区域后面的物体才能被看到,其余会被剔除。

而如果用模版测试来做的话,本质上有点类似于一个 “与”运算,在这里我画了一个下图,首先我给卡面所在的缓冲区区域给定永远都是1,然后再给小兔子的参考值也为1,此时我设定 只有物体参考值等于缓冲区的模版值时才能正常显示,那么就只有两者 相交同时为1 的区域会被显示了。

  • 因此卡面的模版测试为:让该区域缓冲区永远为1(这里的_ID假设是1)
Stencil{
    Ref [_ID]
    Comp Always
    Pass replace
}
  • 后面物体的模版测试为:我也设为1(_ID假设也是1),只有与缓冲区相同时我再通过测试
Stencil{
    Ref [_ID]
    Comp equal
}

这样就能实现3D卡牌的效果了,但是有几个细节需要注意:
渲染队列:设置卡面的渲染队列为 "Geometry+1",后面物体的渲染队列为 "Geometry+2",要先渲染卡面再渲染后面的物体,才能按我们想要的顺序进行模版比较。
深度写入:卡面要取消深度写入,因为他是挡在前面的,后面的物体需要透过它显示。

卡面
后面物体


二、深度检测

1. 概念

① 比较:深度测试 Z-Test

深度检测是在模版测试之后进行的测试,这是一个处理物体互相遮挡关系的过程,默认情况下,只有深度值小等于缓冲区中深度值的像素才能被渲染。

这里需要区分两个概念:深度值渲染队列
深度值越大表示越远,而渲染队列(直观层面上)是值越小表示越远。

② 更新:深度写入 Z-Write

在 Z-Test 之后,还要进行 Z-Write 。他们俩同时决定数据是否会被写入 深度缓冲区 以及 颜色缓冲区

当深度测试都不通过的时候,不管深度写入是否开启,都不会写入两个缓冲区。
而深度测试通过时,如果Z-Write开启,则两个都写入;否则只写入颜色缓冲区。
 

2. 示例分析

简单分析一下,这个兔兔被前面遮挡的物体拆成了两个部分来渲染,一个是没遮挡部分 - 正常渲染(Normal),另一个是遮挡部分 - 做视觉处理(Xray),需要两个pass来实现。

正常部分 全按默认值设 或者 不设 就好: ZTest LEqual    ZWrite on
Xray部分 则相反,当它在更深的时候渲染,并且不写入深度: ZTest Greater   ZWrite off

相关文章:

  • Linux文件操作原理
  • 机器学习:强化学习的epsilon贪心算法
  • CodeMeter SmartBind® 软授权智能绑定技术
  • 【Azure 架构师学习笔记】- Terraform创建Azure 资源
  • 趣讲TCP三次握手
  • 【Java分布式】Nacos注册中心
  • 深度评测:Cursor、Windsurf、Devin及其他AI编程工具大比拼
  • PS画笔工具
  • 【NLP】注意力机制
  • JavaScript
  • 2024华为OD机试真题-根据某条件聚类最少交换次数(C++/Java/Python)-E卷-100分
  • Linux基础 -- ARM 32 位架构动态注入代码技术文档
  • dify绑定飞书多维表格
  • 前端或者后端通常用到数组使用方式
  • PMP项目管理—整合管理篇—2.制定项目管理计划
  • drupal的翻译集添加后如何起作用
  • mysql怎样优化where like ‘%字符串%‘这种模糊匹配的慢sql
  • ODE卷-可以处理的最大任务数(200分)
  • [记录贴] 火绒奇怪的进程保护
  • Cherry Studio + 火山引擎 构建个人AI智能知识库
  • 山西临汾哪吒主题景区回应雕塑被指抄袭:造型由第三方公司设计
  • 极限拉扯上任巴西,安切洛蒂开启夏窗主帅大挪移?
  • 青海规范旅游包车行为:不得引导外省籍旅游包车违规驻地运营
  • 国羽用冠军开启奥运周期,林丹:希望洛杉矶奥运取得更好成绩
  • 来伊份:已下架涉事批次蜜枣粽产品,消费者可获额外补偿,取得实物后进一步分析
  • 第12届警博会在即:一批便民利企装备亮相,规模创历史新高