当前位置: 首页 > news >正文

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

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

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

相关文章:

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

前往我的博客,获取无广告,更好的阅读体验 1. 抗锯齿(Anti-Aliasing) 1.1 锯齿问题的起因 在三维模型的世界中,模型是连续的,但是屏幕像素是不连续,是离散的; 即当一个圆形显示在显…...

#git 问题failed to resolve head as a valid ref

问题如下: 解决方法: 1、运行 git fsck --full 可以查看具体error信息,一般都是head索引问题 2、.git\refs\heads\xxx(当前分支)txt编辑器打开显示乱码,而不是hash编码 3、在.git\logs\refs\heads\xxx&a…...

YOLOv11,地瓜RDK X5开发板,TROS端到端140FPS!

YOLOv11 Detect YOLOv11 Detect YOLO介绍性能数据 (简要) RDK X5 & RDK X5 Module 模型下载地址输入输出数据公版处理流程优化处理流程步骤参考 环境、项目准备导出为onnxPTQ方案量化转化使用hb_perf命令对bin模型进行可视化, hrt_model_exec命令检查bin模型的输入输出情况…...

Python精选200Tips:181-182

针对图像的经典卷积网络结构进化史及可视化 针对图像的经典卷积网络结构进化史及可视化(续)P181--MobileNet【2017】模型结构及创新性说明模型结构代码MobileNet V1版本MobileNet V2版本MobileNet V3 版本Small版本Large版本 P182--EfficientNet【2019】…...

SpringCloud 配置 feign.hystrix.enabled: true 不生效

SpringCloud 配置 feign.hystrix.enabled: true 不生效的原因 feign 启用 hystrix feign 默认没有启用 hystrix,添加配置,启用 hystrix feign.hystrix.enabledtrue application.yml 添加配置 feign:hystrix:enabled: true启用 hystrix 后,访…...

9.24-k8s服务发布

Ingress 使用域名发布 K8S 服务 部署项目 一、先部署mariadb [rootk8s-master ~]# mkdir aaa [rootk8s-master ~]# cd aaa/ [rootk8s-master aaa]# # 先部署mariadb [rootk8s-master aaa]# # configmap [rootk8s-master aaa]# vim mariadb-configmap.yaml apiVersion: v1 ki…...

UI设计师面试整理-作品集展示

在UI设计师的面试中,作品集展示是非常关键的一环。它不仅展示了你的设计技能和风格,也让面试官了解你的设计思维和解决问题的能力。下面是如何有效地准备和展示你的作品集的建议: 1. 选择合适的项目 ● 多样性:选择能展示你在不同领域或平台上的设计能力的项目。确保作品集…...

CMU 10423 Generative AI:lec10(few-shot、提示工程、上下文学习)

文章目录 1 概述2 摘录2.1 zero-shot 和 few-shot一、Zero-shot Learning(零样本学习)特点:工作原理:优点:缺点: 二、Few-shot Learning(少样本学习)特点:工作原理&#…...

做数据抓取工作要如何选择ip池

选择合适的IP池对于数据抓取工作至关重要。一个优质的IP池可以提高抓取的效率和成功率,同时减少被目标网站封禁的风险。以下是选择IP池时需要考虑的一些关键因素: 1. IP类型 住宅IP:住宅IP通常来自真实用户,难以被识别为代理。它…...

防止电脑电池老化,禁止usb或者ac接口调试时充电

控制android系统,开发者模式,开启和禁止充电 连接 Android 手机到电脑的 USB 端口。 下载并安装 Android Debug Bridge (ADB) 工具[1]。 USB: 在命令行中输入 adb shell dumpsys battery set usb 0,以禁止 USB 充电。 在命令…...

智权半导体/SmartDV力助高速发展的中国RISC-V CPU IP厂商走上高质量发展之道

作者:Karthik Gopal SmartDV Technologies亚洲区总经理 智权半导体科技(厦门)有限公司总经理 进入2024年,全球RISC-V社群在技术和应用两个方向上都在加快发展,中国国内的RISC-V CPU IP提供商也在内核性能和应用扩展…...

利用vue-capper封装一个可以函数式调用图片裁剪组件

1. 效果 const cropData await wqCrop({prop:{img,autoCrop: true, // 是否开启截图框maxImgSize: 600,autoCropWidth: 30,canMove: true, // 图片是否可移动canMoveBox: true, // 截图框是否可移动fixedBox: false, // 截图框是否固定}});console.log(cropData);使用wqCrop会…...

在系统开发中提升 Excel 数据导出一致性与可维护性的统一规范与最佳实践

背景: 在系统开发过程中,数据导出为 Excel 格式是一个常见的需求。然而,由于各个开发人员的编码习惯和实现方式不同,导致导出代码风格不一。有的人使用第三方库,有的人则自定义实现。这种多样化不仅影响了代码的一致性…...

SpringAOP学习

面向切面编程&#xff0c;指导开发者如何组织程序结构 增强原始设计的功能 oop:面向对象编程 1.导入aop相关坐标&#xff0c;创建 <!--spring依赖--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spri…...

智能网联汽车飞速发展,安全危机竟如影随形,如何破局?

随着人工智能、5G通信、大数据等技术的飞速发展&#xff0c;智能网联汽车正在成为全球汽车行业的焦点。特别是我国智能网联汽车市场规模近年来呈现快速增长态势&#xff0c;彰显了行业蓬勃发展的活力与潜力。然而&#xff0c;车联网技术的广泛应用也带来了一系列网络安全问题&a…...

Android常用C++特性之std::function

声明&#xff1a;本文内容生成自ChatGPT&#xff0c;目的是为方便大家了解学习作为引用到作者的其他文章中。 std::function 是 C 标准库中的一个 函数包装器&#xff0c;用于存储、复制、调用任何可以调用的目标&#xff08;如普通函数、lambda 表达式、函数对象、成员函数等&…...

人工智能与机器学习原理精解【27】

文章目录 集成学习集成学习概述集成学习的定义集成学习的性质集成学习的算法过程集成学习的算法描述集成学习的例子和例题Julia实现集成学习 集成学习数学原理一、基学习器的生成Bagging&#xff08;装袋法&#xff09;Boosting&#xff08;提升法&#xff09; 二、基学习器的结…...

XXL-JOB在SpringBoot中的集成

在SpringBoot中&#xff0c;XXL-JOB作为一个轻量级的分布式任务调度平台&#xff0c;提供了灵活的任务分片处理功能&#xff0c;这对于处理大规模、复杂的任务场景尤为重要。以下将详细探讨如何在SpringBoot中利用XXL-JOB实现灵活控制的分片处理方案&#xff0c;涵盖配置、代码…...

前端工程规范-3:CSS规范(Stylelint)

样式规范工具&#xff08;StyleLint&#xff09; Stylelint 是一个灵活且强大的工具&#xff0c;适用于保持 CSS 代码的质量和一致性。结合其他工具&#xff08;如 Prettier 和 ESLint&#xff09;&#xff0c;可以更全面地保障前端代码的整洁性和可维护性。 目录 样式规范工具…...

Qt系列-1.Qt安装

Qt安装 0 简介 1.安装步骤 1.1 下载 进入qt中文网站:https://www.qt.io/zh-cn/ Qt开源社区版本:https://www.qt.io/download-open-source#source 1.2 安装 chmod +x qt-online-installer-linux-x64-4.8.0.run ./qt-online-installer-linux-x64-4.8.0.run 外网不能下载…...

《自控原理》最小相位系统

在复平面右半平面既没有零点&#xff0c;也没有极点的系统&#xff0c;称为最小相位系统&#xff0c;其余均为非最小相位系统。 从知乎看了一篇答案&#xff1a; https://www.zhihu.com/question/24163919 证明过程大概率比较难&#xff0c;我翻了两本自控的教材&#xff0c;…...

SpringBoot3脚手架

MySpringBootAPI SpringBoot3脚手架&#xff0c;基于SpringBoot3DruidPgSQLMyBatisPlus13FastJSON2Lombok&#xff0c;启动web容器为Undertow(非默认tomcat)&#xff0c;其他的请自行添加和配置。 <java.version>17</java.version> <springboot.version>3.3…...

【C语言软开面经】

C语言软开面经 malloc calloc realloc free动态分配内存malloccalloc函数&#xff1a;realloc 函数&#xff1a;free函数&#xff1a; 堆栈-内存分区栈区&#xff08;Stack&#xff09;&#xff1a;堆区&#xff08;Heap&#xff09;&#xff1a;全局&#xff08;静态&#xff…...

YOLOv11训练自己的数据集(从代码下载到实例测试)

文章目录 前言一、YOLOv11模型结构图二、环境搭建三、构建数据集四、修改配置文件①数据集文件配置②模型文件配置③训练文件配置 五、模型训练和测试模型训练模型验证模型推理 总结 前言 提示&#xff1a;本文是YOLOv11训练自己数据集的记录教程&#xff0c;需要大家在本地已…...

HTML粉色烟花秀

目录 系列文章 写在前面 完整代码 下载代码 代码分析 写在最后 系列文章 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4...

从零开发操作系统

没有操作系统 要考虑放到什么位置 org 07c00h 我用nasm&#xff08;汇编编译&#xff09; 放到7c00处 ibm兼容机 AX发生变化 -寄存器 不可能做存储 内存- 代码段数据段 if else --指令 代码 int a -数据段 必须告诉计算机代码段从哪里开始 改变cs寄存器里面的值可以改变推进寄…...

SigmaStudio中部分滤波器算法有效性频谱分析

一、各类滤波器参数如下图设置 1.1、输入源白噪音经过如下算法处理后Notch\Band Pass\Band Stop&#xff0c;如下频谱分析图 1.2、输入源白噪音经过low pass后处理前后的频谱分析如如下 二、Notch滤波器配置图&#xff0c;如下 2.1、两串联、五个串联和未串联的Notch对白噪音…...

ArcGIS与ArcGIS Pro去除在线地图服务名单

我们之前给大家分享了很多在线地图集&#xff0c;有些地图集会带有制作者信息&#xff0c;在布局制图的时候会带上信息影响出图美观。 一套GIS图源集搞定&#xff01;清新规划底图、影像图、境界、海洋、地形阴影图、导航图 比如ArcGIS&#xff1a; 比如ArcGIS Pro&#xff1a…...

滚雪球学MySQL[10.1讲]:常见问题与解决

全文目录&#xff1a; 前言10. 常见问题与解决10.1 数据库连接问题10.1.1 无法连接到数据库10.1.2 连接超时10.1.3 连接数过多 10.2 性能问题10.2.1 查询速度慢10.2.2 数据库锁等待 10.3 数据完整性问题10.3.1 违反外键约束10.3.2 重复记录 10.4 安全问题10.4.1 SQL注入攻击10.…...

利用 Llama-3.1-Nemotron-51B 推进精度-效率前沿的发展

今天&#xff0c;英伟达™&#xff08;NVIDIA&#xff09;发布了一款独特的语言模型&#xff0c;该模型具有无与伦比的准确性和效率性能。Llama 3.1-Nemotron-51B 源自 Meta 的 Llama-3.1-70B&#xff0c;它采用了一种新颖的神经架构搜索&#xff08;NAS&#xff09;方法&#…...

网站设计与网页制作毕业论文/黄金网站app视频播放画质选择

现在数据库或是某个文件里有一些数据需要显示在界面上该怎么办呢&#xff1f;我们的目的就是将这些数据设法放到界面上去可以显示出来&#xff0c;这个将数据放到界面上去的过程可以叫住数据绑定。在Flex应用中程序中&#xff0c;数据绑定的实际是借助事件机制来完成的&#xf…...

自学建设网站/福州网站建设团队

中考语文3500常用汉字七年级上课文篇目 需掌握的字 正确读音 课文篇目 需掌握的字 正确读音为你打开一扇门 憧憬 chōng jǐng 十三岁的际遇 白驹过隙 jū x 裨益 b 蓦然 m 广袤 mo 积攒 zǎn 跌宕 dng 安恬 tin 诠释 qun 樯橹 qing 真谛 d 惆怅 chuchng 繁星 半明半昧 mi 伟人…...

做自主外贸网站和后台费用多少/广州网站优化外包

素养1 站的高&#xff0c;看的远 投资如下棋&#xff0c;看不到三步&#xff0c;谈不上高手&#xff0c;真正的大师往往能看到七八步之后。 最优秀的投资人能预判五年以后的行业形势&#xff0c;并提前布局&#xff0c;软银的孙正义&#xff0c;投资日本雅虎、阿里巴巴等就是…...

兰州迅豹网络/网站做优化一开始怎么做

Redisson官方文档 GetMapping("/hello")public String testRedissonClient(){//根据名字获取锁 只要锁名一样 就是同一把锁 第一个线程拿到这个锁 加锁 第二个线程拿到的就是 一个正在运行的加了锁的锁RLock mylock redissonClient.getLock("my-lock"…...

山西做网站的公司哪个好/广告开户南京seo

二维平面作图 ? 三维空间作图 ? 符号作图 ? Matlab 绘图过程/原理 2 手工作图如何画出 数学软件 Matlab —— 二维平面作图 —— 三维空间作图 1 本讲主要内容......是通过描点、连线来实现的,故在 画一个曲线图形之前,必须先取得该图形上的 一系列的点的坐标(即横坐标和纵坐…...

网站后台如何上传ico图标/seo优化标题

精彩LINUX软件推荐发布时间:2011-09-13 22:07:21来源:红联作者:ICEENclementine #音乐播放器osdlyrics #歌词显示sudo add-apt-repository ppa:osd-lyrics/ppasudo apt-get update && sudo aptitude install osdlyricsUMPlayer #视频播放器Xchatsudo apt-get install s…...