码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 3.1 模板测试与深度测试(Stencil Test & Z Test)


    一、模板测试(Stencil Test)

    模板测试可以实现的一些效果图

    1.是什么

    ①从渲染管线出发:模板测试是在逐片源操作阶段,透明测试之后,深度测试之前的位置。

    ②从书面概念上理解

    说到模板测试,就要先说道模板缓冲区。模板缓冲区与颜色缓冲区和深度缓冲区类似,模板缓冲区可以为屏幕上的每个像素点保存一个无符号证书值(通常的话是个8位整数)。这个值的具体一一视程序的具体应用而定。在渲染的过程中,可以用这个值与一个预先设定的参考值相比较,根据比较的结果来决定是否更新相应的像素点的颜色值。这个比较的过程被称为模板测试。模板测试发生在透明测试之后,深度测试之前。如果模板测试通过,则相应的像素点更新,否则不更新。

    ③从逻辑上理解:通过一些逻辑判断,针对当前像素进行取舍,如下图。stencilBufferValue是模板缓存中的值,其它由我们定义

    2.语法表示

    • Ref referenceValue //参考值
    • ReadMask readMask //读取掩码,取值范围也是0~255的整数,默认255,二进制11111111,即读取的时候不对referenceValue和stencilBufferValue产生效果,读取的还是原始值
    • WriteMask writeMask //输出掩码,当写入模板缓冲时进行掩码操作(按位与【&】),writeMask取值范围是0~255的整数,默认值也是255,即当修改stencilBufferValue值时写入的仍是原始值
    • Comp comparisionFunction //比较方式,关键字见下图
    • Pass stencilOperation //条件满足后的处理
    • Fail stencilOperation //条件不满足后的处理
    • ZFail stencilOperation //深度测试失败后的处理

    ComparisionFunction

    StencilBufferValue(Pass,Fail,ZFail)

    3.模板测试流程

    4.模板测试总结

    • 使用模板缓冲区最重要的两个值:当前模板缓冲之(stencilBufferValue)和模板参考值(referenceValue)
    • 模板测试主要就是对这两个值使用特定的比较操作:Never,Always,Less,LEqual,Greater,Equal等等
    • 模板测试之后要对模板缓冲区的值(stencilBufferValue)进行更新操作,更新操作包括:Keep,Zero,Replace,IncrSat,DecrSat,Invert等等
    • 模板测试之后可以根据结果对模板缓冲区做不同的更新操作,比如模板测试成功操作Pass,模板测试失败操作Fail,深度测试失败操作ZFail,还有针对正面和背面精确更新操作PassBack,PassFront,FailBack等等

    5.模板测试扩展

    • 描边
    • 多边形填充
    • 反射区域控制
    • shadow volume阴影渲染
    • 等等

    视频代码 Stencil-Test

    StencilMask

    ToonLitStencilMasked

  • 相关阅读:
    数据库事务四大特性-ACID(原子性、一致性、隔离性、持久性)
    死磕solidity之如何有效的节省gas.md
    WMS仓储管理系统的工作流程是什么
    北大肖臻老师《区块链技术与应用》系列课程学习笔记[12]以太坊-账户
    阿里云通义千问开源两款语音基座模型分别是SenseVoice和CosyVoice
    web大学生个人网站作业模板——上海旅游景点介绍网页代码 家乡旅游网页制作模板 大学生静态HTML网页源码...
    web期末网站设计大作业:基于HTML+CSS+JavaScript制作新能源汽车企业网站
    问题解决:NPM 安装 TypeScript出现“sill IdealTree buildDeps”
    面试数据库篇(mysql)- 08事务
    springmvc异常处理解析#ExceptionHandlerExceptionResolver
  • 原文地址:https://blog.csdn.net/s178435865/article/details/133847646
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号