半像素引起的那些坑
来源:互联网 发布:网络带来的弊端 编辑:程序博客网 时间:2024/05/14 17:47
DX9下面的半像素偏移估计坑了不少人,经常不小心半像素偏移搞错就会引起很奇怪的原因,最后查了半天才发现是这么小一个问题,实在令人有些恼火,所以在DX10之后这个东西被当做垃圾直接给扔了,在DX9下面还不得不继续被其迫害。大概想了一下我被这个问题坑了好几回了,有些已经想不起来了,只能把想起来的先记下来:
1.UE3早期版本的AutoBrightness有个很诡异的问题,AutoBrightness大多时候的确起作用,但是美术报了个bug说有时候不起作用,重现了几次都是可以正常工作啊,后来让美术一起来测,后来终于在测了10分钟后发现了规律,当太阳在屏幕中心的右边是的确起作用,一切正常,当太阳移到屏幕左边时发现完全不起作用啊,赶紧PIX抓下来一步步分析,果然在AutoBrightness最后downsample到1x1的rt时不对了,点开mesh详细比较了一下,问题就在于半像素偏移,前面的downsample虽然也没处理半像素偏移但是因为不是1x1的rt,所以还能大致正确,到了最后一个downsample的时候只有1个像素,这时候半像素就是很大的问题了,速度改之,验证通过:)
2.ssao曾经在业界风靡一时,当然现在还依然狂热,是个游戏都有ssao,没ssao都不好意思跟人家讲,实际上个人很不喜欢ssao,噪声太明显,让画面闪烁变得很明显,为了降低噪声UE用了ASSAO,这虽然解决了噪声,但是因为需要ReProjection,对于动态物体ReProjection其实是错的位置,所以需要将动态物体标出来,而且有个积分的过程会对ao带来所谓的ghost也就是拖尾;另外如果调的不是很明显就看不出来了,所以很多游戏都调的很夸张,让脚底下或者墙面下变得很黑,让人觉得画面很脏。当时也尝试了这个风骚的技术,但是cast出来的ray导致的结果非常奇怪,很多地方camera所谓移动就有非常不稳定的结果出现也就是说会突然有突然没,查了好久最后才发现采Depth的时候没考虑半像素偏移,这个depth在屏幕空间虽然只有半个像素,但是depth会反算到世界坐标是让后才cast ray的,屏幕空间半个像素到世界坐标系可能就是几米几十米,这样导致结果就很不稳定了,因为反算到的中心位置其实是个错的。
3.前段时间打算提高一下树叶的aa,做了个尝试,在debug的时候发现了个诡异现象,我只是copy一个分辨率一样的贴图到rt,没有任何缩放,但是画出来的结果却变的很模糊,查了下renderstate发现用了linear,即便是Linear也不该有问题啊,果断PIX,罪魁祸首又是半像素,原因是没有考虑半像素偏移的话再加上Linear相当于输出的像素是采了周围四个像素做了个平均,所以就模糊了
关于半像素还有些问题一时没记起来,等下次记起来再补上吧。
- 半像素引起的那些坑
- 知识小科普!像素英寸与DPI的那些事儿
- 屏幕像素缩放比 dpr 的那些事儿
- 被弄烂并容易引起反感的那些帖子
- 医疗保险和党政档案 引起的那些事
- Google惩罚是由那些原因引起的
- 那些由NSTimer 和performSelector 可能引起的内存泄漏
- 1像素的恩怨情仇,程序猿与设计狮之间的那些破事儿
- 那些曾引起智能家居产业巨震大
- 那些年遇到的那些坑
- 【坑】重置密码引起的mongodb无法访问
- MeshCollider的那些坑
- UITextView的那些坑
- UITextView的那些坑
- cocos2dx的那些坑
- Python 的那些坑
- MJRefresh的那些坑
- MongoDB的那些坑
- javascript中window.showModalDialog的使用以及windows.open使用整理
- Java运算符优先级及结合性
- intel dpdk 在虚拟机 VMware 中安装部署
- 笑过后值得思考的一些编程语录----------搞笑却真实
- 鸟哥私房菜之Linux 文件和目录管理 - 4
- 半像素引起的那些坑
- 【android,20】广播接收者
- 看到部分 行业发展的精华文章,节选一段,转载
- 一段使用 FreeType 在控制台打印字符的 C++ 代码
- 【android,21】Process进程 与线程之间的关系
- 【android,22】屏幕的适配
- 【android,23】手势识别的开发
- Celery 分发任务
- 120 - Stacks of Flapjacks