从画质设置看游戏引擎(其一)

前往我的博客,获取无广告,更好的阅读体验

1. 抗锯齿(Anti-Aliasing)

1.1 锯齿问题的起因

在三维模型的世界中,模型是连续的,但是屏幕像素是不连续,是离散的;
即当一个圆形显示在显示器中,显示的圆实际上是棱角分明的,若像素过少,则会出现明显的“棱角”,看起来非常不自然,这就是一种锯齿现象。

理想情况下,如果屏幕分辨率无限高,DPI越高,那么就不会出现明显的锯齿。

1.2 抗锯齿的分类及工作原理

1.2.1 MSAA(Multisample Anti-Aliasing)
  • 工作原理:MSAA是基于几何体的抗锯齿方法。它会对每个像素的边界进行多次采样,尤其是多边形边缘的像素。MSAA只对几何体的边缘部分进行采样,减少了锯齿问题,同时避免对整个场景的所有像素进行抗锯齿处理。

即对像素边缘,进行超过渲染分辨率的计算,然后向下取样,这样就会一定程度缓和边缘锯齿现象。

  • 优点:可以有效减少边缘的锯齿现象,并且不会模糊整个画面。
  • 缺点:对性能有一定的消耗,尤其是需要更多显存来存储多次采样的信息。同时,它对纹理、透明物体的效果有限。

延迟渲染难以与MSAA同时使用,延迟渲染会将几何体的信息分离到G-buffer中,MSAA无法获取器所需要的信息。

1.2.2 FXAA(Fast Approximate Anti-Aliasing)
  • 工作原理:FXAA是一种后处理抗锯齿技术,它不依赖于几何体,而是直接对渲染后的图像进行处理。它通过分析屏幕上的边缘,并对检测到的锯齿边缘进行模糊和平滑处理。

简单来说,就是对图像,进行柔和处理。

  • 优点:非常高效,几乎不会带来额外的性能消耗,适合低端硬件和需要高帧率的场景。
  • 缺点:FXAA的主要问题在于它对整个图像进行模糊处理,因此可能会导致画面变得较为模糊,特别是在细节丰富的区域,如文字和纹理。
1.2.3 TAA(Temporal Anti-Aliasing)
  • 工作原理:TAA是基于时间域的抗锯齿方法,结合多帧之间的渲染数据来平滑边缘。它利用每一帧中的移动和历史数据来减少锯齿问题,同时消除闪烁和其他动态伪影。

可以简单的理解为,对于某个物体,结合物体的前几帧的位置,对其抖动,混合,融入现在的信息,进行一种模糊化。

  • 优点:TAA可以非常有效地减少动态场景中的锯齿问题,并且在场景中物体移动时不会引入闪烁或“抖动”。
  • 缺点:可能引入轻微的模糊,尤其是在快速运动场景或对比度较高的区域。
1.2.4 SMAA(Subpixel Morphological Anti-Aliasing)
  • 工作原理:SMAA是一种结合了几何和后处理的抗锯齿技术。它使用形态学算法识别边缘并进行平滑处理,同时保留了图像中的细节。SMAA通过检测子像素级别的变化来减少锯齿,并通过特殊的算法来避免模糊化。

借助深度信息,对边缘进行处理

  • 优点:SMAA能在保证较好抗锯齿效果的同时,不像FXAA那样模糊整个画面,因此画面质量较为清晰。
  • 缺点:虽然效果优于FXAA,但在快速运动的场景中,SMAA的性能和效果可能不如TAA。
1.2.5 DLSS(Deep Learning Super Sampling)
  • 工作原理:DLSS是NVIDIA推出的一种基于人工智能的超采样技术,利用深度学习模型通过低分辨率渲染的图像预测并重建出高分辨率图像。DLSS通过在训练过程中生成的AI模型来估计每个像素的正确显示,并进行插值处理。
  • 优点:相比传统抗锯齿,DLSS能够在保持高画质的同时大幅提升帧率,适合4K或更高分辨率的显示。
  • 缺点:需要NVIDIA RTX系列的硬件支持,同时对于不同游戏需要单独优化和训练。

2. 环境光遮蔽(Ambient Occlusion, AO)

2.1 基本概念

环境光遮蔽是用来增强场景的光照效果,使物体在彼此接近时产生柔和的阴影。它模拟了光线在被遮挡时无法完全进入某些区域的现象,例如物体交接处、墙角或复杂几何体的内部。

2.2 环境光遮蔽的常见实现方法

2.2.1 SSAO(Screen Space Ambient Occlusion)
  • 工作原理:SSAO基于屏幕空间进行计算,使用场景中的深度缓冲区信息来推断哪些区域的光线会被遮挡。SSAO会在视线所能看到的区域内进行光遮蔽的计算,而不会考虑场景背后的部分。
  • 优点:性能较好,适合实时渲染的应用。
  • 缺点:由于仅考虑了屏幕空间的像素深度,SSAO会忽略场景背后的遮挡,因此可能在某些情况下产生不准确的阴影效果。
2.2.2 HBAO(Horizon-Based Ambient Occlusion)
  • 工作原理:HBAO是一种改进的SSAO算法,通过对光线遮挡的方向性进行计算,确定哪些光线在场景中的传播路径被几何体遮挡。相比SSAO,HBAO能生成更加精确的阴影效果,特别是在物体交接处和凹陷处。
  • 优点:比SSAO更精确,能生成更自然的阴影效果,适合画质要求较高的场景。
  • 缺点:性能开销较大,对低端硬件可能不太友好。
2.2.3 VXAO(Voxel Ambient Occlusion)
  • 工作原理:VXAO通过使用体素(3D像素)来表示场景,并在体素空间计算环境光遮蔽。通过体素化场景的几何体,可以更精确地模拟遮挡效应,特别是在复杂的几何结构中。
  • 优点:精度高,能够生成非常真实的光线遮蔽效果,特别适合大规模复杂场景。
  • 缺点:计算量大,适合高端硬件和对画质要求极高的游戏。
2.2.4 光线追踪环境光遮蔽(RTX AO)
  • 工作原理:光线追踪环境光遮蔽通过直接追踪光线的路径来模拟光线在场景中的遮挡和反射。相比屏幕空间技术,光线追踪环境光遮蔽不再依赖于屏幕空间,可以生成更加精确和自然的阴影效果。
  • 优点:极高的精度和真实感,特别是对复杂几何体和遮挡结构的处理非常自然。
  • 缺点:计算资源需求极大,适合拥有高性能硬件的用户。

3. 分辨率

3.1 渲染分辨率

渲染分辨率是游戏在GPU中处理和输出的图像的分辨率,它决定了最终图像的像素数量。渲染分辨率越高,画面越清晰,但对性能的要求也越高。通常我们看到的1080p、1440p、4K等都是常见的渲染分辨率。

  • 影响:高渲染分辨率可以提供更细腻的图像,特别是在显示器尺寸较大时能够更好地展示细节。然而,过高的分辨率对显卡负载较大,可能影响帧率。

3.2 渲染倍率

渲染倍率是指渲染分辨率与游戏内设置的分辨率之间的比值。
考虑到锯齿产生的原因,会有以下情况

  • 渲染倍率的提升会带来更加干净的显示效果,会极大的优化抗锯齿;
  • 渲染倍率的降低会让抗锯齿更加明显,但如果抗锯齿足够优秀,依然会有更细腻的画面;

假设均为原生分辨率;

3.3 动态分辨率缩放(Dynamic Resolution Scaling, DRS)

动态分辨率缩放技术会根据场景的复杂度和当前的GPU负载动态调整渲染分辨率,以保持帧率的稳定。例如,当场景中几何体较少时,渲染分辨率可以提高;而当场景变得复杂时,分辨率则会降低,以避免帧率下降。

  • 优点:能够在高帧率和高画质之间找到一个平衡点,特别是在复杂场景中避免帧率大幅下降。
  • 缺点:由于分辨率的动态变化,可能会导致画面细节的不稳定性,在快速切换场景时画面会忽然变得模糊。

3.4 贴图分辨率

即实际物品的分辨率

  • 当贴图分辨率大于渲染分辨率,会进行下采样;
  • 当贴图分辨率大于渲染分辨率,会进行拉伸;

4. 部分渲染特性

4.1 高动态范围(HDR)

HDR技术允许渲染出超出传统显示设备能够显示的亮度和色彩范围。通过HDR,游戏可以呈现更高对比度的画面,亮部和暗部的细节都更加丰富,同时颜色更加鲜艳。

  • 实现方式:HDR通常需要配合支持HDR显示技术的硬件(如HDR显示器)才能完全展现其效果。此外,游戏需要在渲染时生成高动态范围的图像,并通过色调映射(Tone Mapping)将其调整到显示设备能够处理的范围内。
  • 优点:HDR提供更真实的视觉体验,特别是在阴影、光照变化和丰富色彩表现方面,可以增强玩家的沉浸感。相比于SDR(标准动态范围),HDR能够提供更高的亮度范围(通常可达1000尼特甚至更高)和更广泛的色彩空间(如DCI-P3或Rec. 2020)。
  • 注意事项:在实施HDR时,需要考虑亮度的校准,以确保在不同的显示设备上都能保持一致的视觉效果。同时,开发者需确保场景中的光源和材质能充分利用HDR的优势。

4.2 色调映射(Tone Mapping)

色调映射是将HDR图像中的高动态范围色彩映射到普通显示设备所能显示的色彩范围的一种技术。它会避免场景中出现过曝或者过暗的区域,确保画面的亮部和暗部都有足够的细节。

  • 实现方式:常见的色调映射算法包括Reinhard、Filmic和ACES等,每种算法都有不同的调整方式,影响最终输出图像的视觉效果。
  • 优点:色调映射能够帮助处理动态范围的压缩,使得画面在亮度极高或极低的情况下仍然保持细节,从而提升整体画质。
  • 应用:色调映射不仅适用于游戏,还广泛应用于电影和摄影后期处理中,以确保在不同设备上呈现出最佳效果。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

手语手势识别系统源码分享

手语手势识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Python_面向对象属性与方法

Python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装等。Python中,一切皆对象。我们在前面学习的数据类型、函数等,都是对象。 面向过程和面向对象…

DataGemma:谷歌大模型

诸神缄默不语-个人CSDN博文目录 DataGemma是谷歌出的大模型,是gemma 2的升级版,主要亮点是基于检索解决幻觉问题。 在huggingface和kaggle上均可下载模型权重。 检索数据源是Google’s Data Commons知识图谱。 官方博客:https://blog.googl…

frp内网穿透服务器+客户端详细配置

当我们拥有一台云服务器时,可以将局域网服务器的服务通过内网穿透发布到公网上。frp是一个主流的内网穿透软件,本文讲解frp内网穿透服务器客户端详细配置。 一、需要准备的内容: 腾讯云服务器:https://curl.qcloud.com/Sjy0zKjy 2…

红外图像绝缘子识别数据集

红外图像绝缘子识别数据集,数据集一共919张图片,标注为voc格式,可以转yolo格式 数据集名称 红外图像绝缘子识别数据集 (Infrared Insulator Recognition Dataset, IIRD) 数据集描述 IIRD是一个专为电气工程领域设计的小规模红外图像数据集…

发文章到arXiv的处理

版权问题: IEEE会议,刊物可以发arXiv 官方说明: Post-Publication Policies - IEEE Author Center Journals 上传时加上一句说明就行 “This work has been submitted to the IEEE for possible publication. Copyright may be transferr…

前缀和(1)_【模板】前缀和_模板

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 前缀和(1)_【模板】前缀和_模板 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 …

VM ware的安装——个人使用

VM ware的安装 Workstation 和 Fusion 对个人使用完全免费,企业许可转向订阅 如果没有官方账号需要注册一个 选择个人下载,会跳转到下一个页面 要勾选同意,才能下载 点击下载之后还会跳转到填写地址的页面,填写完同意后&#x…

免费与付费代理IP工具的优缺点分析

面对市场上众多的代理IP工具,选择合适的工具成为一项挑战。本文将深入分析免费与付费代理IP工具的优缺点,协助您做出明智的选择。 一、免费代理IP工具的优缺点 优点: 零成本:最大的优点在于无需任何费用。对于预算有限的用户&a…

Cortex-M7核心寄存器

参考内容:Cortex-M7编程手册 文章目录 软件执行的处理器模式和权限级别处理器模式软件执行的权限级别 栈Stacks核心寄存器Core registers通用寄存器General-purpose registers链接寄存器Link register程序计数器 Program counter程序状态寄存器Program status regis…

18.1 k8s服务组件之4大黄金指标讲解

本节重点介绍 : 监控4大黄金指标 Latency:延时Utilization:使用率Saturation:饱和度Errors:错误数或错误率 apiserver指标 400、500错误qps访问延迟队列深度 etcd指标kube-scheduler和kube-controller-manager 监控4大黄金指标 …

PHPMailer在PHP5.3.3以下版本的使用详解

《PHPMailer在PHP5.3.3以下版本的使用详解》 PHPMailer是一款广泛使用的PHP邮件发送类库,它提供了一套完整的邮件发送解决方案,包括SMTP验证、HTML邮件支持等功能。在PHP5.3.3及以下版本的环境中,由于语言特性和库的限制,选择适合…

【学习笔记】TLS/SSL握手

前言:本篇将介绍TLS握手的实际握手过程,TLS握手创建了Client和Server之间“被保护的通道”,2个单向通道用来保护批量数据的传输(通过Confidentiality、Integrity和Authentication),一个通道是从Client到Ser…

辞职后你说你想去外面玩玩,我看你寸步未行,原来你是去了JDK以外的方面玩玩

按需阅读 兄弟们!我被面试官吊打了Java面试Question A:如果距离世界末日只剩一天你能干什么?面试官:世界末日前我想看视频面试官:给点创意好不好?面试官:如果有一天我想换个姿势看图片 Java面试…

C++基础:第一个C++程序

初学C #include<iostream> int main() {std::cout << "Enter two numbers:" << std::endl;int v1 0, v2 0;std::cin >> v1 >> v2;std::cout << "The sum of "<< v1 << " and " << v2&…

string和oj题以及vector的接口介绍

前言 上篇博客学习了一些string类的模拟实现erase、find、substr、比较大小、流输入、流输出&#xff0c;这篇博客将介绍剩下的一些string的知识以及vector的一些使用方式。 string 传统深拷贝的写法 //拷贝构造 string(const string& s) {_str new char[s._capacity …

1.4 边界值分析法

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 前言1 定义2 选取3 具体步骤4 案例分析 本篇文章参考黑马程序员 前言 边界值分析法是一种广泛应用于软件测试中的技术&#xff0c;旨在识别输入值范围内的潜在缺陷。本文将详细探讨…

【Linux】深度解析与实战应用:GCC/G++编译器入门指南

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;Linux系统编程 这里将会不定期更新有关Linux的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 文章目…

Mysql—主从复制的slave添加及延迟回放

MySQL 主从复制是什么&#xff1f; ​ MySQL 主从复制是指数据可以从一个 MySQL 数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式&#xff0c;这样从节点不用一直访问主服务器来更新自己的数据&#xff0c;数据的更新可以在远程连接上进行&#xff0c;…

滑动窗口专题

通过以下几道题来熟悉滑动窗口 滑动窗口3大问题&#xff1a;如何移入窗口&#xff0c;如何移出窗口&#xff0c;如何更新答案 209. 长度最小的子数组 我们考虑通过窗口来计算和&#xff0c;快慢指针从左开始遍历。 移入窗口&#xff1a;直接把当前元素加进来。 移出窗口&am…