本篇参考B站视频
“技术美术百人计划”·霜狼_may ;
《Shader入门精要》·冯乐乐女神著;
OpenGL ES 3.0编程指南
Unity官方“任意门”视频
图像处理抖动相关
本篇主要用于自我复习,其中会掺入一些个人观点,如有疑问或发现有什么错误,请多指教~
本篇内容主要包括:模板测试与深度测试;
一.模板测试
下图是Learn opengl中关于模板测试的,形象表现基本原理和使用方法;
1.模板测试能做些啥
如下图的一些效果,当然关于传送门的做法,我们还有别的选择,Unity官方有发过关于传送门相关的视频,简单来说是利用添加一台相机和一张Render texture结合一片quad来实现效果,附下连接
2.模板测试是什么
- 先回顾下渲染管线,在片元着色器处理后:
- Pixel Ownership Test :控制当前屏幕像素的使用权限,如Unity中的Game/Scence窗口;
- Scissor Test:裁剪测试,根据自定义,在Game/Scence确定要渲染的部分,默认是都渲染;
- Alpha Test:透明度测试,根据透明度阈值判断,舍弃透明度小于阈值的片元;(在OpenGL ES3.0中被删除,因为可以在片段着色器中进行)
- Stencil Test :模板测试,在输入片段的模板上进行,以确定片段是否该被拒绝;
- Depth Tset :深度测试,在输入片段的深度值上进行,以确定片段是否该被拒绝;
- Blending:透明度混合,用于实现半透明效果;
- Dithering:抖动,可用于最小化,因为使用有限精度在帧缓冲区中保存颜色值而产生伪像,这里有看了下OpenGL ES3.0,暂时也可以先参考下这篇;
- Logic Op;逻辑操作;(在OpenGL ES3.0中被删除,因为很少被应用程序使用)
- 逻辑上理解模板测试
翻译下下面的图,
//掩码类比于PS,AE中的蒙版遮罩,属于程序“黑话”
if(当前模板缓冲参考值&读掩码 比较 模板缓冲区中值