CN116894897A - 计算机图形处理方法以及系统 - Google Patents
计算机图形处理方法以及系统 Download PDFInfo
- Publication number
- CN116894897A CN116894897A CN202211436781.XA CN202211436781A CN116894897A CN 116894897 A CN116894897 A CN 116894897A CN 202211436781 A CN202211436781 A CN 202211436781A CN 116894897 A CN116894897 A CN 116894897A
- Authority
- CN
- China
- Prior art keywords
- depth
- frame
- graphics
- shading
- threshold
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 7
- 238000000034 method Methods 0.000 claims abstract description 94
- 238000012545 processing Methods 0.000 claims abstract description 60
- 238000009877 rendering Methods 0.000 claims description 22
- 238000004040 coloring Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 7
- 230000002829 reductive effect Effects 0.000 abstract description 6
- 230000007704 transition Effects 0.000 description 19
- 238000003860 storage Methods 0.000 description 17
- 239000012634 fragment Substances 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000009826 distribution Methods 0.000 description 11
- 238000013459 approach Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000005070 sampling Methods 0.000 description 8
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 238000013213 extrapolation Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 239000000203 mixture Substances 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Image Generation (AREA)
Abstract
本发明实施例提供一种计算机图形处理方法,包括:处理至少一个图形命令以形成计算机图形的第一帧;通过处理与所述第一帧相关的深度缓冲区中的信息来计算出一个或多个深度阈值;以及通过基于所述一个或多个深度阈值将一个或多个着色率应用于所述计算机图形的第二帧的一个或多个屏幕区域来控制所述第二帧的着色率。使用该方法,可以减少执行计算机图形处理方法的设备(例如GPU)的负载。
Description
技术领域
本申请涉及图像技术领域。
背景技术
计算机图形是软件应用的基础元素。图形是虚拟可视化技术,例如图像、视频以及真实或虚构对象的其他表示。广泛的软件应用使用计算机图形作为其功能的一部分。此类应用包括游戏、电影、多媒体/内容传递系统(content delivery system)、社交媒体工具、设计产品、文字处理器(word processor)、电子表格(spreadsheet)、导航系统、移动应用和一些其他软件工具。
计算机图形已经发展为变得越来越丰富、奢华和复杂。逼真的3-D图形现在很常见。分辨率和帧速率被扩展来支持详细、逼真和沉浸式(immersive)的图形。然而,处理这些复杂的织绵图形(graphical tapestry)需要大量的计算资源(例如CPU、存储器(memory)等)。图形处理单元(Graphics processing unit,GPU)电路和其他专用硬件已被设计用于执行与渲染图形相关的特定任务。
发明内容
本发明实施例提供一种计算机图形处理方法,包括:在具有一个或多个处理器的客户端设备处处理至少一个图形命令以形成计算机图形的第一帧;通过处理与所述第一帧相关的深度缓冲区中的信息来计算出一个或多个深度阈值;以及通过基于所述一个或多个深度阈值将一个或多个着色率应用于所述计算机图形的第二帧的一个或多个屏幕区域来控制所述第二帧的着色率。
本发明实施例提供一种系统,包括:存储器;至少一个处理器,耦接到所述存储器并被配置为:在客户端设备处处理至少一个图形命令以呈现计算机图形的第一帧;通过处理与所述第一帧相关联的深度缓冲区中的信息来计算一个或多个深度阈值;以及通过基于所述一个或多个深度阈值将一个或多个着色率应用于所述计算机图形的第二帧的一个或多个屏幕区域来控制所述第二帧的着色率。
本发明实施例提供一种存储有指令的非暂时性计算机可读设备,当由至少一个计算设备执行时,使该至少一个计算设备执行包括以下操作的操作:在客户端设备处处理至少一个图形命令以形成计算机图形的第一帧;通过处理与所述第一帧相关联的深度缓冲区中的信息来计算一个或多个深度阈值;以及通过基于所述一个或多个深度阈值将一个或多个着色率应用于所述计算机图形的第二帧的一个或多个屏幕区域来控制所述第二帧的着色率。
本发明的上述实施例提供的技术方案可以减少执行计算机图形处理方法的设备(例如GPU)的负载。
附图说明
并入本文并形成说明书一部分的附图示出了本发明的实施例,并且与描述一起进一步用于解释本发明的原理并使本领域技术人员能够制作和使用实施例。
图1是根据一些实施例的包括客户端设备的环境的框图,该客户端设备通过将可变速率着色应用于由图形应用生成的图形来减少GPU负载。
图2A-2D是根据一些实施例的示例屏幕显示,其示出了对场景中的对象的可变速率着色的应用。
图3A是示出根据一些实施例的控制场景中的着色率以减少GPU负载的方法的流程图。
图3B是示出根据一些实施例的控制场景中的着色率以减少GPU负载的替代方法的流程图。
图4A是示出根据一些实施例的步幅(stride)和阈值的示意图。
图4B是示出根据一些实施例的样本帧和正常帧的示意图。
图5A是示出根据一些实施例的通过将场景划分为正常帧和样本帧来控制场景中的着色率以减少GPU负载的方法的流程图。
图5B是示出根据一些实施例的通过将场景划分为正常帧和样本帧来控制场景中的着色率以减少GPU负载的替代方法的流程图。
图6A-6D是根据一些实施例的示例屏幕显示,其示出了使用可变速率着色查找图像来控制帧中的着色速率。
图7是用于实现各种实施例的示例计算机系统。
在附图中,相同的附图标记通常表示相同或相似的组件。此外,一般来说,参考编号的最左边的一个或多个数字标识第一次出现参考编号的附图。
具体实施方式
本文提供了系统、装置、设备、方法和/或计算机程序产品实施例,和/或其组合和子组合,用于通过以编程方式控制图形中的着色率来减少图形处理单元(graphicsprocessing unit,GPU)的负载。
一般而言,软件应用以计算机图形的形式呈现可视化。例如,在计算机游戏中,图形可以让玩家沉浸在虚拟世界中,虚拟世界是由虚拟对象组成的3-D空间。玩家可以四处走动并与虚拟世界互动。图形可以逐帧更新并响应玩家的动作。在另一个示例中,用户可以观看使用计算机图形生成的电影或其他多媒体内容。这些表示中的单个图像可以称为帧。帧可以由多个表示对象的三角形或多边形构成。连续帧的集合可以称为场景(scene)。
已经创建了允许开发者设计、实现和将图形集成到他们的软件应用中并且向用户传递、发布和呈现这些图形的图形引擎。例如,开放图形库(Open Graphics Library,OpenGL)提供了用于渲染计算机图形的跨平台接口。此类引擎提供了一组开发者在设计计算机图形时可以利用的功能,即应用程序编程接口(application programminginterface,API)。
随着图形变得更加丰富和复杂,已经构建了专门的硬件来处理这些引擎使用的绘图流水线(graphics pipeline)。这些专用硬件设备称为GPU。本质上,渲染图形需要快速高效地处理大量的顶点(vertice)/矩阵(matrice),GPU可以使用并行处理技术同时处理这些顶点/矩阵。对于此类任务,GPU可以实现比非专用CPU好几个数量级的性能。这一发展为更复杂、更丰富的图形的集成和传递打开了大门。
然而,随着GPU演进以提供新功能、优化和并行化,开发者经常不得不安装驱动(driver)并采用扩展来允许传统图形引擎利用新特征。从这个意义上说,OpenGL等较旧的图形引擎无法有效利用现代GPU的特征。因此,较新的图形引擎提供了专门设计用于利用现代图形卡功能的API。此范例包括图形引擎,例如Vulkan、Direct3D 12、Metal、虚幻引擎(Unreal Engine)等。这些工具利用现代GPU的并行处理能力,并为开发者提供对图形硬件的最大控制。然而,这些现代引擎需要权衡取舍。也就是说,开发者必须与繁琐和冗长的API交互,其中与图形相关的每个细节都需要管理和控制。但是这些下一代图形引擎与现代GPU的功能相结合,在渲染计算机图形时提供了极高的性能。
现代图形引擎可以采用绘图流水线。绘图流水线可以提供一种严格结构,以实现现代GPU的并行处理能力。本质上,绘图流水线是由图形引擎执行的一系列操作。绘图流水线可以接收与计算机图形中的合成多边形相关的顶点、纹理和其他信息。绘图流水线执行渲染图形所需的各种转换步骤(transformative step)。例如,在Vulkan中,绘图流水线执行输入组装(input assembly)、顶点着色、曲面细分(tessellation)、几何着色、光栅化(rasterization)、片段着色(fragment shading)和颜色混合(color blending)。某些操作在绘图流水线中可能是静态的和不可变的,而其他操作可以是开发者使用API功能高度可控/可编程的。开发者可以使用例如OpenGL着色语言(OpenGL shading language,GLSL)来控制行为。
图形引擎可以在渲染3-D图形时使用深度缓冲区。深度缓冲区,也称为z缓冲区或w缓冲区,是计算机图形学中用于从特定角度表示3D空间中对象的深度信息的数据缓冲区。深度缓冲区有助于渲染场景以确保合适的多边形适当地遮挡其他多边形。深度缓冲区存储帧中每个像素位置的深度。
顶点着色器(vertex shader)是绘图流水线中的一个阶段。顶点着色器可以应用各种转换步骤,这些步骤考虑了与帧中对象相关的位置、颜色、纹理、照明和其他因素。顶点着色器可以将在虚拟空间中每个顶点的3-D位置转换为它出现在屏幕上的2-D坐标。这种转换可以称为投影转换。作为投影转换的结果,可以计算深度值。可以使用深度缓冲区执行深度测试,以解决帧中重叠多边形之间的冲突。
现代图形引擎和GPU提供的一个特定特征称为可变速率着色(variable rateshading,VRS)。VRS是指控制片段着色器(fragment shader)应用的对象的着色率的能力。如果没有VRS,场景中的每个像素都会单独着色。这种高级别的处理可能需要大量的GPU处理。使用VRS,在整个帧上像素着色率是可变的。例如,Vulkan图形引擎提供了VRS扩展(VK_KHR_fragment_shading_rate),允许应用开发者控制整个帧的着色率。这使开发者可以根据他们的应用的特性将着色资源集中在需要提高渲染性能和质量的地方。例如,屏幕上的像素组可以被分配1x1的着色率,为像素组中的每个像素都调用一次片段着色器(fragmentshader)。这对于需要高水平细节的像素可能很重要——例如,在视频游戏的视野中心。然而,某些像素可能不需要如此高水平的细节,并且对于这样的像素,可以选择较低的着色率,例如2x2、1x2、2x4、4x4等。这可以适用于在视野边缘、背景、空白空间(empty space)等的像素。
随着现代图形引擎寻求最大限度地利用GPU的能力,GPU压力仍然是性能瓶颈和阈值。资源紧缩可能非常严重,以至于某些应用无法在某些设备上运行。此外,移动设备的GPU提供了不同的架构,考虑到它们独特的操作需求—资源可能更稀缺,GPU可能不太稳健。因此,GPU的负载控制在移动设备上尤为重要。
因此,需要减少GPU的负载。一些传统解决方案试图减少GPU的负载,但这些传统解决方案通过更改帧缓冲区大小来操作。这种方法同样会影响整个屏幕的图形质量,对整体的用户体验产生不利影响,并且不会获得显著的性能提升。
虽然VRS提供了减少GPU上的GPU负载的选择,但传统方法需要图形应用的开发者为特定帧/场景设置VRS。例如,视频游戏开发者可以将视野中心中的着色率配置为较高级别,而在边缘上的着色率配置为较低级别,以节省其应用消耗的资源。但是开发者必须做出这个决定并相应地对应用进行编程。终端用户无法控制做出此决定和实施此决定。
因此,需要基于帧和场景的特性以编程方式执行VRS的部分质量控制。在所公开的方法中,可以通过对屏幕的不同区域应用不同的着色率来减少GPU负载。在一个实施例中,所公开的方法采用协同工作的深度分析器和着色率控制器来控制计算机图形中的着色率。深度分析器响应绘图流水线中的命令,通过读取深度缓冲区来计算深度阈值。着色率控制器然后根据计算的阈值修改图形命令以控制后续帧的着色率。通过应用该技术,终端用户可以减少GPU负载,而不管图形应用开发者编程的着色率如何。由于深度分析器智能地计算深度阈值,因此可以在不牺牲有意义的质量的情况下减少GPU负载。
该技术可以在支持VRS硬件和基于图元(primitive)或基于图像的VRS的任何平台上运行。当在驱动中实现时,这种方法避免了修改应用程序的需要。在一个实施例中,该技术应用于安装在客户端设备上的图形驱动以修改/更新从图形应用接收到的命令。在另一个实施例中,该技术可以应用在硬件和驱动之间的固件层中。在另一个实施例中,该技术可以应用在驱动和应用之间的软件层中。在又一个实施例中,该技术可以在客户端设备上的硬件中实施。
这些实施例的方案具有如下技术效果:通过将VRS应用于图形以便减少GPU负载,同时也不需要应用开发者手动设定和编程实际应用中的着色率。而且,通过减少GPU负载,可以降低设备的功耗。而且,该技术灵活且适应性强,可以以接近实时的方式根据任何合适的图形应用所生成的帧配置VRS。
图1是根据一些实施例的包括客户端设备的环境100的框图,该客户端设备通过将VRS应用于由图形应用生成的图形来减少GPU负载。环境100可以包括客户端设备102、GPU负载组件104、深度分析器105、着色率控制器106、阈值转变模块107、图形处理单元108、显示器110、图形引擎115和图形应用120。如图1所示,在其他实施例中,这些组件可以存在于单个设备上,可以使用各种通信协议进行分布和通信,或者以其他合适的布置来组织。
客户端设备102可以是台式机、工作站、膝上型电脑、笔记本电脑、数字助理、上网本、平板电脑、智能电话、移动电话、智能手表或其他可穿戴设备、设备、物联网的一部分,和/或嵌入式系统,或其任何组合。客户端设备102可以允许用户执行各种任务,包括访问、运行或以其他方式与产生计算机图形的应用交互。此类应用可包括游戏、多媒体/内容传递系统、社交媒体工具、设计产品、文字处理器、电子表格、导航系统、移动应用和许多其他合适的软件程序。图形可以由图形应用程序设计和构造以便形成人类可感知的图像的大量三角形或多边形构成。客户端设备102可以促使查看这些图形和与这些图形的其他交互。客户端设备102访问的图像序列中的特定图像可以称为“帧”。这些帧的特定序列可以称为“场景”。图形可以是2-D但也可以是3-D,并且本领域技术人员将理解存在多种技术来将几何(geometric)数据的3-D表示渲染为2-D图像以供显示。例如,可以使用作为模型化世界中的空间区域的视锥体(viewing frustum),表示在客户端设备102的用户看图形时呈现给用户的视觉金字塔(pyramid of vision)。
在一个实施例中,客户端设备102可以通过下载和安装图形创建应用(graphics-creating application)然后运行该应用来访问图形。在另一个实施例中,客户端设备102可以通过网络从图形产生应用接收图形或使用另一个合适的通信协议或机制从图形产生应用接收图形。在一些实施例中,客户端设备102可以另外安装或以其他方式依赖适当的客户端图形引擎或驱动(例如以下描述为图形引擎115)以进一步帮助计算机图形的渲染、接收和处理。尽管在其他实施例中,图形产生应用可以从外部访问图形引擎或以其他方式依赖图形引擎。
GPU负载组件104可以在客户端设备102上操作并且通过以编程方式控制着色率来减少GPU负载。GPU负载组件104可以基于接收到的计算机图形中的帧的特性来实施VRS。GPU负载组件104可以以近实时的方式向屏幕的不同区域应用不同的着色率来减少GPU负载。通过应用该技术,GPU负载组件104可以减少GPU上的负载,而不管由图形应用开发者编程的着色率。下面更详细地描述了该技术。
GPU负载组件104可以在安装在客户端设备102上的图形驱动中、在硬件和驱动之间的固件层中、在驱动和应用之间的软件层中、或在任何其他合适的配置中运行。GPU负载组件104可以包括深度分析器105、着色率控制器106和阈值转变模块107。
深度分析器105可以读取图形命令和/或处理由图形应用120生成的图形中的帧以收集关于深度缓冲区的细节。深度分析器105然后可以使用图形的深度缓冲区中的像素的深度信息作为算法中的输入,该算法计算一个或多个深度阈值。这些深度阈值用于使用图形引擎和GPU的VRS功能设置后续帧的特定屏幕区域的着色率。深度分析器105可以通过使用各种合适的分析技术执行图像处理以分析深度特征来确定深度阈值。这种技术可以考虑深度的统计数据(例如,最小值、最大值、中值等)、深度的直方图分布(histogramdistribution)、深度的空间分布、深度的聚类(clustering)或分割(例如,使用核(kernel)密度估计、K均值(K-means)、高斯混合模型,等等)。这些深度阈值可能不是恒定的,并且可能随着场景的变化而变化。例如,在像素深度值表示为范围为[0.0f,1.0f]的浮点数的实施例中,深度阈值可以是范围为[0.0f,1.0f]的浮点数以用于以后比较。在另一个实施例中,深度阈值可以代数、几何或使用其他合适的方法来表示。例如,表达式或方程可用于计算深度阈值,假如该方程产生在所实施的浮点数范围(例如,[0.0f,1.0f])内的值。使用这种方法,深度阈值除了在帧与帧之间变化外,还可以在单个帧内自适应地变化。在一些实施例中,深度分析器105可以使用下采样(down sample)来提高效率。然后深度分析器105可以将计算的深度阈值输出到着色率控制器106。在参考图5进一步描述的实施例中,深度分析器105还可以计算应用到正常帧/非样本帧的阈值的步幅以实现效率提升。深度分析器105可以参考先前的样本帧或使用另一种合适的方法来计算步幅。
着色率控制器106可以使用深度阈值来控制场景中后续帧的着色率。着色率控制器106可以从深度分析器105接收深度阈值。着色率控制器106可以采用截获与着色器相关的命令的截获框架(interception framework)。截获框架可以安装/插入在图形应用120和硬件之间的消息路径上或在另一个合适的位置中。在一个实施例中,着色率控制器106可以修改一个或多个着色器配置命令并将适当的VRS配置命令添加到截获的着色器相关命令。例如,着色率控制器106可以通过修改GLSL命令或通过将附加命令插入命令缓冲区,使用适当格式化的GLSL命令来控制着色率。GLSL语言可以提供基于图元的VRS,并且可以通过在顶点着色器或其他能够控制着色率的着色器中定义的内置变量来激活基于图元的VRS。因为着色器知道多边形的深度值,所以着色器可以执行阈值比较以确定三角形的深度区域并设置内置的VRS变量。因此,着色率控制器106可以通过以下方式配置着色器/流水线:(1)将深度阈值传递到着色器中;(2)增加深度阈值比较操作;(3)激活内置VRS变量。在其他实施例中,着色率控制器106可以仅修改图形命令以应用VRS和/或仅将附加命令插入到命令缓冲区中以设置适当的着色率。
在替代实施例中,着色率控制器106可以创建着色率查找图像并将其附加在渲染路径(render-pass)上。这种技术可以称为基于图像的VRS。在这样的实施例中,着色率控制器106可以创建用于控制帧中的着色率的查找图像。查找图像可以基于图块(tile)或基于像素指定着色率或使用另一种合适的方法来指定着色率,基于图块(或基于像素)指定着色率是指以图块(或像素)为单位配置着色率,为每个图块(或像素)指定一个着色率。在一个实施例中,图块可以包含多个粗糙像素(coarse pixel),并且每个粗糙像素可以包含多个像素。查找图像中图块的大小可以基于所使用的硬件而不同。粗糙像素的大小可以是VRS设置(例如,1x1、2x2等)。在下面参考图6A-6D提供关于执行基于图像的VRS的更多细节。
阈值转变模块107可以确定阈值以应用于正常帧,即,非样本帧。在一个实施例中,“样本”帧是用于深度分析器105执行图像处理以基于深度缓冲区中的像素的深度信息确定适当的深度阈值的帧。在该实施例中,“正常”帧可以是阈值转变模块107无需读取深度缓冲区中的像素的深度信息就可以确定阈值的帧。阈值转变模块107可以从深度分析器105接收计算的阈值和步幅,或者使用合适的方法确定阈值和步幅。如上所述,深度阈值可以是用于为场景中的后续帧的特定屏幕区域设置VRS的代数或几何阈值。“步幅”可以指示估计的多个帧的深度阈值之间的变化率,例如指示相邻帧的深度阈值之间的变化。在一个实施例中,阈值转变模块107可以参考先前的样本帧来计算步幅。也就是说,阈值转变模块107可以基于从一个样本帧到下一个样本帧的变化来确定适当的步幅。下文将参考图4A至图4B更详细地讨论步幅、阈值和正常帧/样本帧。阈值转变模块107的行为将在下面参考图5详细地描述。
图形处理单元108可以是专门的电子电路,其被设计为处理数学密集型应用,例如计算机图形。图形处理单元108可以具有有效并行处理大数据块的并行结构,例如用于计算机图形应用、图像、视频等的数学密集型数据。也就是说,图形处理需要快速和高效的处理大量顶点/矩阵,并且图形处理单元108可以被专门设计为执行这些任务。图形处理单元108在通过非专用CPU执行此类任务时可以提供更大的效率。图形处理单元108可以支持VRS并提供与使用VRS渲染场景相关的优化和特征。
客户端设备102可以使用显示器110向客户端设备102的用户呈现由图形应用120生成的计算机图形。显示器110可以是监视器、屏幕显示器、电视、虚拟现实耳机(virtualreality headset)或能够显示计算机图形的其他此类合适的输出设备。
图形引擎115可以是允许开发者设计、实现图形并将图形集成到他们的软件应用中并且向用户传递、发布和呈现这些图形的工具。图形引擎115可以呈现提供一组功能的API,开发者在设计由软件应用使用的计算机图形时可以利用这些功能。图形引擎115的示例可以包括OpenGL、Vulkan、Direct3D 12(“DX12”)、Metal、虚幻引擎和其他合适的引擎。图形引擎115可以采用绘图流水线,该流水线执行有效地渲染图形所需的各种变换步骤。在渲染3-D图形时,图形引擎115可以存储帧中每个位置的深度信息到深度缓冲区(即,z缓冲区或w缓冲区)。图形引擎115可以在绘图流水线中使用顶点着色器,该顶点着色器应用考虑与帧中的像素相关的位置、颜色、纹理、照明和其他因素的各种变换步骤。
图形引擎115可以支持VRS。此功能启用对片段着色器应用到帧的特定部分的着色率的控制。使用VRS,像素着色率可以在整个帧上变化。例如,Vulkan提供了片段着色率(即“VK_KHR_fragment_shading_rate”)扩展,允许应用开发者控制片段着色率。此功能提高了渲染性能。可以为帧的某些部分指派1x1、2x2、1x2、2x4或4x4着色率。图形引擎115可以支持基于图元的VRS(primitive-based VRS)或基于图像的VRS。在一些实施例中,图形引擎115可以包括在客户端设备102上运行的客户端组件。
图形应用120可以是向用户提供计算机图形的应用。图形应用120是计算机游戏、多媒体/内容传递系统、社交媒体工具、设计产品、文字处理器、电子表格、导航系统、移动应用和任何其他合适的生成图形的软件应用。虽然在图1中单独显示,在一些实施例中,图形引擎115或图形应用120可以安装在客户端设备102上。
图2A-2D是根据一些实施例的示出VRS应用于场景中的对象的示例屏幕显示。图2A-2D提供的屏幕显示仅是示例性的,并且相关领域的技术人员将理解根据本发明可以采用一些方法来提供合适的屏幕显示。
图2A示出了在计算机图形中呈现场景中的原始帧(即,在由所公开的技术执行的任何修改之前)的屏幕显示200A。屏幕显示200A可以是场景中的单个帧,场景组合一系列帧以形成计算机图形。屏幕显示200A可以包括对象204A、对象204B和对象204C。在该示例中,对象204A是狗,对象204B是人,对象204C是树,但这仅仅是说明性的,并且可以在计算机图形中呈现任意数量的抽象和非抽象对象。在一些实施例中,可能只有一个对象,而在其他实施例中,可能有数百、数千或数百万个对象。对象204A-C可以由多边形构成,例如三角形。对象204A-C可以具有多个特征,包括颜色、透明度等。屏幕显示200A可以具有影响对象204A-C的渲染的照明、着色(shading)和其他特征。
图2B示出了屏幕显示200B,该屏幕显示200B示出根据深度缓冲区中存储的像素的深度信息图像化得到的灰度图。屏幕显示200B被呈现为灰度图像,其中每个像素的深度值在[0.0f,1.0f]的范围内。在屏幕显示200B中,深度阈值206A和深度阈值206B表示计算的阈值。可以基于第一帧(诸如屏幕显示200B)中的信息来计算深度阈值206A和深度阈值206B。当渲染下一帧(诸如屏幕显示200C)时可以应用深度阈值206A和深度阈值206B。深度阈值206A和深度阈值206B可以以代数、几何或使用其他合适的方法来表示。
图2C示出了屏幕显示200C,该屏幕显示200C呈现着色率控制器106基于由深度分析器105计算的深度阈值应用VRS之后的帧。屏幕显示200C可以包括参照阈值206A-B确定的屏幕区域208A、屏幕区域208B和屏幕区域208C。在屏幕显示200C中,因为对象204A落在屏幕区域208A内,所以对对象应用锐利的(例如,1x1)着色率。因为对象204B位于屏幕区域208B内,所以对象204B接收到稍低的VRS设置。因为对象204C位于区域208C内,所以对象204C接收到最低VRS设置。相关领域的技术人员将理解,通过将较低和/或较高的着色率应用于某些对象,可以减少图形处理单元108上的负载。
图2D示出了呈现第二帧的屏幕显示200D,其中深度阈值和着色率被应用于对象。屏幕显示200D示出如果对象的位置由于场景改变而改变,则对象的着色率可能改变。例如,在屏幕显示200D中,对象204A(狗)移动到屏幕区域208B中,因此该算法将较低的着色率应用于对象204A。而已经移动到屏幕区域208A中的对象204B(人)现在接收到锐利的着色率。
虽然屏幕显示200A-200D仅仅是示例性的,但这些显示说明了对场景中对象的VRS的一般应用。如在图3A和图3B中的方法中所描述的,通过以编程方式将VRS应用到场景可以减少GPU负载。
图3A是示出根据一些实施例的控制场景中的着色率以减少GPU负载的方法300A的流程图。方法300A可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上执行的指令)或其组合。应当理解,并非所有步骤都可能需要执行本文提供的公开内容。此外,一些步骤可以同时执行,或者以不同于图3A所示的顺序执行,如本领域普通技术人员将理解的。
在302A中,深度分析器105可以接收一组图形命令、帧或图形命令的结果。深度分析器105可以从图形应用120和/或图形引擎115接收命令/帧。在实施例中,深度分析器105可以从图形应用120接收通过驱动被传递到硬件中的图形命令。根据图形语言的设计,图形命令可以存储在命令缓冲区中或立即被处理。在一种方法中,可以在应用和硬件(例如,图形处理单元108)之间的消息路径上安装/插入拦截框架。在这种方法中,深度分析器105可以监视所有传递的图形命令以收集必要的信息(例如,缓冲区地址、深度属性(depthproperty)、着色器信息等)。深度分析器105然后可以使用该信息从存储器读回深度缓冲区中的像素的深度信息。该拦截框架还可用于允许着色率控制器106修改或添加命令(例如,配置VRS功能、执行深度分析作业等)并将修改/添加的命令传递给下游层并最终传递给硬件。
在304A中,深度分析器105可以读取帧的深度缓冲区。在一个实施例中,深度缓冲区可以包括帧中每个像素的深度值,例如,每个像素的深度值是深度范围0.0到1.0中的值。在一个实施例中,深度分析器105可以通过向图形引擎115发送适当的命令来读取深度缓冲区。在另一个实施例中,深度分析器105可以通过检查帧来确定帧的深度缓冲区的位置。
在306A中,深度分析器105可以执行图像处理以分析深度特征。例如,深度分析器105可以参考深度的统计数据,如最小值、最大值、中值等。深度分析器105可以构建深度的直方图(histogram)分布或深度的空间分布。深度分析器105可以通过诸如核密度估计、K-Means、高斯混合模型等算法使用深度的聚类或分割。
在308A中,深度分析器105可以基于在306A中确定的特征来计算深度阈值。深度分析器105可以计算单个深度阈值或多个深度阈值。深度分析器105可以计算多个深度阈值,其中每个深度范围对应于一个着色率且由深度阈值划分。例如,比阈值A远/高的深度范围可以应用2x2着色率,在阈值B和阈值A之间的范围可以应用2x1着色率,并且比阈值B近/低的范围可以应用1x1着色率。在其他实施例中,近/远和高/低与着色率之间的对应关系可以相反。深度阈值可以用代数、几何或使用其他合适的方法来表示。深度分析器105可以将深度阈值发送到着色率控制器106。
在310A中,着色率控制器106可以基于深度阈值插入或修改图形命令将VRS应用于后续帧。在一个实施例中,着色率控制器106可以使用基于图元的VRS。例如,用于控制着色率的图形命令可以是着色语言(例如,GLSL)中提供的基于图元的VRS API。在一个示例性方法中,着色率控制器106可以将特定着色率应用于屏幕区域中高于或低于深度阈值的像素。例如,可以将Vulkan上的VK_KHR_fragment_shading_rate扩展插入到图形命令缓冲区中,以控制后续帧的着色率。例如,在Vulkan中,着色率控制器106可以使用PrimitiveShadingRateKHR。在另一个实施例中,着色率控制器106可以使用基于图像的VRS来控制着色率。例如,着色率控制器106可以创建查找图像并提供片段着色率附件(attachment)并使用Vulkan的VkFragmentShadingRateAttachmentInfoKHR。
在312A中,客户端设备102可以在显示器110上渲染结果帧。根据计算的阈值和随后修改的命令,帧的某些区域可以具有与其他区域不同的着色率。方法300然后返回到302以处理命令缓冲区中的下一帧和/或图形命令集。在这个意义上,方法300是迭代的并且基于计算机图形随时间的变化继续调整VRS。
图3B是示出根据一些实施例的控制场景中的着色率以减少GPU负载的方法300B的流程图。方法300B可以由可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上执行的指令)或其组合的处理逻辑来执行。应当理解,并非所有步骤都可能需要执行本文提供的内容。此外,一些步骤可以同时执行,或者以不同于图3B所示的顺序执行。如本领域普通技术人员将理解的。
方法300B提出了执行上述方法300A的替代方法。方法300B说明与方法300A类似的步骤。方法300B中的步骤302B对应于方法300A中的步骤302A。步骤304B对应于步骤304A。步骤306B对应于步骤306A。步骤308B对应于步骤308A。步骤310B对应于步骤310A。步骤312B对应于步骤312A。方法300B进一步示出拆分深度分析器105和着色率控制器106的步骤的实施例。
图4A-B示出了当控制场景中的着色率以减少GPU负载时实现效率提升的实施例所依赖的几个概念。在该实施例中,GPU负载组件104可以将场景中的帧划分为“样本”帧和“正常”帧。通过仅确定用于“样本”帧的阈值,GPU负载组件104可以实现效率提升,因为执行图像处理和/或读取缓冲区深度可能需要较大计算量。
图4B是示出将场景划分为样本帧410A-B和正常帧412A-B的示意图。
样本帧410A-B可以是用于深度分析器106读取帧的深度缓冲区、执行深度图像处理以分析深度特征、并计算深度阈值和步幅(步幅指示了估计的深度阈值随着时间的变化率)的帧。例如,样本帧410A和样本帧410B可以从场景中周期性地、间隔的选择,例如每隔一个帧、每隔十个帧、每隔一百个帧等,随机地或者根据可能随特定实施方式变化的任何其他合适的方法来选择。
正常帧412A-B可以是阈值转变模块107使用估计的步幅(以下讨论为步幅404A-B)来计算阈值的帧—即,无需处理图像或读取深度缓冲区。通过避免针对正常帧412A-B读取深度缓冲区和/或执行的图像处理,阈值转变模块107可以提高控制场景中的着色率以减少GPU负载的方法的效率。
图4A是进一步示出在场景中随着时间的步幅、阈值和采样间隔的示例图。根据一些实施例,图4A包括阈值402A-D、步幅404A-B、采样间隔406、阈值范围408和点409A-B。
阈值402A-D示出了可以由深度分析器105计算的示例性深度阈值。在这个说明性示例中,在每个时间A0、A1、A2等处仅计算单个深度阈值。但是每次计算多个深度阈值也在本发明的范围内。在图4A的示例性图示中,样本帧出现在时间A0、A1、A2和A3。正常帧(非样本帧)出现在这些时间之间,特别是在点409A和点409B。对于样本帧,深度分析器105可以读取深度缓冲区、执行图像处理并计算深度阈值。也就是说,深度分析器105可以计算在时间A0的阈值402A,在时间A1的阈值402B,在时间A2的阈值402C,在时间A3的阈值402D,等等。如图4A所示,阈值402A-D可以随着场景改变而随时间改变。可以通过使用合适的分析技术分析深度特征在每个样本帧处确定阈值402A-D。这种技术可以考虑深度的统计数据(例如,最小值、最大值、中值等)、深度的直方图分布、深度的空间分布、深度的聚类或分割(例如,使用核密度估计、K-means、高斯混合模型,等等)。阈值402A-D可以用代数、几何或使用其他合适的方法来表示。
时间A0、A1、A2和A3之间的时间区域包括正常帧。在正常帧中,阈值转变模块107可以使用先前阈值和步幅404A-404B来确定适用于特定帧的深度阈值。步幅404A-B可以指示基于先前计算的深度阈值的估计的变化率,用于确定应用到后续正常帧的阈值。步幅404A-B可随着场景的进展而重新计算,并可用于估计要应用于正常帧的着色率。可以通过当前样本帧和先前样本帧的深度阈值的外插(extrapolate)来计算步幅404A-B。外插方法可以是线性的、多项式的、三次多项式的(cubic)等。例如,通过外插阈值402A和阈值402B,阈值转变模块107可以获得向下倾斜的步幅404A并且使用该步幅来确定应用于时间A1和时间A2之间的正常帧的深度阈值。类似地,通过外插阈值402B和阈值402C,阈值转变模块107可以获得向上倾斜的步幅404B并且使用该步幅来确定要应用到时间A2和A3之间的正常帧的深度阈值。如果阈值越来越远,则步幅404A-B可能是向上倾斜的,即,设置为使得深度阈值从正常帧到正常帧持续增加。如果阈值越来越近,则步幅404A-B可以向下倾斜,即,设置为使得深度阈值从正常帧到正常帧持续减小。
点409A和点409B示出了在计算新阈值的时间和应用新计算的阈值的时间之间可能存在时间延迟的原理。也就是说,只有在有关深度的信息变得可用之后(这发生在使用先前的阈值和步幅组合已绘制所有对象时),才可以应用新计算的阈值。因此,通过外插阈值402A和阈值402B,阈值转变模块107可以获得向下倾斜的步幅404A。阈值转变模块107可以在时间A2和时间A3之间的时段中继续使用步幅404A计算深度阈值,这导致如图所示中409A处的虚线,直到新阈值(例如,阈值402C)被计算出来为止。类似地,通过外插阈值402B和阈值402C,阈值转变模块107可以获得向上倾斜的步幅404B。在点409B,可以继续使用步幅404B来计算深度阈值,直到新阈值(阈值402D)被计算出来为止。
采样间隔406可以是样本帧410A-410B之间的帧数。采样间隔406可以是静态的或可变的。采样间隔406在不同的实施方式中可能不同。例如,根据特定实施方式,可以周期性地或间隔地选择样本帧410A-410B,例如每隔一帧、每隔十个帧、每隔一百个帧等。在一些实施例中,采样间隔406可以是一致的(即,相同的采样率),但在其他实施例中,采样间隔406可以随时间改变。
阈值范围408可以表示可用深度阈值的范围。深度阈值可以是特定于实施方式的。例如,在Vulkan的实施方式中,可用的深度阈值可以在0.0到1.0之间。在其他实施方式中,其他合适的范围可以应用于阈值范围408。
图5A是示出根据一些实施例的通过将场景划分为正常帧和样本帧来控制场景中的着色率以减少GPU负载的方法500A的流程图。方法500A可以由处理逻辑来执行,处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上执行的指令)或其组合。应当理解,并非所有步骤都可能需要执行本文提供的公开内容。此外,正如本领域普通技术人员所理解的,一些步骤可以同时执行,或者以不同于图5A所示的顺序执行。
在502A中,深度分析器105可以接收一组图形命令、帧或图形命令的结果。深度分析器105可以从图形应用120和/或图形引擎115接收命令/帧。
在504A中,GPU负载组件104可以确定当前帧是否是样本帧。如果当前帧是样本帧,则方法500进行到506。如果当前帧不是样本帧(即,是正常帧),则方法500进行到512。
在506A中,在当前帧是样本帧的情况下,深度分析器105可以读取帧的深度缓冲区。在实施例中,深度缓冲区可以包括帧中每个像素的深度值,每个像素的深度值在深度范围(例如,从0.0到1.0)中。在一个实施例中,深度分析器105可以通过向图形引擎115发送适当的命令来读取深度缓冲区。在另一个实施例中,深度分析器105可以通过检查帧来确定帧的深度缓冲区的位置。
在508A中,深度分析器105可以执行深度图像处理以分析深度特征。例如,深度分析器105可以参考深度的统计数据,如最小值、最大值、中值等。深度分析器105可以构建深度的直方图分布或深度的空间分布。深度分析器105可以通过诸如核密度估计、K-Means、高斯混合模型等算法使用深度的聚类或分割。
在510A中,深度分析器105可以基于所确定的特征来计算深度阈值和步幅。深度分析器105可以计算单个深度阈值或多个深度阈值。深度分析器105可以计算多个深度阈值,其中每个深度范围对应于一个着色率且由深度阈值划分。例如,比阈值A远的深度范围可以应用2x2着色率,阈值B和阈值A之间的范围可以应用2x1着色率,并且比阈值B近的范围可以应用1x1着色率。深度分析器105可以将深度阈值发送到着色率控制器106。可以参考之前的帧来计算步幅。深度分析器105可以通过使用各种合适的分析技术分析深度特征来确定阈值。这种技术可以考虑深度的统计数据(例如,最小值、最大值、中值等)、深度的直方图分布、深度的空间分布、深度的聚类或分割(例如,使用核密度估计、K-means、高斯混合模型,等)。深度分析器105可以通过当前样本帧和先前样本帧的深度阈值的外插来估计步幅。例如,外插法可以是线性的、多项式的、三次多项式的等。如果阈值在变远,深度分析器105可以设置步幅,使得深度阈值在正常帧期间持续增加。
返回到512A,其中当前帧是正常帧,阈值转变模块107可以使用先前计算的步幅来更新阈值。对于正常帧,深度分析器105不需要读取深度缓冲区以节省资源。因此,阈值转变模块107使用先前计算的步幅更新先前深度阈值,得到当前帧的深度阈值,即阈值A1+=步幅_A1、阈值A2+=步幅_A2等。可以应用一个以上阈值和一个以上步幅,这取决于为先前的样本帧计算了多少个阈值。
在514A中,着色率控制器106可以插入或修改图形命令以基于深度阈值将VRS应用于后续帧。在一种方法中,着色率控制器106可以使用基于图元的VRS。例如,用于控制着色率的图形命令可以是着色语言(例如,GLSL)中提供的基于图元的VRS API。例如,可以使用Vulkan上的VK_KHR_fragment_shading_rate扩展来控制后续帧的着色率。在一种方法中,着色率控制器106可以将附加的图形命令插入到绘图流水线中以控制着色率。例如,在Vulkan中,着色率控制器106可以使用PrimitiveShadingRateKHR。在另一个实施例中,着色率控制器106使用基于图像的VRS。例如,着色率控制器106可以产生查找图像并提供片段着色率附件并使用VkFragmentShadingRateAttachmentInfoKHR。
在516A中,客户端设备102可以在显示器110上渲染得到的帧。根据计算的阈值和随后修改的命令,帧的某些区域可以应用VRS。
方法500然后可以返回到502以处理下一帧和/或图形命令。在这个意义上,方法500是迭代的并且基于计算机图形随时间的变化继续调整VRS。
图5B是示出根据一些实施例的通过将场景划分为正常帧和样本帧来控制场景中的着色率以减少GPU负载的方法500B的流程图。方法500B可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上执行的指令)或其组合。应当理解,并非所有步骤都需要执行本文提供的公开内容。此外,正如本领域普通技术人员所理解的,一些步骤可以同时执行,或者以不同于图5B所示的顺序执行。
方法500B提出了执行上述方法500A的替代方法。方法500B示出与方法500A类似的步骤。方法500B中的步骤502B对应于方法500A中的步骤502A。步骤504B对应于步骤504A。步骤506B对应于步骤506A。步骤508B对应于步骤508A。步骤510B对应于步骤510A。步骤512B对应于步骤512A。步骤514B对应于步骤514A。步骤516B对应于步骤516A。方法500B另外示出了拆分深度分析器105、着色率控制器106和阈值转变模块107之间的步骤的实施例。
图6A-6D是根据一些实施例的示出使用VRS查找图像来控制帧中的着色率的示例性屏幕显示。图6A-6D提供的屏幕显示仅是示例性的,并且相关领域的技术人员将理解根据本发明可以采用多种方法来提供合适的屏幕显示。图6A-6D中的屏幕显示示出了在计算机图形的帧中具有多个对象的简单的说明性例子。
图6A示出了在计算机图形中呈现原始场景(即,在由所公开的技术执行的任何修改之前)的屏幕显示600A。屏幕显示600A可以是组合以形成计算机图形的一系列帧中的单个帧。屏幕显示600A可以包括对象204A、对象204B和对象204C。在该示例中,对象204A是狗,对象204B是人,对象204C是树,但这仅仅是说明性的,并且可以在计算机图形中呈现任意数量的对象。
图6B示出了呈现场景的屏幕显示600B,在该场景中深度分析器105计算了深度阈值,即深度阈值206A和深度阈值206B。深度阈值206A和深度阈值206B可以基于第一帧(诸如屏幕显示600B)中的信息来计算。可以在渲染下一帧时应用深度阈值206A和深度阈值206B。
图6C示出了屏幕显示600C,该屏幕显示600C呈现由着色率控制器106基于计算的阈值创建的VRS查找图像。该查找图像可以通过在每个图块或每个像素的基础上指定着色率或使用另一种合适的方法指定着色率,来控制帧中的着色率。在一种方法中,着色率控制器106可以通过将生成的深度阈值与图块的区域深度进行比较,来确定查找图像中每个图块的着色率(即,像素/图块值)。查找图像的大小(size)和查找图像中的图块的大小可以基于客户端设备102使用的硬件而变化。
图6D示出了呈现第二帧的屏幕显示600D,其中基于VRS查找图像深度阈值和着色率被应用到对象。着色率控制器106可以在渲染路径上创建和附加着色率查找图像以强制实施VRS。例如,着色率控制器106可以使用VkFragmentShadingRateAttachmentInfoKHR提供片段着色率附件。基于查找图像,将不同的着色率分别应用于对象204A、对象204B和对象204C。
例如,可以使用一个或多个众所周知的计算机系统,例如图7中所示的计算机系统700,来实施各种实施例。可以使用一个或多个计算机系统700,例如,实现这里讨论的任何实施例,以及它们的组合和子组合。
计算机系统700可以包括一个或多个处理器(也称为中央处理单元或CPU),例如处理器704。处理器704可以连接到通信基础设施或总线706。
计算机系统700还可以包括用户输入/输出设备703,例如监视器、键盘、定点设备等,其可以通过用户输入/输出接口702与通信基础设施706通信。
一个或多个处理器704可以是图形处理单元(GPU)。在一个实施例中,GPU可以是处理器,其是设计用于处理数学密集型应用的专用电子电路。GPU可能具有并行结构,可有效地并行处理大块数据,例如计算机图形应用程序、图像、视频等常见的数学密集型数据。
计算机系统700还可以包括主存储器或主存储器708,例如随机存取存储器(random access memory,RAM)。主存储器708可以包括一级或多级高速缓存(cach)。主存储器708可以在其中存储控制逻辑(即,计算机软件)和/或数据。
计算机系统700还可以包括一个或多个辅助存储设备或存储器710。辅助存储器710可以包括例如硬盘驱动器712和/或可移动存储设备或驱动器714。可移动存储驱动器714可以是软盘(floppy disk)驱动器、磁带驱动器、光盘驱动器、光存储设备、磁带备份设备和/或任何其他存储设备/驱动器。
可移动存储驱动器714可以与可移动存储单元718交互。可移动存储单元718可以包括其上存储有计算机软件(控制逻辑)和/或数据的计算机可用或可读存储设备。可移动存储单元718可以是软盘、磁带、光盘、DVD、光存储盘和/任何其他计算机数据存储设备。可移动存储驱动器714可以从移动存储单元718读取和/或写入到可移动存储单元718。
辅助存储器710可以包括用于允许计算机程序和/或其他指令和/或数据被计算机系统700访问的其他装置、设备、组件、工具或其他方法。这些装置、设备、组件、工具或其他方法可以包括例如可移动存储单元722和接口720。可移动存储单元722和接口720的示例可以包括程序盒和盒接口(例如在视频游戏设备中发现的)、可移动存储器芯片(例如EPROM或PROM)和相关的插槽、记忆棒(memory stick)和USB端口、存储卡和相关的存储卡插槽,和/或任何其他可移动存储单元和相关的接口。
计算机系统700可以进一步包括通信或网络接口724。通信接口724可以使计算机系统700能够与外部设备、外部网络、外部实体等的任何组合进行通信和交互(单独地和共同地通过标号728表示)。例如,通信接口724可以允许计算机系统700通过通信路径726与外部或远程设备728进行通信,通信路径726可以是有线和/或无线(或其组合),并且可以包括LAN、WAN、Internet等的任意组合。可以通过通信路径726将控制逻辑和/或数据传输到计算机系统700,和通过通信路径726从计算机系统700接收控制逻辑和/或数据。
计算机系统700还可以是个人数字助理(personal digital assistant,PDA)、台式工作站、膝上型计算机或笔记本计算机、上网本、平板电脑、智能电话、智能手表或其他可穿戴设备、物联网(Internet-of-Thing)的一部分,和/或嵌入式系统,仅举几个非限制性示例,或它们的任何组合。
计算机系统700可以是客户端或服务器,通过任何交付范例访问或托管任何应用和/或数据,包括但不限于远程或分布式云计算解决方案;本地或本地软件(基于“本地”云的解决方案);“即服务”模型(例如,内容即服务(content as a service,CaaS)、数字内容即服务(digital content as a service,DCaaS)、软件即服务(software as a service,SaaS)、托管软件即服务(managed software as a service,MSaaS)、平台即服务(desktopas a service,PaaS)、桌面即服务(desktop as a service,DaaS)、框架即服务(frameworkas a service,FaaS)、后端即服务(backend as aservice,BaaS)、移动后端即服务(mobilebackend as a service,MBaaS)、基础设施即服务(infrastructure as a service,IaaS)等);和/或包括前述示例或其他服务或交付范例的任何组合的混合模型。
计算机系统700中的任何适用的数据结构、文件格式和模式都可以从标准得到,标准包括但不限于JavaScript对象表示法(JavaScript Object Notation,JSON)、可扩展标记语言(Extensible Markup Language,XML)、又一种标记语言(Yet Another MarkupLanguage,YAML)、可扩展超文本标记语言(Extensible Hypertext Markup Language,XHTML)、无线标记语言(Wireless Markup
Language,WML)、MessagePack、XML用户界面语言(XML User Interface
Language,XUL)或任何其他功能上相似的代表的单独或组合。可替代的,专有数据结构、格式或计划(schema)可以单独使用或与已知或开放标准结合使用。
在一些实施例中,包括存储有控制逻辑(软件)的有形、非暂态计算机可用或可读介质的有形非暂态装置或制品在本文中也可以称为计算机程序产品或程序存储设备。这包括但不限于计算机系统700、主存储器708、辅助存储器710和可移动存储单元718和722,以及体现上述任何组合的有形制品。这样的控制逻辑在由一个或多个数据处理设备(例如计算机系统700)执行时,可以使这样的数据处理设备如本文所述那样操作。
基于包含在本申请中的教导,如何使用不同于图7所示出之外的数据处理设备、计算机系统和/或计算机体系结构来制作和使用本申请的实施例对于相关领域的技术人员将是显而易见的。具体而言,实施例可以使用不同于本文描述的那些的软件、硬件和/或操作系统实施方式来操作。
应当理解,详细描述部分而不是任何其他部分旨在用于解释权利要求。其他部分可以阐述如发明人所设想的一个或多个但不是所有示例性实施例,因此不旨在以任何方式限制本发明或所附权利要求。
尽管本发明描述了示例性领域和应用的示例性实施例,但是应当理解,本发明不限于此。其他实施例及其修改是可能的,并且在本发明的范围和精神内。例如,并且在不限制本段的一般性的情况下,实施例不限于图中所示和/或在本文描述的软件、硬件、固件和/或实体。此外,实施例(无论是否在本文中明确描述)对本文描述的示例之外的领域和应用具有重要用途。
已经在功能构建块的帮助下描述实施例,这些功能构建块示出了指定功能的实现及其关系。为了描述的方便,本文已经定义了这些功能构建块的边界。只要适当地执行指定的功能和关系(或其等价物),就可以定义替代边界。此外,替代实施例可以执行功能块、步骤、操作、方法等,使用与本文所述不同的顺序。
本文提及“一个实施例”、“实施例”、“示例实施例”或类似短语,表示所描述的实施例可以包括特定的特征、结构或特性,但每个实施例不是必须包括特定的特征、结构或特征。此外,这些用语不一定指相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,相关领域的技术人员可以将这样的特征、结构或特性结合到其他实施例中,无论是否在此明确提及或描述。此外,可以使用表述“耦接”和“连接”连同它们的派生词来描述一些实施例。这些术语不一定是彼此的同义词。例如,可以使用术语“连接”和/或“耦接”来描述一些实施例,以指示两个或更多个组件彼此直接物理接触或电接触。然而,术语“耦接”也可以意味着两个或多个元素彼此不直接物理连接或电连接,而是经由其他设备或者其他连接的间接电连接。
本申请的广度和范围不应受到任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来定义。
Claims (20)
1.一种计算机图形处理方法,其特征在于,包括:
处理至少一个图形命令以形成计算机图形的第一帧;
通过处理与所述第一帧相关的深度缓冲区中的信息来计算出一个或多个深度阈值;以及
通过基于所述一个或多个深度阈值将一个或多个着色率应用于所述计算机图形的第二帧的一个或多个屏幕区域来控制所述第二帧的着色率。
2.如权利要求1所述的方法,其特征在于,控制所述第二帧的着色率包括:
将第一着色率应用于所述一个或多个屏幕区域中的第一屏幕区域;所述第一屏幕区域被确定为低于所述一个或多个深度阈值中的第一阈值;
以及
将第二着色率应用于所述一个或多个屏幕区域中的第二屏幕区域;所述第二屏幕区域被确定为高于所述一个或多个深度阈值中的所述第一阈值。
3.如权利要求1所述的方法,其特征在于,控制所述第二帧的着色率包括:
使用所述一个或多个着色率中的第一着色率渲染所述一个或多个屏幕区域中的所述第一屏幕区域中的第一对象;以及
使用所述一个或多个着色率中的第二着色率渲染所述一个或多个屏幕区域中的所述第二屏幕区域中的第二对象。
4.如权利要求1所述的方法,其特征在于,计算所述一个或多个深度阈值包括:
执行图像处理以分析所述深度缓冲区中像素的深度的一个或多个特征;以及
根据所述深度的一个或多个特征计算一个或多个深度阈值。
5.如权利要求1所述的方法,其特征在于,所述控制所述第二帧的着色率包括:
根据一个或多个着色率构建附加图形命令;以及
将所述附加图形命令插入命令缓冲区,其中,所述附加图形命令用于配置着色器的可变速率着色VRS。
6.如权利要求1所述的方法,其特征在于,所述控制所述第二帧的着色率包括:
构建包含一个或多个像素值的可变速率着色查找图像;以及
将参考所述可变速率着色查找图像的附加图形命令插入到命令缓冲区中。
7.如权利要求1所述的方法,其特征在于,还包括:
将所述计算机图形划分为至少一个样本帧和至少一个正常帧;其中,所述第一帧是所述样本帧或者所述正常帧;
对于所述至少一个样本帧:
计算所述一个或多个深度阈值以及对应于所述一个或多个深度阈值的一个或多个步幅;
根据所述一个或多个深度阈值将所述一个或多个着色率应用于所述计算机图形的第二帧的所述一个或多个屏幕区域;
对于所述至少一个正常帧:
通过将所述一个或多个步幅添加到所述一个或多个先前深度阈值来计算出所述一个或多个更新的深度阈值;其中,所述一个或多个更新的深度阈值是正常帧的深度阈值;所述先前深度阈值是所述正常帧的先前的帧的深度阈值;以及
根据所述一个或多个更新的深度阈值,将一个或多个更新的着色率应用于所述计算机图形的第二帧的一个或多个屏幕区域。
8.根据权利要求7所述的方法,其特征在于,计算所述一个或多个步幅包括:
外插所述至少一个样本帧的所述一个或多个深度阈值和所述至少一个先前样本帧的一个或多个先前深度阈值。
9.如权利要求1所述的方法,其特征在于,所述方法应用于安装在所述客户端设备上的图形驱动、硬件和驱动之间的固件层、软件驱动和应用之间的软件层、或所述客户端设备上的硬件中。
10.根据权利要求1所述的方法,其特征在于,所述至少一个图形命令调用基于图元的可变速率着色应用编程接口或基于图像的可变速率着色应用编程接口。
11.一种系统,其特征在于,包括:
存储器;
至少一个处理器,耦接到所述存储器并被配置为:
在客户端设备处处理至少一个图形命令以获得计算机图形的第一帧;
通过处理与所述第一帧相关联的深度缓冲区中的信息来计算一个或多个深度阈值;以及
通过基于所述一个或多个深度阈值将一个或多个着色率应用于所述计算机图形的第二帧的一个或多个屏幕区域来控制所述第二帧的着色率。
12.如权利要求11所述的系统,其特征在于,所述至少一个处理器还被配置为:
将第一着色率应用于所述一个或多个屏幕区域中的第一屏幕区域;所述第一屏幕区域被确定为低于所述一个或多个深度阈值中的第一阈值;
以及
将第二着色率应用于所述一个或多个屏幕区域中的第二屏幕区域;所述第二屏幕区域被确定为高于所述一个或多个深度阈值中的所述第一阈值。
13.如权利要求11所述的系统,其特征在于,所述至少一个处理器还被配置为:
使用所述一个或多个着色率中的第一着色率渲染所述一个或多个屏幕区域中的第一屏幕区域中的第一对象;以及
使用所述一个或多个着色率中的第二着色率渲染所述一个或多个屏幕区域中的第二屏幕区域中的第二对象。
14.根据权利要求11所述的系统,其特征在于,所述着色率的控制由安装在所述客户端设备上的图形驱动、在硬件和驱动之间的固件层、在软件驱动和应用之间的软件层,或者在客户端设备上的硬件进行。
15.根据权利要求11所述的系统,其特征在于,为了控制所述着色率,所述至少一个处理器还被配置为:
根据一个或多个着色率构建附加图形命令,将附加图形命令插入命令缓冲区,其中,所述附加图形命令用于配置着色器的可变速率着色VRS;
或者,
构建包含一个或多个像素值的可变速率着色查找图像;将附加图形命令插入到命令缓冲区中,其中所述附加图形命令参考所述可变速率着色查找图像。
16.根据权利要求11所述的系统,其特征在于,为了计算一个或多个深度阈值,所述至少一个处理器还被配置为:
执行图像处理以分析所述深度缓冲区中的深度的一个或多个特征;
根据所述深度的一个或多个特征计算一个或多个深度阈值。
17.如权利要求11所述的系统,其特征在于,所述至少一个处理器还被配置为:
将计算机图形划分为至少一个样本帧和至少一个正常帧;
对于所述至少一个样本帧:
计算一个或多个深度阈值和对应于所述一个或多个深度阈值的一个或多个步幅;以及
基于所述一个或多个深度阈值将一个或多个着色率应用于所述一个或多个屏幕区域;
对于所述至少一个正常帧:
通过将所述一个或多个步幅添加到所述一个或多个深度阈值来计算一个或多个更新的深度阈值;以及
基于所述一个或多个更新的深度阈值,将一个或多个更新的着色率应用于一个或多个更新的屏幕区域。
18.根据权利要求17所述的系统,其特征在于,为了计算所述一个或多个步幅,所述至少一个处理器还被配置为:
外插至少一个样本帧的一个或多个深度阈值和至少一个先前样本帧的一个或多个先前深度阈值。
19.根据权利要求17所述的系统,其特征在于,其中所述至少一个图形命令调用基于基元的可变速率着色应用编程接口或基于图像的可变速率着色应用编程接口。
20.一种存储有指令的非暂时性计算机可读设备,当由至少一个计算设备执行该指令时,使该至少一个计算设备执行包括以下操作的操作:
在客户端设备处处理至少一个图形命令以形成计算机图形的第一帧;
通过处理与所述第一帧相关联的深度缓冲区中的信息来计算一个或多个深度阈值;以及
通过基于所述一个或多个深度阈值将一个或多个着色率应用于所述计算机图形的第二帧的一个或多个屏幕区域来控制所述第二帧的着色率。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/328,760 | 2022-04-08 | ||
US17/944,415 | 2022-09-14 | ||
US17/944,415 US20240087207A1 (en) | 2022-04-08 | 2022-09-14 | Depth analyzer and shading rate controller |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116894897A true CN116894897A (zh) | 2023-10-17 |
Family
ID=88313898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211436781.XA Pending CN116894897A (zh) | 2022-04-08 | 2022-11-16 | 计算机图形处理方法以及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116894897A (zh) |
-
2022
- 2022-11-16 CN CN202211436781.XA patent/CN116894897A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7098710B2 (ja) | 中心窩ジオメトリテッセレーション | |
CN112270756B (zh) | 一种应用于bim模型文件的数据渲染方法 | |
US11676325B2 (en) | Layered, object space, programmable and asynchronous surface property generation system | |
CN111340928B (zh) | 一种结合光线跟踪的Web端实时混合渲染方法、装置及计算机设备 | |
US11908039B2 (en) | Graphics rendering method and apparatus, and computer-readable storage medium | |
KR102499397B1 (ko) | 그래픽스 파이프라인을 수행하는 방법 및 장치 | |
US20230419590A1 (en) | Light importance caching using spatial hashing in real-time ray tracing applications | |
EP3211601A1 (en) | Rendering the global illumination of a 3d scene | |
WO2021249358A1 (zh) | 渲染方法、设备以及系统 | |
CN115552470A (zh) | 数据压缩的方法和装置 | |
CN114730349A (zh) | 双模式后处理 | |
CN116894897A (zh) | 计算机图形处理方法以及系统 | |
US8633932B1 (en) | Animation with adjustable detail level | |
CN115861510A (zh) | 对象渲染方法、装置、电子设备、存储介质及程序产品 | |
US20240087207A1 (en) | Depth analyzer and shading rate controller | |
US11217005B1 (en) | Techniques for rendering 2D vector graphics on mobile devices | |
WO2023280291A1 (en) | Method and apparatus for computer model rasterization | |
Roth et al. | Guided high-quality rendering | |
Mwalongo | Interactive web-based visualization | |
Ripolles et al. | Sliding-tris: A sliding window level-of-detail scheme | |
CN116912379A (zh) | 场景画面的渲染方法及装置、存储介质、电子设备 | |
CN117876568A (zh) | 一种流传输过程的自定义数据注入方法及装置 | |
CN115006848A (zh) | 云游戏资源分配方法、装置、计算机设备和存储介质 | |
CN114138385A (zh) | Bim模型显示方法、装置、计算机设备、存储介质 | |
Concheiro et al. | Rendering of Bézier surfaces on handheld devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |