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

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

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.mfbz.cn/a/886680.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DC00024基于ssm实验室预约管理系统java web项目web教师预约jsp预约管理系统

1、项目功能演示 DC00024基于web实验室预约管理系统ssm教室预约实验室预约管理系统java web项目MySQL 2、项目功能描述 基于ssm实验室预约管理系统分为用户和系统管理员两个角色。 2.1 系统管理员 1、系统登录 2、用户管理:修改个人信息、修改个人密码、教师管理…

【MySQL报错】---Data truncated for column ‘age‘ at row...

目录 一、前言二、问题分析三、解决办法 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导,有什么不对的地方,我会及时改进哦~ 博客主页链接点这里–>:权权的博客主页链接 二、问题分析 问题一修改表结构 XXX 为 not n…

【Linux系统编程】第二十七弹---文件描述符与重定向:fd奥秘、dup2应用与Shell重定向实战

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、文件描述符fd 1.1、0 & 1 & 2 1.2、文件描述符的分配规则 2、重定向 3、使用 dup2 系统调用 3.1、> 输出…

数字图像处理:空间域滤波

1.数字图像处理:空间域滤波 1.1 滤波器核(相关核)与卷积 图像上的邻域计算 线性空间滤波的原理 滤波器核(相关核)是如何得到的? 空间域的卷积 卷积:滤波器核与window中的对应值相乘后所有…

新品:新一代全双工音频对讲模块SA618F22-C1

SA618F22-C1是我司一款升级版的无线数字和音频二合一全双工传输模块,支持8路并发高音质通话。用户不仅可以通过串口实现数据的无线传输,还可以通过I2S数字音频或模拟音频接口来传输语音信号。该模块内置高速微控制器、回声消除电路、ESD静电防护、高性能…

vmware Workstation16设置批量虚拟机开机自启 vmAutoStart

文章目录 前言解压压缩包一、使用步骤1.获取虚拟机所在目录2.获取vmware所在目录3.测试启动4.开机自启 二、gitee总结 前言 vmware workstation16不支持虚拟机开机自启,通常的办法是写脚本,但是有个问题就是不能启动多台虚拟机,因为有时候会…

C# 字符与字符串

本课要点: 1、字符类Char的使用 2、字符串类String的使用 3、可变字符串****StringBuilder 4、常见错误 一 何时用到字符与字符串 问题: 输出C#**课考试最高分:**98.5 输出最高分学生姓名:张三 输出最高分学生性别&#x…

Pikichu-xss实验案例-通过xss获取cookie

原理图: pikachu提供了一个pkxss后台; 该后台可以把获得的cookie信息显示出来; 查看后端代码cookie.php:就是获取cookie信息,保存起来,然后重定向跳转到目标页面;修改最后从定向的ip&#xff0…

无人机控制和飞行、路径规划技术分析

无人机控制和飞行、路径规划技术是现代无人机技术的核心组成部分,它们共同决定了无人机的性能和应用范围。以下是对这些技术的详细分析: 一、无人机控制技术 无人机控制技术主要涉及飞行控制系统的设计、传感器数据的处理以及指令的发送与执行。飞行控…

Spring Session学习

系列文章目录 JavaSE基础知识、数据类型学习万年历项目代码逻辑训练习题代码逻辑训练习题方法、数组学习图书管理系统项目面向对象编程:封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习集合学习IO流、多线程学习仓库管理系统JavaSE项目员工…

太原网站制作打造企业网站的关键要素

太原网站制作:打造企业网站的关键要素 在数字化时代,企业网站成为了品牌形象和市场营销的重要一环。太原的企业在进行网站制作时,需要关注几个关键要素,以确保网站能够有效提升企业竞争力和用户体验。 **1. 目标明确** 在网站制…

Redis篇(数据类型)

目录 讲解一:简介 讲解二:常用 一、String类型 1. 简介 2. 常见命令 3. Key结构 4. 操作String 5. 实例 二、Hash类型 1. 简介 2. 常见命令 3. 3操作hash 4. 实例 三、List类型 1. 简介 2. 特征 3. 应用场景 4. 常见命令 5. 操作list …

Python办公自动化之Word

在现代办公环境中,自动化无疑是提升工作效率的关键。特别是处理文档的工作,很多人可能花费大量时间在重复性任务上。那么,有没有一种方法可以让我们用 Python 来自动化 Word 文档的操作呢?今天,我们来聊聊如何用 Pytho…

基于php的在线租房管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

光伏项目管理如何更高效化?

一、项目规划与启动阶段的优化 1、智能规划工具:光伏管理软件通常配备有智能项目规划模块,能够根据地理位置、气候条件、政策补贴等因素,自动计算最佳装机容量、预测发电量及收益,帮助项目团队快速制定合理的项目方案。这大大缩短…

golang grpc进阶

protobuf 官方文档 基本数据类型 .proto TypeNotesGo Typedoublefloat64floatfloat32int32使用变长编码,对于负值的效率很低,如果你的域有可能有负值,请使用sint64替代int32uint32使用变长编码uint32uint64使用变长编码uint64sint32使用变长…

Redis: 集群架构,优缺点和数据分区方式和算法

集群 集群指的就是一组计算机作为一个整体向用户提供一组网络资源 我就举一个简单的例子,比如百度,在北京和你在上海访问的百度是同一个服务器吗?答案肯定是不是的,每一个应用可以部署在不同的地方,但是我们提供的服务…

Navicat Premium 12 for Mac中文永久版

目录 一、安装二、修改rpk文件三、获取请求码四、获取jh码 Tip:由于一些jy词,一直不让我发布🙄,所以只能用拼音简写代替,是不是很无语,我也很无语,各位自行体会一下😒 为了避免每次换…

1. 如何在服务器上租GPU跑实验 (以AutoDL为例) - 深度学习·科研实践·从0到1

目录 前言 1. 在AutoDL上注册账号 2. 在算力市场选择GPU 3. 创建实例 4. 控制台-容器实例界面(核心) 4.1 无卡模式(常用) 5. 帮助文档 前言 好记性不如烂笔头,本专栏将详细记录下本人学习深度学习工程实践&…

C(十一)scanf、getchar(第三弹)

问题引入:如何实现输入一串密码,如:“123 xxxx” ,然后读取并确认,是 -- Y;否 -- N。 自然的,我们想到用scanf,但是在使用过程中你是否遇到跟我一样的困惑呢?如下&…