| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> TA100 3.1 -> 正文阅读 |
|
[游戏开发]TA100 3.1 |
1.模板测试Stencil 在per-fragment阶段,发生在透明测试之后、深度测试之前的操作 类似遮罩,对color buffer中的内容做一个判断,通过判断的将会被绘制在屏幕上(像素点更新),反之则被裁剪 Stencil buffer值为0-255(uint8) Stencil { Ref referenceValue ReadMask readMask WriteMask writeMask Comp comparisonFunction Pass stencilOperation Fail stencilOperation ZFail stencilOperation } comparisonFunction stencilOperation(是否更新StencilBufferValue) Stencil效果分析:? 三层:原场景、蒙版(一般自身不渲染)、蒙版后的物体 原场景略 蒙版: ?核心:subshader下添加ColorMask,关闭深度写入,写stencil,将其渲染顺序后移 在正常场景的下一步绘制,always使在蒙版中的像素都能通过stencilTest,通过的像素StencilBufferValue全部更新为shader中指定的referenceValue ColorMask0来使其不被渲染 蒙版后的物体: ?核心:写stencil,渲染顺序比蒙版后 在蒙版绘制完后绘制,对于蒙版中的像素,StencilBufferValue已更新,此时只要将物体自己的referenceValue设置为可以通过comparison的值即可 2.深度测试 Ztest Pre-fragment阶段,发生在模板设置之后,透明混合之前 Overlay:像素被重复绘制 ?将物体的深度值与Zbuffer中的深度值进行比较,通过则写入颜色缓冲区(更新颜色) Zbuffer值为float(0-1),一般为24位 注意Zbuffer值不以线性而一般以倒数形式存储(近处精度大) 画家算法:先画远后画近(overdraw产生) Zwrite:是否将当前深度写入Zbuffer Ztest:是否通过深度缓冲并更新颜色 ?深度测试通过,深度写入开启:写入深度缓冲区,写入颜色缓冲区。 深度测试通过,深度写入关闭:不写深度缓冲区,写入颜色缓冲区。 深度测试失败,深度写入开启:不写深度缓冲区,不写颜色缓冲区。 深度测试失败,深度写入关闭:不写深度缓冲区,不写颜色缓冲区。 Ztest比较操作同stencil(都是用compare宏) RenderQueue:绘制顺序,小的早绘制,大的晚绘制 Background:1000 Geometry(Default):2000 AlphaTest:2450 Transparent:3000 Overlay:4000 不透明物体从前往后绘制,透明物体从后往前绘制(overlay) 核心:subshader下声明ZWrite模式和ZTest比较模式 Early-z可在vertshader、光栅化之后,fragshader之前进行深度测试,剔除掉无需渲染的物体,减少overdraw,但之后仍要进行检查确保遮挡关系的正确 作业: 利用stencil实现卡通渲染飘眉效果,让眉毛不被头发遮挡 Stencil: 先渲染眉毛,为眉毛设置Reference值,通过则替换Reference值 ?再渲染头发,其Reference值大于脸部等其他位置,小于眉毛,这样在除眉毛以外的区域都会渲染,眉毛处不会渲染头发 ?再正常渲染其他物体 ZTest: 先正常渲染头发 再分两次渲染眉毛:第一次正常渲染未被遮挡的部分(ZTestLEqual),第二次渲染被遮挡的部分(ZTestGEqual) 再正常渲染其他物体 效果: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 16:30:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |