(转)完美画质 3D游戏反锯齿技术浅析 .

完美的画面已经离我们不再遥远——反锯齿技术浅析

不管现今的游戏画面有多完美,人物和环境有多真实,但游戏画面的构成的主要方式仍然没有得到改善:一帧画面由成千上万像素构成。这意味着物体多边形的轮廓最终是锯齿状的图形。所以画面质量不可能达到理想的标准,除非完全消除“锯齿”。 别担心,精美的画面品质是要牺牲速度的代价来换取的,并且各大显卡厂商都有自己独到的反锯齿技术,他们新的图形加速卡都纷纷支持全屏抗锯齿。完美的画面已经离我们再遥远。

超级采样(Supersampling) 

无论是什么样的抗锯齿技术都是在超级采样技术的基础上发展而来的。在超级采样技术中,画面里的每一个像素点都被拆分成了几个子像素点,然后对它们进行单独处理后分别放入缓冲区。在整个帧的像素都放入缓冲区后接下来就执行反操作,依照模板的式样对拆分的像素采用过滤或“聚合”处理重新生成新的像素。在超级采样期间,画面以较高的分辨率建立,然后依照适当的模板样式进行过滤。(如图1、2)如果我们在800X600的分辨率下打开GF2的4X反锯齿功能后,显卡所表现出的性能将与在1600X1200模式下所表现出的性能相等。由于超级采样消耗了巨大的系统资源,在使用超级采样的反锯齿功能时系统性能的下降非常明显。

多重采样(multisampling)

NVIDIA在GeForce3上采用的多重采样往往被人们误解为超级采样技术,实际上NVIDIA的多重采样技术是超级采样技术的一种变形。 NVIDIA在GeForce3/GeForce4Ti/GeForce4 MX中所采用的多重采样与其在GeForce2中采用的超级采样的主要区别在于:芯片在对同一幅图像进行处理时所处理的子像素的数量不同。如果我们想得到平滑的画面,仅仅对其多边形边缘进行处理就够了。NVIDIA在执行多重采样时有一个特点:在对一个像素点进行着色处理时,不仅仅只对其本身的子像素进行采样,也可以同时对其周边数个像素的子像素进行采样,邻接子像素的图像属性也被包括了进来,影响最终该像素的颜色属性。这样参与计算的子像素样本数目也由原来的2个变为5个。(如图3)

GF3在打开这种全屏抗锯齿技术时,在多边形的边缘上感觉比使用超级采样技术时平滑得多,但性能的下降却不是很明显。(如图4、5)建议有GeForce3以上显卡的朋友打开它。

视觉平滑(smoothvision)

ATI则有自己的反锯齿技术——视觉平滑。该技术利用一个抖动取样表,灵活控制取样的位置变化。这样对一个每组16个样本的取样实际上通过抖动取样表的控制只抽取了其中8个样本(如图6) 应该说视觉平滑smoothvision与超级采样supersampling相比并没有多少优势,在RADEON 8500上所表现出来的实际效果确实教人不敢恭维。开启反锯齿功能后还是会引起性能的下降。因此RADEON 8500在打开抗锯齿功能后自动降低了纹理的细节等级,从而降低了对显存带宽的吞吐量。但是纹理的质量变得非常糟糕。(如图7、8没有打开全屏反锯齿,如图9、10 使用smoothvision 6x)

各位有RADEON 8500的朋友不要着急,我们还可以通过其它的技术来弥补这个缺陷:只需要打开各向异性过滤,就可以用过滤提高纹理的质量。RADEON 8500开启各向异性过滤后性能的损失非常小,而画面质量却提升不少。

16倍全屏幕抗锯齿(FAA-16X)

Martox在Parhelia-512中使用的抗锯齿技术明显优于其它公司。这个革命性的方法对系统的性能影响最低,而且所能达到的消除锯齿的效果也是最好。对于支持FAA-16X的应用程序,Parhelia-512职能的只针对三角形边缘的像素进行柔化,我们在游戏中看到的锯齿都是产生在图形的边缘部分,物体内部根本就不会看到,然后再用上16倍取样,同时还能保留物体内部像素的清晰尖锐,这样就达到了整个画面的柔化效果。由于一般边缘的像素只占有整个画面的很少一部分,所以针对边缘的16倍柔化抗锯齿也不会减少太多的性能。(如图11有Parhelia-512的朋友们,不打开FAA-16X可就亏了!)

高分辨率代替反锯齿

其实要消除锯齿,不一定仅仅用显卡中的反锯齿特效,我们还有一个非常简单的办法——提高分辨率。当分辨率达到一个较高的水平,锯齿也就变得不那么明显了。例如,当分辨率在水平方向上扩大A倍,在垂直方向上扩大B倍,显示器上的物理像素的尺寸实际上变小了,像素的面积事实上缩小了AXB倍。锯齿的幅度也缩小了相同的倍数。

但是想要达到超级取样或4X多重取样的效果,你必须将分辨率在水平方向和垂直方向同时扩大一倍(例如800X600变为1600X1200,1024X768变2048X1536)。当你将显示器的分辨率调到最大值时,你必须忍受60Hz或更低的刷新率。而反锯齿特效所带来的性能下降相对于提高分辨率来说要小一些,尤其是使用Parhelia-512的FAA-16X看起来更划算。总而言之,不是打开全屏反锯齿,就就是提高分辨率。
我们以Homeworld: Cataclysm的某个场景为例比较一下。

最初没有打开全屏反锯齿,舰队看起来模糊的可怜,很难区分舰队单元的机种,而且飞船的轮廓几乎辨认不出来。(如图12、13、14)

打开全屏反锯齿的效果较好,虽然整个画面都变得模糊起来,但仍旧辨认得出飞船的外形。(如图15、16、17)

在提高了分辨率后整个图像清晰分明,感觉比打开反锯齿特效时画面更清楚,但其仔细观察边缘还是有一些细小的锯齿。(如图18、19、20)

反锯齿和提高分辨率都为我们提供了高质量的画面。选择那一个就看你的个人的喜好了。

速度VS.画质

全屏反锯齿没有得到广泛的应用的主要原因是该技术会带来明显的性能下降。采样倍数越高,性能的下降就越明显。比如,2X超级采样使显卡的性能下降了将近一倍,4X的情况则是4倍,6X时则是惊人的6倍。
这就要求你更了解自己显卡的性能,选择适合自己显卡性能的抗锯齿倍数。如果你有像RADEON 8500这样的显卡再加上强劲的CPU和内存,即使是在“heavy”SMOOTHVISION模式下1024X768/32bit运行游戏,速度也还是可以让人接受的。对那些相对较早的显卡NVIDIA GeForce2 MX, PowerVR/STM Kyro/Kyro II, SiS 315等等来说,由于本身性能就不是很高,显卡在普通模式下运行都比较吃力,再加上仅仅支持超级采样,因此在打开全屏反锯齿功能后,性能下降的相当厉害。这种情况下,只能是降低分辨率来运行游戏了,想想看800X600分辨率下你得到的却是1600X1200下的性能和不如1024X768的画质,那么我们还不如不开反锯齿功能。游戏画面质量同FPS总是矛盾的,对于相对有限的计算机性能来说鱼和熊掌不兼得。在激烈的CS对战中又有谁会静下心来看对面2m内敌人手中的Ak边角是不是有锯齿呢?

转载于:https://www.cnblogs.com/lancidie/archive/2012/01/20/2327953.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

业余时间学数据分析,如何快速上手

广泛被应用的数据分析谷歌的数据分析可以预测一个地区即将爆发的流感,从而进行针对性的预防;淘宝可以根据你浏览和消费的数据进行分析,为你精准推荐商品;口碑极好的网易云音乐,通过其相似性算法,为不同的人…

java连接mysql数据库连接池_java使用原生MySQL实现数据的增删改查以及数据库连接池技术...

一、工具类及配置文件准备工作1.1 引入jar包使用原生MySQL,只需要用到MySQL连接的jar包,maven引用方式如下:mysqlmysql-connector-java5.1.481.2 jdbc.properties文件配置在resources文件夹根目录,新增jdbc.properties配置文件&am…

64位Visual Studio 2022,微软在下一盘大棋!

有没有跟我一样奇怪过,都2021年了,用的还是VS2019?原来微软是憋大招去了,4月18号Amanda的一篇博文宣布了一则重磅消息——Visual Studio 2022 首个预览版将于今年夏季发布 ,并且终于成为万众期待的 64 位版&#xff01…

如何添加自定义icon

(1)一般命令行程序编译后是一个方框图标。 我们可以自定义: Project -> Add to project -> New... 选择Resource Script,新建一个资源脚本,这样左面就多了一个资源视图 然后Project -> Add to project -> File,加进…

mysql 5.7.17 源码安装_mysql5.7.17源码安装

创建用户和目录groupadd mysqluseradd -r -g mysql mysqlmkdir -p /data/mysql/standby/datamkdir -p /data/mysql/standby/tmpmkdir -p /data/mysql/standby/elogmkdir -p /data/mysql/standby/blogchown -R mysql:root /data/mysql配置yum源cd /etc/yum.repos.d/rm -rf *vi c…

跟几个程序员聊了聊他们的每月薪资收入

阅读本文大概需要6分钟。我一直有一个技术小群,这个群最初是在360当新人入职导师带的几个人,和大家挺聊得来就建了一个群,没想到居然存在了6年之久。压力大的时候就在群里和大家相互调侃或者拉拉家常,偶尔谁跳槽了也会喷喷前东家&…

开通博客

今天注册了博客园并且开通了博客! 我想用博客来记录并分享我学习编程过程和知识。 希望大家予以支持和帮助。转载于:https://www.cnblogs.com/crislina/archive/2012/01/28/2330629.html

【重磅】MIT发布2018年“全球十大突破性技术”

“有些技术已经应用多年,有些则是意外之喜。无论如何,以下是我们认为将在未来的几年对我们的工作和生活产生巨大影响的技术突破。”北京时间2018年2月21日,《麻省理工科技评论》揭晓了2018年“全球十大突破性技术”,这份全球新兴科…

mysql必须的组件_mysql innodb的重要组件

innodb包涵如下几个组件一、innodb_buffer_pool:1  它主要用来缓存数据与索引(准确的讲由于innodb中的表是由聚集索引组织的,所以数据只不是过主键这个索引的叶子结点)。二、change buffer:1  如果更新语句要更新二级索引的记录,但是记录…

[Stardust]星尘配置中心

在分布式系统开发中,配置中心必不可少。在中通几年时间里,为了配合大数据计算平台,统一管理数百个微小应用,设计了一套轻量级配置中心。星尘配置中心在其理念基础上改进,针对中小团队而全新设计!源码&#…

oracle中v$database视图详解

SQL> desc v$database 名称 是否为空? 类型 ----------------- -------- ------------ DBID NUMBER NAME VARCHAR2(9) CREATED DATE RESETLOGS_CHANGE# NUMBER RESETLOGS_T…

大数据可视化设计到底是啥,该怎么用

大数据可视化是个热门话题,在信息安全领域,也由于很多企业希望将大数据转化为信息可视化呈现的各种形式,以便获得更深的洞察力、更好的决策力以及更强的自动化处理能力,数据可视化已经成为网络安全技术的一个重要趋势。文章目录一…

九度 1376 最近零子序列

http://ac.jobdu.com/problem.php?id1376 N^2的算法超时 优化算法想了好久没想出来&#xff0c;就当是学习一下STL的set了吧 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <math.h> 4 #include <set> 5 #include <iostream> 6 #defi…

WPF 如何实现颜色值拾取

WPF开发者QQ群&#xff1a; 340500857 前言如何进行颜色值拾取&#xff1f;这里采用的是调用WindowsAPI进行实现。吸取 沙漠尽头的狼 的建议多写一些文字进行描述。效果图如下&#xff1a;第一步 注册WindowsAPI 代码如下&#xff1a;[DllImport("user32.dll")]stati…

大文本导入mysql_大文本数据,导入导出到数据库

大文本数据&#xff0c;导入到数据库240w的数据&#xff0c;利用plsql的文本导入器&#xff0c;导了一个半小时&#xff0c;且数据出现缺失。两种方式导入到数据库一&#xff0c;使用sql load创建表create table ext_gv_tmp_amazon_sku(skucode varchar2(255 char),eancode var…

仿Google+相册的动画

在使用Google的时候&#xff0c;查看某一相册&#xff0c;会经常看到&#xff0c;如下图所示的动画效果。 鼠标移入、移出时均有动画效果&#xff0c;咋一看估计是使用了css3的transform属性来实现动画效果的。 在网上搜索“Google 相册 效果”的时候发现有人使用CSS3做了这样的…

看见到洞见之引子(二)机器学习算法

《看见到洞见》系列文章汇聚、分享的是绿盟科技创新中心对于数据分析在安全领域应用的技战术思考与经验&#xff0c;力求由浅入深层次递进&#xff0c;实战到方法论双线剖析。此文为系列文章之引子第二篇&#xff0c;深入浅出的对常用的数据分析和机器学习的算法进行介绍。在上…

mysql pmod项目_内置函数 - 数学函数 - 《Apache Doris 文档(201812)》 - 书栈网 · BookStack...

数学函数abs(double a)功能&#xff1a; 返回参数的绝对值返回类型&#xff1a;double类型使用说明&#xff1a;使用该函数需要确保函数的返回值是整数。acos(double a)功能&#xff1a; 返回参数的反余弦值返回类型&#xff1a;double类型asin(double a)功能&#xff1a; 返回…

gcc中常用的选项

开始学习在Linux下写程序&#xff0c;利用gcc进行编译的时候经常需要添加一些选项&#xff0c;为了便于查找&#xff0c;将这写常用的选项整理出来。GCC常用选项 -c 通知GCC取消链接步骤&#xff0c;即编译源码并在最后生成目标文件&#xff1b; -Dmacro 定义指定的宏&am…

一图看懂 ASP.NET Core 中的服务生命周期

翻译自 Waqas Anwar 2020年11月8日的文章 《ASP.NET Core Service Lifetimes (Infographic)》 [1]ASP.NET Core 支持依赖关系注入&#xff08;DI&#xff09;软件设计模式&#xff0c;该模式允许我们注册服务、控制如何实例化这些服务并将其注入到不同的组件中。一些服务可以在…