技术美术一百问(02)

news2025/2/23 13:52:21

问题

前向渲染和延迟渲染的流程

前向渲染和延迟渲染的区别

G-Buffer是什么

前向渲染和延迟渲染各自擅长的方向总结

GPU pipeline是怎么样的

Tessellation的三个阶段

什么是图形渲染API?

常见的图形渲染API有哪些?

答案

1.前向渲染和延迟渲染的流程

【例图转自知乎】

前向渲染和延迟渲染都是图形管线(graphics pipeline)中的渲染技术,它们涉及的步骤不完全相同。

前向渲染中,光照计算通常是在像素着色器(pixel shader)阶段进行的,因此光照计算被包含在了图形管线的像素处理阶段。

而在延迟渲染中,光照计算通常是在后期阶段进行的,因此光照计算不在图形管线的常规步骤中,而是在后处理阶段。

2.前向渲染和延迟渲染的优缺点

【例图转载自Cambridge Computer Science Talks】

结论先赏:

Forward rendering的优缺点:

DEFERRED Rendering的优缺点:

上图2可以看出:DEFERRED Rendering彻底把mesh部分和light部分(fragment shader中的)分开。分离了mesh和light的依赖关系。

3.G-Buffer是什么

G-buffer(几何缓冲区)是在计算机图形学中的一个重要概念,用于在渲染管线中存储与几何相关的信息。它通常是一个包含多个纹理或缓冲区的帧缓冲对象,每个纹理或缓冲区存储不同类型的信息。G-buffer 的内容可以因渲染管线的实现方式而异,但通常包括以下一些常见的信息: 1. 位置信息 (Position): 存储每个像素或片段在世界空间或相机空间中的位置坐标。这对于后续的光照计算、阴影计算等操作非常有用。 2. 法线信息 (Normal): 存储每个像素或片段的法线向量。法线向量通常被用来进行光照计算、阴影计算以及各种表面效果的计算,如凹凸映射、法线贴图等。 3. 颜色信息 (Albedo): 存储每个像素或片段的基本颜色信息,即表面的固有颜色,不包含光照效果。这对于渲染后处理、图像效果等非光照相关的操作非常有用。 4. 材质信息 (Material): 存储每个像素或片段的材质属性,如反射率、折射率、粗糙度等。这对于实现更复杂的材质效果、光照模型以及渲染效果非常重要。 5. 深度信息 (Depth): 存储每个像素或片段到相机的距离或深度值。深度信息在进行像素遮挡、深度测试以及后期景深效果等方面非常关键。 这些信息一起构成了 G-buffer,通过在渲染管线的不同阶段捕获和存储这些信息,可以使得后续的渲染操作更加灵活、高效,并且能够实现更高质量的图形效果。

Deferred rendering完成G-buffer之后

we have to draw the entire scene using the same BRDF,

what we can do is assign IDs to each material (e.g. 8-bi number), branch to different ID

Luckily, pixels that are spatially local together are very likely to use the same material, so we actually make

very strong use of spacial locality

4.前向渲染和延迟渲染各自擅长的方向总结

Forward rendering

优点:抗锯齿,适合半透明、透明

(前向渲染的抗锯齿效果通常会更好,这是因为前向渲染在处理像素时,会考虑到场景中每个像素的光照和材质属性。由于它在渲染过程中直接计算光照和材质属性,因此可以更准确地确定像素的颜色和亮度。这种准确性有助于减少锯齿现象的出现,使得图像边缘更加平滑和真实。相比之下,延迟渲染通常会导致锯齿效果更明显,因为它将光照和材质属性的计算延迟到后期处理阶段,可能会导致图像边缘的像素信息不够精确,从而产生锯齿现象。)

Deferred rendering(将光照延迟到后期进行,减少计算量)

优点:适合复杂光照,固体

无法直接支持半透明物体,和抗锯齿效果。

结论和现状:

目前,AAA游戏中的主流渲染方式通常是延迟渲染(deferred rendering)。延迟渲染通过将场景中的几何体信息和光照信息分开处理,可以更有效地处理大量的光源和复杂的材质效果,从而提高了渲染效率和图形质量。虽然前向渲染(forward rendering)在某些情况下仍然有其优势,但延迟渲染已经成为许多大型游戏开发项目的首选渲染技术。

2007/08引入deferred rendering之后,它成为AAA游戏的标准,但Doom又用了Forward rendering,因为以前的成本来自于draw call因为当时还在使用GPU,现在的成本来自于memory

GTA V先用deferred rendering,再把透明区域单独拿出来forward rendering

5.GPU pipeline

【本回答转载自Cambridge Computer Science Talks】

"input assembler”接收原始的顶点数据,例如顶点坐标、法线、纹理坐标

6.Tessellation的三个阶段

  1. Hull Shader(壳着色器):

    • 输入:一组控制点(通常是补丁的顶点)。
    • 功能:定义细分级别(Tessellation Level),决定几何细分的密度,控制生成多少新顶点。它还可以为每个补丁生成新的顶点数据。
  2. Tessellator(细分器):

    • 输入:Hull Shader 提供的细分级别。
    • 功能:根据细分级别对补丁进行几何细分,生成更多的顶点。它是硬件固定功能的一部分,不需要编写代码。
    • 输出:细分后的新顶点的参数化坐标(通常是三角形、四边形等顶点的UV坐标)。
  3. Domain Shader(域着色器):

    • 输入:Tessellator 生成的细分后的参数化坐标。
    • 功能:通过这些参数化坐标计算每个新顶点的最终位置,并可以进行其他操作(如计算光照、法线等)。它负责将参数化空间的细分点转换为最终的三维坐标。

hull shader defines the pattern for the output triangles,

tesselator create those triangles based on that pattern,

domain shader will then position the triangles based on some formulas.

A potential use case for tessellation is taking in a lowpoly model and acting a highpoly model by introducing more triangles

7.什么是图形渲染API?

图形渲染API(Graphics Rendering API)是一组允许程序与图形硬件(如GPU)进行交互的编程接口。它为开发者提供了访问底层图形硬件的功能,使得程序能够绘制图像、处理几何体、应用纹理、执行光照计算等任务,而不需要直接控制硬件细节。

图形渲染API的作用:

  • 抽象硬件细节:API封装了底层硬件操作,开发者通过API调用即可利用GPU的强大计算能力,而不必直接操作硬件。
  • 跨平台支持:通过使用标准化的API,开发者可以编写适用于多个操作系统或设备的代码,而不需要为每个平台编写不同的代码。
  • 高效渲染:API提供了各种优化手段,使得复杂的3D图形渲染任务能够以高效的方式执行。

8.常见的图形渲染API有哪些?

常见的图形渲染API有以下几种:

  1. Direct3D

    • 开发者:微软(Microsoft)
    • 平台:Windows
    • 描述:这是微软Windows平台上使用最广泛的图形API,广泛应用于Windows游戏和应用程序开发。它是DirectX的一部分,包含了渲染2D和3D图形的功能,支持硬件加速。
    • 应用场景:Direct3D 是微软的专有图形API,几乎是Windows平台上开发3D图形应用(尤其是PC游戏)的标准。它还广泛用于Xbox游戏开发、虚拟现实(VR)以及Windows的图形应用程序中。
    • 优点
      • 深度集成到Windows操作系统中,优化良好,适合Windows和Xbox平台的高性能应用。
      • 与微软的DirectX工具链(包括音频、输入等)高度集成。
      • 支持最新的图形硬件和技术(如光线追踪、着色器模型等)。
    • 缺点
      • 仅限于Windows和Xbox平台,不是跨平台解决方案。
      • 开发者需要为其他平台(如macOS或Linux)选择其他API。
  2. OpenGL

    • 开发者:Khronos Group
    • 平台:跨平台(Windows、Linux、macOS等)
    • 描述:OpenGL 是一个开放标准的图形API,支持多种操作系统和硬件。它在图形开发界非常受欢迎,应用于游戏、图形工具和科学计算等领域。
    • 常用性:曾经非常常用,尤其在跨平台应用和图形工具中,但近年来被Vulkan等现代API部分取代。
    • 应用场景:OpenGL 曾是跨平台图形渲染的标准,适用于Windows、macOS、Linux等多种操作系统。它广泛应用于CAD软件、科学计算、可视化工具,以及早期的PC游戏开发。由于其跨平台特性,许多跨平台的应用程序、模拟器以及3D软件(如Blender)都依赖OpenGL。
    • 优点
      • 真正的跨平台支持,适用于多种桌面和嵌入式系统。
      • 生态系统成熟,支持的硬件广泛,拥有大量的开发文档和社区支持。
    • 缺点
      • 由于API设计较为陈旧,性能不如现代的低开销API(如Vulkan或Direct3D 12)。
      • 多线程渲染性能有限,灵活性较低,优化较为复杂。
  3. Vulkan

    • 开发者:Khronos Group
    • 平台:跨平台(Windows、Linux、Android等)
    • 描述:Vulkan 是一个现代的、低开销的图形API,旨在替代OpenGL。它提供了更直接的硬件访问和更高效的多线程渲染,适合高性能应用(如游戏引擎、虚拟现实)。Vulkan 在细粒度控制和性能优化方面优于传统的OpenGL。
    • 常用性:越来越常用,特别是在高性能游戏和多平台项目中。
    • 应用场景:Vulkan 是一个低开销、跨平台的图形API,旨在替代OpenGL,提供更高效的硬件访问。它广泛用于跨平台游戏开发、虚拟现实(VR)、增强现实(AR)和图形密集型应用。特别是对于需要多线程渲染的高性能应用(如AAA级游戏),Vulkan 提供了卓越的性能和灵活性。它在Android、Windows、Linux等平台上都有广泛应用,很多现代游戏引擎(如Unreal Engine、Unity)都支持Vulkan。
    • 优点
      • 更加现代化的设计,低开销,允许开发者直接管理GPU资源,提高渲染性能。
      • 支持跨平台,适用于Windows、Linux、Android等多种操作系统。
      • 优化多线程渲染,提供更高效的硬件控制,适合大型和复杂的图形项目。
    • 缺点
      • 编程复杂度较高,相比Direct3D或OpenGL,Vulkan需要开发者管理更多的细节,学习曲线较陡。
      • 对于小型或简单项目,开发成本可能较高。
  4. Metal

    • 开发者:苹果公司(Apple)
    • 平台:iOS、macOS
    • 描述:Metal 是苹果公司为iOS和macOS开发的低开销图形API,类似于Vulkan。它旨在提供高性能图形和计算能力,广泛用于苹果平台上的应用和游戏开发。
    • 常用性:在苹果生态系统中(iOS 和 macOS)非常常用。
    • 应用场景:Metal 是苹果公司为其设备专门开发的低开销、高性能的图形API。它广泛应用于iPhone、iPad和Mac上的游戏、应用程序、虚拟现实(VR)、增强现实(AR)以及专业图形工具(如Final Cut Pro、Photoshop等)。
  5. WebGL

    • 开发者:Khronos Group
    • 平台:浏览器(跨平台)
    • 描述:WebGL 是基于OpenGL ES的API,专门用于在网页中渲染3D图形。它可以通过JavaScript来调用,在浏览器中无需安装额外插件即可显示复杂的3D图形。
    • 常用性:非常常用,尤其是在网页上的3D图形渲染方面。
    • 应用场景:WebGL 允许开发者在浏览器中直接渲染3D图形,而无需用户安装额外的插件或软件。它被广泛应用于在线游戏、互动3D模型、数据可视化和增强现实(AR)应用中。例如,Google Maps的3D视图和各种在线3D模型展示平台都使用WebGL。
    • 优点
      • 跨平台支持:适用于大多数现代浏览器(如Chrome、Firefox、Safari、Edge等)。
      • 开发门槛低,可以使用JavaScript直接调用API。
    • 缺点
      • 受限于浏览器的性能和安全沙箱,性能不如本地图形API(如Metal、Vulkan等)。
      • 复杂的3D渲染可能会受到浏览器环境的制约。
  6. OpenGL ES

    • 开发者:Khronos Group
    • 平台:移动设备(Android、iOS等)
    • 描述:OpenGL ES 是OpenGL的简化版,专门用于嵌入式系统,如智能手机和平板电脑。它是移动游戏和应用程序开发中常用的图形API。
    • 优点
      • 跨平台支持:兼容Android、iOS、以及许多嵌入式系统设备。
      • 在移动设备上性能较好,适合资源受限的环境。
    • 缺点
      • 随着Vulkan和Metal等更现代API的普及,OpenGL ES逐渐被取代,尽管它仍然在一些旧设备上使用。
      • 功能和灵活性不如Vulkan或Metal,尤其在多线程渲染和细粒度控制上。

总结:

  • Direct3DWindows和Xbox平台上最常用的图形API,特别是在PC游戏开发中,它几乎是行业标准。
  • OpenGL 曾经是跨平台的主要图形API,虽然如今它在桌面应用中仍然有一定的使用,但逐渐被Vulkan替代,特别是在游戏开发和高性能渲染中。
  • Vulkan 是当今跨平台图形开发的首选API之一,特别适用于高性能、复杂的应用。尽管它的学习成本较高,但它的多平台和高效特性使得它在游戏引擎和虚拟现实中越来越受欢迎。
  • Metal苹果平台上非常流行,几乎是iOS和macOS上的标准API。
  • WebGL网页端3D渲染中无可替代,非常常用,尤其在跨平台的应用场景下。
  • OpenGL ES 在移动设备和嵌入式系统上仍然常用,尽管现代的API(如Vulkan)正在逐渐取代它。

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

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

相关文章

图神经网络池化方法

图神经网络池化方法 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 图神经网络池化方法前言一、扁平图池化二、分层图池化1.节点聚类池化2.节点丢弃池化 参考文献 前言 图池化操作根据其池化策略的差异&#xff…

软考(中级-软件设计师)(0919)

软考 一、软件设计师-历年考试考点分布情况-上午-计算机与软件工程知识 知识点分数说明比例软件工程基础知识11开发模型、设计原则、测试方法、质量特性、CMM、Pert图、风险管理14.67%面向对象12面向对象基本概念、面向对象分析与设计、UML、常见算法16.00%数据结构与算法10…

代码随想录算法day37 | 动态规划算法part10 |

今天开始正式子序列系列!!!!! 300.最长递增子序列 本题是比较简单的,感受感受一下子序列题目的思路。 力扣题目链接(opens new window) 给你一个整数数组 nums ,找到其中最长严格递增子序列的长…

读mamba有感,自然而然产生的问题及答案。

原文链接:https://arxiv.org/abs/2312.00752 Q:为什么说Mamba可以比肩甚至超越transformer?各自有什么优劣? A:Transformer在处理长序列时,存在着计算效率低下的问题,无法对有限窗口之外的任何…

查询中的行选择

用WHERE子句限制从查询返回的行。一个WHERE子句包含一个必须满足的条件,WHERE子句紧跟着FROM子句。如果条件是true,返回满足条件的行。 在语法中: WHERE 限制查询满足条件的行 condition 由列名、表达式、常数和比较操作组成…

bootstrap application nacos环境配置失效

tmd 环境配置 是yaml ,yml 后缀配置不生效 (不,看你取得文件名是什么) 如果 file-extension 配置的是yaml 就读取不到 yml 中的配置 2 . 如果还不行,、nacos 配置只能卸载bootstrap.yml 中,application.yml 不生效 bootstrap.yml…

c/c++语言中extern的用法(VS编译)

c/c语言中extern的用法 前言:1. 声明外部变量2. 声明外部函数3. 在头文件中使用注意事项 效果展示: 前言: extern 关键字不仅在 C 语言中使用,在 C 语言中也同样适用。它主要用于声明一个变量或者函数是在别的文件或翻译单元中定…

怎么操作使http变成https访问?

获取SSL证书 选择证书颁发机构:可以选择受信任的免费或付费证书颁发机构(CA)如JoySSL 申请和验证域名:注册并填写注册码230920,验证域名所有权。下载SSL证书文件到本地电脑. JoySSL品牌证书 注册享大额优惠JoySSL是网…

Android开发高频面试题之——Android篇

Android开发高频面试题之——Android篇 Android开发高频面试题之——Java基础篇 Android开发高频面试题之——Kotlin基础篇 Android开发高频面试题之——Android基础篇 1. Activity启动模式 standard 标准模式,每次都是新建Activity实例。singleTop 栈顶复用。如果要启动的A…

车市状态喜人,国内海外“两开花”

文/王俣祺 导语:随着中秋假期告一段落,“金九”也正式过半,整体上这个销售旺季的数据可以说十分喜人,各家车企不是发布新车、改款车就是推出了一系列购车权益,充分刺激了消费者的购车热情。再加上政府政策的鼎力支持&a…

Unity 使用Editor工具查找 Prefab 中的指定脚本

在 Unity 项目中,随着项目规模的扩大和 Prefab 数量的增加,管理和定位 Prefab 中的脚本变得更加复杂。为了提高开发效率,所以需要编写一个自定义的 Unity Editor 工具,帮助查找某个 Prefab 中是否使用了指定的脚本。本文将介绍如何…

LIN总线CAPL函数——干扰LIN帧响应段(linInvertRespBit )

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…

目标检测:滑块验证

最近在做一些爬虫相关的任务,有时候在登录时候需要去做滑块验证,刚好自己是做AI这一块得,就想着使用目标检测去做检测,然后绕过滑块。

AI 时代,大模型产业落地的八大思考

引言 在人工智能领域,大模型技术正逐渐成为推动行业进步的关键力量。随着技术的发展,大模型不仅在学术界引起了广泛的关注,也在产业界展现出巨大的应用潜力。然而,如何将这些强大的模型有效地应用到实际产业中,仍然是…

什么软件可以远程控制电脑?好用的电脑远程控制软件有哪些?这6款可以帮到你!

在如今的数字化办公环境中,远程控制电脑已成为解决问题、协作工作的必备技能。 无论是技术支持、远程办公,还是简单的文件传输,远程控制软件都能让我们随时随地连接其他电脑,省时省力。 那么,有哪些好用的远程控制软…

大数据和代理:揭示它们之间的微妙联系

大数据,顾名思义,是指使用传统数据处理应用程序无法有效处理的极其庞大而复杂的数据集。这些数据集的特点是数量庞大、速度快、种类繁多,有可能提供有价值的见解并支持各个行业的决策过程。 这些数据可能来自各种来源,例如社交媒体…

一文速通calcite结合flink理解SQL从文本变成执行计划详细过程

文章目录 你可以学到啥测试代码背景知识SQL转变流程图问题 你可以学到啥 SQL如何一步步变成执行计划的有哪些优化器,哪些优化规则calcite 和flink 如何结合的 测试代码 EnvironmentSettings settings EnvironmentSettings.inBatchMode(); TableEnvironment tabl…

Shein西班牙开放平台模式广受市场欢迎,Shein适合卖什么产品?

Shein是一家专注于女性快时尚的跨境B2C互联网企业,主要面向欧美、中东等消费市场。经过海外十余年的发展,Shein在全球积累了数量庞大且仍在高速增长的广泛用户基础。目前Shein已开放自营商家及平台卖家两大合作模式,通过入驻Shein平台&#x…

23ai DGPDB,Oracle资源池战略的最后一块拼图

Oracle对资源池是有执念的! 在我看来,这种执念一方面是应用架构的微服务化,数据库被拆分的越来越小,而服务器的硬件能力是不断提升的,CPU核心数、内存和存储的容量都按照摩尔定律在不断增加,这就使得数据库…

QTAndroid编译环境配置

开始 QT 官网的安装教程安装,经过测试有部分小错误。以下是结合教程和网上搜集的一些材料最后安装成功的步骤。 SDK和JDKhttp://链接: https://pan.baidu.com/s/13CImHLAoUFAdecF2BVsBlQ?pwd627g 提取码: 627ghttp://链接: https://pan.baidu.com/s/13CImHLAoUFAd…