IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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)

再正常渲染其他物体

效果:

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:56:56  更:2022-02-22 20:58:26 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码