从画质设置看游戏引擎(其一)
前往我的博客,获取无广告,更好的阅读体验
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学习
面向切面编程,指导开发者如何组织程序结构 增强原始设计的功能 oop:面向对象编程 1.导入aop相关坐标,创建 <!--spring依赖--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spri…...

智能网联汽车飞速发展,安全危机竟如影随形,如何破局?
随着人工智能、5G通信、大数据等技术的飞速发展,智能网联汽车正在成为全球汽车行业的焦点。特别是我国智能网联汽车市场规模近年来呈现快速增长态势,彰显了行业蓬勃发展的活力与潜力。然而,车联网技术的广泛应用也带来了一系列网络安全问题&a…...
Android常用C++特性之std::function
声明:本文内容生成自ChatGPT,目的是为方便大家了解学习作为引用到作者的其他文章中。 std::function 是 C 标准库中的一个 函数包装器,用于存储、复制、调用任何可以调用的目标(如普通函数、lambda 表达式、函数对象、成员函数等&…...
人工智能与机器学习原理精解【27】
文章目录 集成学习集成学习概述集成学习的定义集成学习的性质集成学习的算法过程集成学习的算法描述集成学习的例子和例题Julia实现集成学习 集成学习数学原理一、基学习器的生成Bagging(装袋法)Boosting(提升法) 二、基学习器的结…...
XXL-JOB在SpringBoot中的集成
在SpringBoot中,XXL-JOB作为一个轻量级的分布式任务调度平台,提供了灵活的任务分片处理功能,这对于处理大规模、复杂的任务场景尤为重要。以下将详细探讨如何在SpringBoot中利用XXL-JOB实现灵活控制的分片处理方案,涵盖配置、代码…...

前端工程规范-3:CSS规范(Stylelint)
样式规范工具(StyleLint) Stylelint 是一个灵活且强大的工具,适用于保持 CSS 代码的质量和一致性。结合其他工具(如 Prettier 和 ESLint),可以更全面地保障前端代码的整洁性和可维护性。 目录 样式规范工具…...
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 外网不能下载…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...