CN110036413B - 平铺架构中的注视点渲染 - Google Patents
平铺架构中的注视点渲染 Download PDFInfo
- Publication number
- CN110036413B CN110036413B CN201780073414.9A CN201780073414A CN110036413B CN 110036413 B CN110036413 B CN 110036413B CN 201780073414 A CN201780073414 A CN 201780073414A CN 110036413 B CN110036413 B CN 110036413B
- Authority
- CN
- China
- Prior art keywords
- tile
- image content
- image
- resolution
- size
- 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.)
- Active
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 124
- 238000005192 partition Methods 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims abstract description 48
- 238000000034 method Methods 0.000 claims description 55
- 238000000638 solvent extraction Methods 0.000 claims description 29
- 230000006870 function Effects 0.000 claims description 27
- 239000000872 buffer Substances 0.000 description 61
- 238000012360 testing method Methods 0.000 description 15
- 239000011159 matrix material Substances 0.000 description 12
- 238000012805 post-processing Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005070 sampling Methods 0.000 description 7
- 239000013598 vector Substances 0.000 description 5
- 238000012935 Averaging Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002772 conduction electron Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002159 nanocrystal Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- 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
-
- 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/50—Lighting effects
- G06T15/80—Shading
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/387—Composing, repositioning or otherwise geometrically modifying originals
- H04N1/3876—Recombination of partial images to recreate the original image
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/387—Composing, repositioning or otherwise geometrically modifying originals
- H04N1/393—Enlarging or reducing
- H04N1/3935—Enlarging or reducing with modification of image resolution, i.e. determining the values of picture elements at new relative positions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20021—Dividing image into blocks, subimages or windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/36—Level of detail
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Engineering & Computer Science (AREA)
Abstract
本发明描述了用于注视点渲染的实例。在图形处理单元GPU确定图元的顶点所属于的图块的分区阶段之后所述GPU可以不同大小渲染每个图块的图像内容作为渲染阶段的一部分。所述GPU可基于GPU渲染所述图像内容的大小对所述经渲染的图像内容进行上采样,并且输出所述经上采样的图像内容以供稍后显示。
Description
技术领域
本发明涉及图形处理。
背景技术
计算装置通常利用图形处理单元(GPU)以加速渲染用于显示的图形数据。此类计算装置可包含例如计算机工作站、例如所谓的智能电话的移动电话、嵌入式系统、个人计算机、平板计算机及视频游戏控制台。GPU通常执行图形处理管线,所述图形处理管线包含一起操作以执行图形处理命令的多个处理级。主机中央处理单元(CPU)可通过将一或多个图形处理命令发布给GPU来控制GPU的操作。现代的CPU通常能够同时执行多个应用,所述多个应用中的每一个可能需要在执行期间利用GPU。
发明内容
本发明涉及图形内容的注视点渲染。图形处理单元(GPU)可将图像表面的图块的图像内容渲染到基于所述图块中的图像内容的分辨率而选择的大小,而非渲染到图块的大小。GPU可针对图像帧的一或多个图块重复此操作,并且随后将一或多个图块的图像内容上采样到图块的大小。以此方式,GPU能够获得图像帧的不同部分中的不同分辨率用于注视点渲染。
在一个实例中,本发明描述注视点渲染的方法,所述方法包括:确定图像表面的第一图块将包含具有第一分辨率的图像内容,其中第一分辨率小于图像表面的其它图块的第二分辨率;以小于第一图块的大小的大小并且基于第一图块中的图像内容的第一分辨率渲染第一图块的图像内容;对第一图块中的图像内容进行上采样以产生经上采样的图像内容;以及输出经上采样的图像内容。
在一个实例中,本发明描述了一种用于注视点渲染的装置,所述装置包括:系统存储器;以及图形处理单元(GPU),其包括可编程或固定功能电路中的至少一个,其中GPU经配置以确定图像表面的第一图块将包含具有第一分辨率的图像内容,其中第一分辨率小于图像表面的其它图块的第二分辨率;以小于第一图块的大小的大小并且基于第一图块中的图像内容的第一分辨率渲染第一图块的图像内容;对第一图块中的图像内容进行上采样以产生经上采样的图像内容;以及输出经上采样的图像内容以供存储在系统存储器中。
在一个实例中,本发明描述了一种用于注视点渲染的装置,所述装置包括:用于确定图像表面的第一图块将包含具有第一分辨率的图像内容的装置,其中第一分辨率小于图像表面的其它图块的第二分辨率;用于以小于第一图块的大小的大小并且基于第一图块中的图像内容的第一分辨率渲染第一图块的图像内容的装置;用于对第一图块中的图像内容进行上采样以产生经上采样的图像内容的装置;以及用于输出经上采样的图像内容的装置。
在一个实例中,本发明描述了一种上面存储有指令的计算机可读存储媒体,所述指令在被执行时使得用于注视点渲染的装置的一或多个处理器确定图像表面的第一图块将包含具有第一分辨率的图像内容,其中第一分辨率小于图像表面的其它图块的第二分辨率;以小于第一图块的大小的大小并且基于第一图块中的图像内容的第一分辨率渲染第一图块的图像内容;对第一图块中的图像内容进行上采样以产生经上采样的图像内容;以及输出经上采样的图像内容。
在附图和下文描述中阐述本发明的一或多个实例的细节。本发明的其它特征、目标和优点将从描述和图式以及所附权利要求书中显而易见。
附图说明
图1是说明可用于实施本发明的技术的实例计算装置的框图。
图2是进一步详细说明图1的计算装置的CPU、GPU和存储器的框图。
图3是进一步详细说明图1的计算装置的GPU和存储器的框图。
图4是说明注视点渲染的一个实例的直观图。
图5是说明注视点渲染的实例方法的流程图。
具体实施方式
注视点渲染是旨在通过减少帧缓冲器的平均分辨率来减少片段处理工作负荷、带宽和其它渲染工作负荷同时通过以全分辨率留下渲染的焦点来维持高图像质量的技术。举例来说,在注视点渲染中,图像帧的不同部分在不同分辨率下。这使得某些部分与其它部分相比呈现的更模糊。
注视点渲染具有工作负荷效率、减少的混叠、减少的功率和更好的观看者体验的益处。产生较低分辨率图像内容与较高分辨率图像内容相比通常需要更少处理,并且因此,注视点倾向于减少处理的整体量。并且,图像内容创建者可能期望观看者聚焦在图像的某些部分(例如,前景对背景)或者可能存在观看者不太感兴趣的部分。通过使得图像的一些部分模糊并且其它部分清晰,观看者可能倾向于将注意力转移到更清晰的部分。相应地,注视点可以是引导观看者观看图像的某些部分的工具。
图形处理单元(GPU)可经配置以执行注视点渲染。许多图形处理架构使用双阶段处理方案。在被称作分区阶段的第一阶段中,GPU将图像帧划分到多个分区(也被称作图块)中。GPU确定哪个图元(例如,三角形)属于分区阶段中的哪个图块。在被称作渲染阶段的下一个阶段中,GPU在逐图块基础上渲染图元(例如,在每个分区基础上渲染图元)。
在本发明中所描述的实例中,在中央处理单元(CPU)上执行的应用程序(例如,视频游戏)可确定用于注视点渲染的图像帧的不同部分的图像分辨率。在渲染每个图块中,GPU可首先确定由所述图块俘获的部分的图像分辨率。随后,并非将所述图块的图像部分渲染为与图块相同的大小(例如,使得图像部分覆盖整个图块),GPU可以较小大小(例如,小于图块的大小)渲染图像内容。随后,为了将经渲染的数据存储到帧缓冲器,GPU可对经渲染的图像内容进行上采样。GPU可针对每个图块重复此过程。
在一些实例中,作为后处理操作的一部分,GPU可对经渲染的图像内容进行上采样。后处理操作是指在已经产生帧之后在所述帧上执行的操作。举例来说,将模糊添加到帧、将帧转换成黑白的及类似者是后处理操作的实例。后处理操作的另一实例是时间扭曲阶段。在时间扭曲阶段中,GPU可通过修改刚刚形成的帧(例如通过修改帧中的对象的位置)来产生额外的帧。在一些实例中,后处理操作可应用于所产生的帧中的每个像素,但是在每个像素上的操作在每个实例中不是必需的。
在一些实例中显示处理器而非GPU可执行上采样。举例来说,GPU可以较小大小(例如,小于图块的大小)存储经渲染的图像内容。显示处理器可随后对图块的图像内容进行上采样作为显示处理器的操作的一部分。
作为帮助理解GPU如何以较小大小渲染图像内容并且随后进行上采样的一个实例,假设图像帧包含布置在图块的3x3阵列中的九个图块(或分区)。顶部三个图块的图像内容相对于全分辨率是1/16分辨率。底部三个图块和中心图块的左侧和右侧的两个图块的图像内容相对于全分辨率在1/4分辨率。中间图块的图像内容是全分辨率。
在此实例中,对于顶部三个图块中的图像内容,GPU可以图块的大小的1/16大小渲染图像内容。随后,GPU可通过16倍对图像内容进行上采样并且在帧缓冲器中存储所得的图像内容。通过上采样,图像内容可能呈现的较模糊,因为分辨率相对于较小大小的图像内容是相同的(例如,在上采样之后1/16大小的图像中的一个像素由16个像素表示)。内插滤波器可用于视需要使像素数据平滑作为上采样的一部分或在上采样之后。GPU可执行与底部三个图块以及在中心图块的左侧和右侧上的那些类似的操作,但是具有通过4的因数的上采样。在此情况下,在上采样之后,底部三个图块以及在中心图块的左侧和右侧的那些与在顶部上的那些相比将呈现的更清晰,因为这些图块将具有四倍的分辨率。对于中心图块,GPU可以全分辨率渲染图像内容,使得图像内容与图块相同大小。GPU可随后将全部的图像内容组合在一起以形成用于显示的具有不同分辨率的图像帧。
图1是说明可用于实施本发明的技术的实例计算装置2的框图。计算装置2可包括相机、计算机(例如,个人计算机、桌上型计算机、膝上型计算机、平板计算机和/或计算机工作站)、视频游戏平台或控制台、例如无线通信装置的移动装置(例如,移动电话、蜂窝式电话、卫星电话和/或移动电话手持机)、陆线电话、因特网电话、例如便携式视频游戏装置或个人数字助理(PDA)的手持式装置、个人音乐播放器、视频播放器、显示装置、电视、机顶盒、广播接收器、服务器、中间网络装置、主机计算机或处理和/或显示图形数据的任何其它类型的装置。
如图1的实例中所说明,计算装置2包含用户输入接口4、CPU 6、存储器控制器8、系统存储器10、图形处理单元(GPU)12、GPU 12的本地存储器14、显示处理器16、显示器18和总线20。用户输入接口4、CPU 6、存储器控制器8、GPU 12及显示接口16可使用总线20彼此通信。总线20可以是多种总线结构中的任一者,例如,第三代总线(例如,超传输(HyperTransport)总线或无限带宽(InfiniBand)总线)、第二代总线(例如,高级图形端口总线、外围组件互连(PCI)高速总线,或高级可扩展接口(AXI)总线)或另一类型的总线或装置互连件。应注意,图1中所示的不同组件之间的总线和通信接口的特定配置仅是示例性的,并且具有相同或不同组件的计算装置和/或其它图形处理系统的其它配置也可用于实施本发明的技术。
CPU 6可以包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以使得CPU 6执行一或多个软件应用程序。在CPU 6上执行的软件应用程序可包含例如操作系统、文字处理器应用程序、电子邮件应用程序、电子数据表应用程序、媒体播放器应用程序、媒体编辑应用程序、视频游戏应用程序、图形用户接口应用程序、电话会议应用程序或另一程序。用户可经由一或多个输入装置(未示出)(例如,键盘、鼠标、麦克风、触摸垫或经由用户输入接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置2。
在CPU 6上执行的软件应用程序可包含指示CPU 6以使得向显示器18渲染图形数据的一或多个图形渲染指令。在一些实例中,软件指令可符合图形应用程序编程接口(API),例如,开放图形库API、开放图形库嵌入系统(OpenGL ES)API、Direct3DAPI、X3D API、RenderMan API、WebGL API或任何其它公共或专有标准图形API。为了处理图形渲染指令,CPU 6可将一或多个图形渲染命令发布到GPU 12以使得GPU 12执行图形数据的渲染中的一些或全部。在一些实例中,待渲染的图形数据可包含例如点、线、三角形、四边形、三角形带等图形图元的列表。
存储器控制器8有助于进出系统存储器10的数据传送。举例来说,存储器控制器8可接收存储器读取和写入命令,且服务相对于存储器系统10的此类命令以便为计算装置2中的组件提供存储器服务。存储器控制器8以通信方式耦合到系统存储器10。虽然存储器控制器8在图1的实例计算装置2中被说明为与CPU 6和系统存储器10两者分开的处理模块,但是在其它实例中,存储器控制器8的功能性中的一些或全部可以在CPU 6和系统存储器10中的一或两者上实施。
系统存储器10可存储可由CPU 6存取以用于执行的程序模块和/或指令和/或由在CPU 6上执行的程序使用的数据。举例来说,系统存储器10可存储用户应用程序和与应用程序相关联的图形数据。系统存储器10可额外存储信息以供计算装置2的其它组件使用和/或额外存储由计算装置2的其它组件产生的信息。举例来说,系统存储器10可充当用于GPU 12的装置存储器且可存储将在GPU 12上操作的数据以及由GPU 12执行的操作而产生的数据。举例来说,系统存储器10可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器或类似者的任何组合。另外,系统存储器10可存储命令流以供GPU 12处理。系统存储器10可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
GPU 12可经配置以执行图形操作以向显示器18渲染一或多个图形图元。因此,当在CPU 6上执行的软件应用程序中的一个需要图形处理时,CPU 6可向GPU 12提供图形命令和图形数据以用于向显示器18渲染。图形命令可包含(例如)例如绘制调用的绘制命令、GPU状态编程命令、存储器传送命令、通用计算命令、内核执行命令等。在一些实例中,CPU 6可通过将命令和图形数据写入到存储器10而将命令和图形数据提供到GPU 12,存储器10可由GPU 12存取。在一些实例中,GPU 12可进一步经配置以针对在CPU 6上执行的应用程序执行通用计算。
在一些例子中,GPU 12可内置有比CPU 6提供对向量运算更有效的处理的高度并行的结构。举例来说,GPU 12可包含经配置以按并行方式对多个顶点或像素进行操作的多个处理元件。在一些例子中,GPU 12的高度并行本质允许GPU 12比使用CPU 6直接将场景绘制到显示器18更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器18上。另外,GPU 12的高度并行本质可允许GPU 12比CPU 6更快速地处理用于通用计算应用程序的特定类型的向量和矩阵运算。
在一些例子中,可将GPU 12集成到计算装置2的主板中。在其它例子中,GPU 12可存在于图形卡上,所述图形卡安装在计算装置2的主板中的端口中或可以其它方式并入经配置以与计算装置2交互操作的外围装置内。在进一步的例子中,GPU 12可位于与CPU 6相同的微芯片上,从而形成芯片上系统(SoC)。GPU 12可包含一或多个处理器,例如,一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP),或其它等效的集成电路或离散逻辑电路。
GPU 12可直接耦合到GPU本地存储器14。因此,GPU 12可在不必使用总线20的情况下从GPU本地存储器14读取数据并将数据写入到GPU本地存储器14。换句话说,GPU 12可使用本地存储装置而不是芯片外存储器在本地处理数据。这通过消除GPU 12经由总线20读取和写入数据的需要来允许GPU 12以更高效的方式操作,其中经由总线操作可能经历繁重的总线业务。然而,在一些例子中,GPU 12可不包含单独的高速缓冲存储器,而是替代地经由总线20利用系统存储器10。GPU本地存储器14可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
CPU 6和/或GPU 12可将经渲染的图像数据存储在系统存储器10内所分配的帧缓冲器中。显示处理器16可从帧缓冲器检索数据,并且配置显示器18以显示由经渲染的图像数据表示的图像。在一些实例中,显示处理器16可包含经配置以将从帧缓冲器中检索的数字值转换成显示器18可消耗的模拟信号的数/模转换器(DAC)。在其它实例中,显示处理器16可将数字值直接传递到显示器18以供处理。显示器18可包含监视器、电视、投影装置、液晶显示器(LCD)、等离子显示器面板、发光二极管(LED)阵列、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。显示器18可集成在计算装置2内。举例来说,显示器18可以是移动电话手持机或平板计算机的屏幕。替代地,显示器18可以是经由有线或无线通信链路耦合到计算装置2的独立式装置。举例来说,显示器18可以是经由缆线或无线链路连接到个人计算机的计算机监视器或平板显示器。
在一些实例中,GPU 12可在不同图像分辨率产生图像内容,在被称作注视点渲染的过程中。如更详细地描述,GPU 12可首先在低于全分辨率的像素分辨率渲染图像内容,并且随后对图像内容进行上采样以产生经上采样的图像内容。经上采样的图像内容的图像分辨率可以小于GPU 12以全像素分辨率渲染的部分的图像分辨率。
像素分辨率和图像分辨率不应被混淆。像素分辨率是指在上采样之前经渲染用于图像表面的一部分的像素的数量。具有较高像素分辨率的图像内容意味着与针对较低像素分辨率图像内容中的像素独立地产生的像素值相比针对较高像素分辨率图像内容中的像素存在更独立地产生的像素值。举例来说,像素着色器可在每个像素基础上执行以渲染部分的每个像素。上采样可在像素着色器产生像素值之后发生。在上采样中,经上采样的像素的像素值是基于另一像素的像素值产生的。
所得的经上采样的图像内容具有相关联的图像分辨率。图像分辨率指示最终图像内容呈现的清晰或模糊程度。在上采样中,像素的像素值不是独立地产生的,并且实际上相邻像素的最终像素值用于复制、内插或平均以产生作为经上采样的图像内容的一部分的像素的像素值。举例来说,以四的因数上采样的一种方式是复制像素的像素值三次并且产生在经上采样的图像内容中的当前像素的右侧、底部和右下的像素的像素值。
相应地,上采样可增大给定区域中的像素的数量,但是图像可能不呈现的更为清晰或更清楚,因为没有添加新的独立地产生的图像内容。因此,由于上采样在此经上采样的部分中的图像内容可能模糊的呈现,并且因此,所述经上采样的部分中的图像分辨率可以小于其它部分中的图像分辨率。如所描述,部分的图像分辨率是图像部分保留的细节的量度。如果GPU 12添加额外的像素(例如,经由上采样),但是不存在细节上的增大,那么图像分辨率降低。
图像分辨率可以与上采样的量成反比地相关。GPU 12执行的上采样越多,则图像分辨率将越低。举例来说,GPU 12以16倍上采样的部分的图像内容的图像分辨率低于GPU12以2倍上采样的部分的图像内容的图像分辨率或并不需要上采样。
可能存在GPU 12为何在不同图像分辨率产生图像内容的各种原因。作为一个实例,在较低像素分辨率渲染图像内容通常与在较高像素分辨率渲染图像内容相比需要较少功率,因为在较低像素分辨率图像内容中存在较少的待处理的像素。举例来说,GPU 12在每次像素着色器执行时消耗功率。对于较低像素分辨率图像内容,存在像素着色器的较少执行,因为与用于较高像素分辨率图像内容相比存在较少像素。与产生独立像素值相比上采样倾向于需要较少功率(例如,因为存在较少操作)。产生独立像素值可能需要与作为上采样的一部分的平均或复制相邻像素相比是时间和功率密集的像素着色器的例子的执行。因此,相对于全像素分辨率在较低像素分辨率产生图像内容并且随后上采样以相对于全图像分辨率在较低图像分辨率产生图像内容与在全图像分辨率产生图像内容相比消耗较少功率。
作为另一实例,在不同图像分辨率产生图像内容可用于聚焦观看者的注意力到某些部分。在较高图像分辨率的图像内容与在较低图像分辨率的图像内容相比更清晰的呈现,并且观看者倾向于自动地聚焦在较高图像分辨率部分上。通过使得GPU 12在不同像素分辨率渲染图像内容(其随后经上采样以在不同图像分辨率产生图像内容),内容提供商可以确保观看者聚焦在特定区域上,所述区域与其它区域相比可以是更具有吸引力的,引起更好的观看体验。
因此,在一些情况下,当针对观看者应该聚焦的部分在高分辨率产生图像内容时由于处理或较少像素,GPU 12可执行注视点渲染以降低功率消耗。可能存在注视点渲染的额外原因,并且实例技术不应被视为限于注视点渲染的这些特定原因。
实例技术描述执行注视点渲染的方式,例如,在其中GPU 12针对图形渲染执行双阶段处理方案的实例中。第一阶段被称作分区阶段,其中GPU 12确定哪些图元属于哪个分区(也被称作图块)以及哪些图元是可见的(例如,产生可见性信息)。在被称作渲染阶段的第二阶段中,GPU 12基于哪些图元属于哪个图块和图元的可见性的确定依序渲染每个图块(例如,分区)。
可出于各种原因使用此类双重阶段图形处理架构(有时被称作基于流式输出的分区架构)。作为一个实例,例如域着色器、棋盘形布置和/或几何形状着色器的额外处理级可以被添加到GPU 12,并且由于时间上分开的几何形状和光栅化处理存在分区和渲染的有效的重叠(例如,GPU 12可渲染一个图像表面同时在下一个表面上执行分区)。
在本发明中所描述的实例技术中,GPU 12可执行分区阶段,并且随后在渲染阶段期间,GPU 12可基于图块中的图像内容的图像分辨率针对图块中的每一个渲染图像内容。举例来说,CPU 6可限定GPU 12将渲染的图像表面的不同部分的图像分辨率。在渲染图块中,GPU 12可基于如由CPU 6限定的不同部分的图像分辨率确定所述图块的图像内容的图像分辨率。GPU 12可随后基于所述图块的图像内容的图像分辨率渲染属于所述图块的图像内容。
举例来说,每个图块的图块大小可以是NxN。如果图块中的图像内容的图像分辨率是相对于全分辨率的四分之一分辨率,那么GPU 12可渲染具有NxN图块中的N/2xN/2的像素分辨率的图像内容(例如,渲染具有大小N/2xN/2的像素数量的图像内容)。因此,与图块中的像素数量相比将在图像内容中存在GPU 12渲染的四分之一的像素数量。GPU 12可随后针对每个图块重复这些步骤(例如,基于所述图块中的图像内容的图像分辨率渲染所述图块中的图像内容)。
GPU 12可将每个图块中的图像内容上采样到图块的大小,并且将所得的经上采样的图像内容输出到系统存储器10。举例来说,GPU 12可将图块的经渲染的图像内容输出到本地存储器14以用于存储,并且可类似地将每个图块的图像内容存储到本地存储器14。在此实例中,由于不同像素分辨率,所以图块的图像内容的大小可以不同于图块的大小,并且不同图块的图像内容的大小可以是不同的。在将来自本地存储器14的图像内容写入到系统存储器10期间,GPU 12可对图块的图像内容进行上采样,使得经上采样的图像内容是图块的大小。
为了执行上采样,GPU 12可复制、内插或平均一或多个像素的像素值到经上采样的图像内容的像素。举例来说,如果图像内容是N/2xN/2,那么为了进行上采样,GPU 12可将像素的像素值复制到三个相邻像素(例如,右侧、底部和右下像素),其基本上将一个像素转化成四个像素。在上采样之后,GPU 12可执行一些额外的滤波,但是此类滤波是可选的。
在一些实例中,GPU 12可执行上采样作为后处理操作的一部分而并非作为将图像内容写入到系统存储器10的一部分。举例来说,在GPU 12产生一或多个图块的图像内容之后,作为后处理的一部分,GPU 12可应用后处理操作(例如,模糊、转换成黑白、时间扭曲等),并且作为后处理操作的一部分,GPU 12可对一或多个图块的图像内容进行上采样。作为另一实例,GPU 12可产生每个图块的图像内容,并且在产生帧的每个图块的图像内容之后,GPU 12可进行上采样作为后处理操作的一部分。在一些实例中,GPU 12可存储图像内容而不进行上采样,并且显示处理器16可进行上采样作为写入到显示器18的一部分。
GPU 12可确定图像表面的图块的集合包含具有小于图像表面的其它图像内容的图像分辨率(例如,小于全分辨率)的图像分辨率的图像内容。GPU 12可以小于图块中的每一个的大小的大小并且基于图块的集合中的图像内容的图像分辨率渲染图块的集合的图像内容。举例来说,GPU 12可确定第一图块的图像分辨率是全分辨率的1/16,并且渲染具有N/4xN/4的像素分辨率(例如,N/4xN/4的大小)的第一图块的图像内容,其中NxN是图块的大小,并且因此,N/4xN/4小于NxN。作为一个实例,GPU 12可对图块的集合中的图像内容进行上采样以产生具有与图块中的每一个的大小相同大小的经上采样的图像内容,并且将经上采样的图像内容输出到系统存储器10。
可能存在GPU 12确定图像表面的不同部分的图像分辨率的各种方式。作为一个实例,CPU 6可限定每个部分的像素分辨率,这是因为当对这些部分进行上采样时,所得图像分辨率将是那些部分的图像分辨率。在此实例中,像素分辨率和图像分辨率可以是相同的(例如,具有图块的N/2xN/2像素分辨率与将图像分辨率限定为四分之一图像分辨率是有效地相同的)。作为另一实例,CPU 6可限定图像表面的部分的图像分辨率。CPU 6可限定形状(例如,矩形、三角形、椭圆形,或一些其它多边形)及其坐标,并且可按绝对项(例如,在上采样之前应针对所述部分渲染的像素的数量)或相对项(例如,全图像分辨率的一些因数)限定部分的图像分辨率。作为一个实例,CPU 6可限定分辨率的波段(例如,具有不同水平的注视点的波段)。对于图像表面的中心,CPU 6可限定没有注视点的圆(例如,全图像分辨率),对于围绕圆的圆形波段(例如,环形),CPU 6可限定四分之一分辨率等等,作为限定图像表面的不同部分的不同分辨率(例如,注视点的量)的方式。
CPU 6可输出关于具有特定图像分辨率的部分的形状和位置的信息。GPU 12可基于图像表面的不同部分的形状和位置以及图像表面中的图块的位置的信息确定图块中的图像内容的图像分辨率。
在一些情况下,并非CPU 6限定图像部分的大小和形状以及所述部分的特定图像分辨率,GPU 12可经配置以限定图像部分的大小和形状及其图像分辨率。举例来说,GPU 12可经配置以限定在图像表面的中心具有半径R的圆为具有第一图像分辨率,具有围绕圆的宽度W0的环形为具有第二图像分辨率,围绕具有宽度W0的环形的环形宽度W1为具有第三图像分辨率等等。限定图像分辨率的其它可能方式是可能的并且实例技术不应被视为限于这些实例。
具有特定图像分辨率的图像部分的大小和/或形状可能并不与图块的大小和/或形状相同。举例来说,假设CPU 6限定图像部分为部分配适在图块内的椭圆形。在此实例中,CPU 6可限定图块内的椭圆形图像部分为具有第一分辨率,所述第一分辨率小于图块内的剩余的图像部分的第二分辨率。
在一或多个实例中,GPU 12可渲染图像内容使得图块中的图像内容具有始终相同的图像分辨率(例如,图块中的全部图像内容具有相同图像分辨率)。虽然CPU 6可已经限定相同图块中的图像内容的两个不同的分辨率(例如,第一分辨率和第二分辨率),但是GPU12可渲染图像内容使得所述图块中的图像内容的像素分辨率是均匀的。相应地,在此实例中,GPU 12可确定是否以第一分辨率、第二分辨率或对于图块均匀的一些其它分辨率来渲染图块。
在具有特定图像分辨率的图像部分并不涵盖整个图块的情况下,GPU 12可利用各种因数来确定渲染所述图块的图像内容的分辨率。作为一个实例,GPU 12可确定涵盖大部分或多个图块的图像内容的部分,确定所述部分的图像分辨率,并且以一定像素分辨率渲染图块的图像内容使得当对图像内容进行上采样时所述图像内容的图像分辨率等于所确定的图像分辨率。作为另一实例,GPU 12可确定具有最高分辨率的图块中的图像内容的部分,确定所述部分的图像分辨率,并且以一定像素分辨率渲染图块的图像内容使得当对图像内容进行上采样时所述图像内容的图像分辨率等于所确定的图像分辨率。作为另一实例,GPU 12可确定图块内的不同图像部分的不同图像分辨率的平均值或加权平均值(例如,较大部分是更大程度上加权的)以确定平均图像分辨率,并且以一定像素分辨率渲染图块的图像内容使得当对图像内容进行上采样时所述图像内容的图像分辨率等于所确定的平均图像分辨率。可能存在GPU 12确定图块的图像分辨率的其它方式,并且技术不应被视为限于上述实例。
在上述实例中的一或多个中,某些图像部分的图像分辨率可以不同于由CPU 6限定的图像分辨率。举例来说,在上述实例中,对于图块存在具有第一图像分辨率的图像内容(例如,图像内容的椭圆形),其小于具有第二图像分辨率的图像内容(例如,图块的剩余的部分)。如果GPU 12或CPU 6确定图块的图像内容应该具有等于第二图像分辨率的图像分辨率,那么虽然CPU 6限定图像内容的椭圆形为具有第一图像分辨率,但是图像内容的椭圆形的实际产生的图像分辨率可以等于第二图像分辨率。相反地,如果GPU 12或CPU 6确定图块的图像内容应该具有等于第一图像分辨率的图像分辨率,那么虽然CPU 6限定除图像内容的椭圆形之外的图块的其它部分为具有第二图像分辨率,但是执行图像内容的椭圆形的图块的部分的实际产生的图像分辨率可以等于第一图像分辨率。
为了产生具有特定图像分辨率的图像内容,GPU 12可首先以较低像素分辨率渲染图像内容,并且随后对图像内容进行上采样(或显示处理器16可执行上采样)。以较低像素分辨率渲染图像内容的一种方式是将图像内容渲染到小于图块的大小的大小。GPU 12将图像内容渲染到小于图块的大小的大小的一个实例方式是将GPU 12将渲染的视口限定到较小大小。举例来说,如果GPU 12将渲染到大小N/2xN/2,其中NxN是图块的大小,那么GPU 12可将视口限定为(x,y)到((x+N/2)),(y+N/2)),其中x是图块的左上角的x坐标并且y是图块的左上角的y坐标。在一些实例中,CPU 6可限定视口,而非GPU 12。作为另一实例,在CPU 6上执行的应用程序可限定视口而没有大小上的任何变化(例如,限定视口为图块的大小),并且在CPU 6或GPU 12的控制器上执行的图形驱动程序可随后修改限定视口以调整视口大小到较小大小的命令。使得GPU 12渲染图像内容到小于图块的大小的大小的其它可能技术是可能的,并且技术不应被视为限于上述实例。
相应地,实例技术提供GPU 12注视点渲染图像内容使得图像表面的不同部分在不同图像分辨率的方式。举例来说,并非渲染图像内容以扣接到图块(例如,与图块的大小相同),GPU 12可将图块的图像内容渲染到小于图块的大小,其中GPU 12渲染到的大小是基于所述图块中的图像内容的图像分辨率和图块的大小的。如果图块的大小是NxN,并且图像分辨率是全分辨率的一半,那么GPU 12可将所述图块的图像内容渲染到(NxN)(1/2)(即,N/2xN或NxN/2)。在此实例中,像素分辨率是NxN/2或N/2xN。同样,像素分辨率限定给定区域中的经渲染的像素的数量,并且图像分辨率限定图像内容中的细节的量。GPU 12可对渲染到较小大小的图像内容进行上采样使得所得经上采样的图像内容与图块的大小是相同大小。GPU 12可针对图块中的每一个重复这些操作。
在一些实例中,上采样并不添加任何新的额外图像内容到图像表面,而是实际上通过基于相邻像素的像素值复制、插入或平均像素值执行。上采样所需的量可以直接地与部分呈现的模糊或清晰的程度相关。举例来说,16倍上采样的图像内容的部分与4倍上采样的图像内容的部分相比将呈现的更模糊。通过渲染图块的图像内容到小于图块的大小的大小并且随后上采样到图块的大小引起图像内容在图像表面的不同部分中具有不同的图像分辨率。
图2是进一步详细说明图1的计算装置2的CPU 6、GPU 12和存储器10的框图。如图2中所示,CPU 6以通信方式耦合到GPU 12和存储器10,且GPU 12以通信方式耦合到CPU 6和存储器10。在一些实例中,GPU 12可集成到具有CPU 6的主板上。在额外实例中,GPU 12可在安装在包含CPU 6的主板的端口中的图形卡上实施。在其它实例中,GPU 12可并入在经配置以与CPU 6交互操作的外围装置内。在额外实例中,GPU 12可位于与CPU 6相同的微芯片上,从而形成芯片上系统(SoC)。CPU 6经配置以执行应用程序22、图形API 30、GPU驱动程序32和操作系统34。
GPU 12包含控制器36、着色器核心38、一或多个固定功能单元40和上采样电路42。为了简单起见,本地存储器14也被说明为是GPU 12的一部分但是也可以是外部的。虽然说明为单独的组件,但是在一些实例中,上采样电路42可以是固定功能单元40的部分。上采样电路42可对存储在本地存储器14中的图像内容进行上采样用于图块并且将经上采样的图像内容输出到存储器10。
并且,在一些实例中,上采样电路42可以是显示处理器16的部分。为易于描述,上采样电路42被说明为GPU 12的一部分。在上采样电路42是显示处理器16的一部分的实例中,上采样电路42可以下文描述的方式操作。
软件应用程序22可包含使图形内容显示的一或多个指令或使非图形任务(例如,通用计算任务)在GPU 12上执行的一或多个指令中的至少一些。软件应用程序22可将指令发布到图形API 30。图形API 30可以是将从软件应用程序22接收的指令转译为可由GPU驱动程序32消耗的格式的运行时间服务。在一些实例中,图形API 30和GPU驱动程序32可以是同一软件服务的部分。
GPU驱动程序32经由图形API 30从软件应用程序22接收指令,且控制GPU 12的操作以服务所述指令。举例来说,GPU驱动程序32可调配一或多个命令流,将所述命令流放置到存储器10中并指示GPU 12执行命令流。GPU驱动程序32可将命令流放置到存储器10中,且经由操作系统34(例如,经由一或多个系统调用)与GPU 12通信。
控制器36经配置以检索存储在命令流中的命令,且分派所述命令以用于在着色器核心38和一或多个固定功能单元40上执行。控制器36可从命令流分派命令以用于在一或多个固定功能单元40,或着色器核心38和一或多个固定功能单元40的子集上执行。控制器36可以是GPU 12的硬件,可以是在GPU 12上执行的软件或固件,或两者的组合。
着色器核心38包含可编程电路(例如,软件在上面执行的处理核心)。一或多个固定功能单元40包含固定功能电路,所述固定功能电路经配置以用最小功能灵活性执行有限操作。着色器核心38和一或多个固定功能单元40一起形成经配置以执行图形处理的图形管线。
着色器核心38可经配置以执行从CPU 6下载到GPU 12上的一或多个着色器程序。在一些实例中,着色器程序可以是用高级着色语言(例如,OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言等)编写的程序的经编译版本。在一些实例中,着色器核心38可包含经配置以并行地操作的多个处理单元(例如,SIMD管线)。着色器核心38可具有存储着色器程序指令的程序存储器和执行状态寄存器(例如,程序计数器寄存器),其指示程序存储器中正执行的当前指令或待提取的下一条指令。在着色器核心38上执行的着色器程序的实例包含例如顶点着色器、像素着色器(也被称作片段着色器)、几何着色器、壳着色器、域着色器、计算着色器和/或统一着色器。
固定功能单元40可包含经硬连线以执行某些功能的硬件。虽然固定功能硬件可以是经由例如一或多个控制信号可配置的以执行不同功能,但是固定功能硬件通常不包含能够接收用户编译程序的程序存储器。在一些实例中,一或多个固定功能单元40可包含例如执行光栅操作(例如,深度测试、剪刀测试、阿尔法混合等)的处理单元。
CPU 6的GPU驱动程序32可经配置以将命令流写入存储器10,且GPU 12的控制器36可经配置以从存储器10读取命令流中的一或多个命令。在一些实例中,可将命令流中的一或两个存储为存储器10中的环形缓冲器。环形缓冲器可以是具有循环寻址方案的缓冲器,其中CPU 6和GPU 12维持与将数据写入到环形缓冲器及从环形缓冲器读取数据相关联的同步状态变量。举例来说,如果第一命令流是环形缓冲器,那么CPU 6和GPU 12中的每一个可存储指示待写入到环形缓冲器中的下一地址的写入指针及指示待从环形缓冲器中读取的下一地址的读取指针。
在CPU 6将新命令写入到环形缓冲器时,CPU 6可更新CPU 6中的写入指针且指示GPU 12更新GPU 12中的写入指针。类似地,在GPU 12从环形缓冲器读取新命令时,GPU 12可更新GPU 12中的读取指针且指示CPU 6更新CPU 6中的读取指针。其它同步机构是可能的。在读取和/或写入指针达到针对环形缓冲器所分配的地址范围内的最高地址时,读取和/或写入指针可环绕到最低地址以实施循环寻址方案。
现在将相对于图2描述实例GPU驱动程序32和实例GPU控制器36的实例操作。GPU驱动程序32从软件应用程序22接收指定待由GPU 12执行的图形操作和/或通用计算操作的一或多个指令。GPU驱动程序32将输出命令流放置到可由GPU控制器36存取的存储器10中。GPU驱动程序32通知GPU控制器36对应于软件应用程序22的命令流可供用于处理。举例来说,GPU驱动程序32可将指示命令流准备好执行的一或多个值写入到GPU寄存器(例如,由GPU12轮询的GPU硬件寄存器和/或由GPU 12轮询的GPU存储器映射的寄存器)。
在通知命令流准备好执行之后,GPU 12的控制器36可确定资源在GPU 12上当前是否可供使用以开始执行命令流。如果资源是可供使用的,那么控制器36开始分派命令流中的命令。
作为图形处理的部分,CPU 6可将某些图形处理任务卸载到GPU 12。举例来说,应用程序22可产生互连以形成图形对象的图元的多个顶点的属性的属性数据。应用程序22可将属性数据存储在存储器10中的顶点缓冲器中。GPU驱动程序32可指示控制器36检索顶点的属性的属性数据以用于处理以产生图形数据以供显示。
在本发明中所描述的实例中,应用程序22产生GPU驱动程序32将发射到GPU 12的图像分辨率信息。图像分辨率信息限定GPU 12将产生的图像表面的不同部分的图像分辨率。
作为一个实例,应用程序22可限定图像分辨率的波段。对于特定波段中的图像内容,GPU 12可基于图像内容所属于的波段来渲染图像内容。举例来说,GPU 12可确定图元的顶点所属于的波段,并且基于图元的顶点所属于的波段的图像分辨率来渲染图元。对于高度感兴趣的部分,应用程序22可限定相对高的图像分辨率,并且对于不太感兴趣的部分,应用程序22可限定相对低的图像分辨率。
作为另一实例,应用程序22可限定顶点中的每一个的图像分辨率为存储在顶点缓冲器中的属性数据的一部分。在此实例中,对于位于具有较感兴趣的区域的部分(例如,其中观看者应该观看的)中的图元的顶点,应用程序22可限定那些区域为具有相对高的图像分辨率,并且具有不太感兴趣的区域的其它部分为具有相对低的图像分辨率。
图像分辨率的定义可以是相对于全图像分辨率的比率。举例来说,图像分辨率的定义可以是1/4分辨率、1/16分辨率等。作为比率(例如,1/4、1/16等)的图像分辨率的定义可以是与将像素分辨率定义为比率同义的。
举例来说,全像素分辨率是指显示器18上的像素的数量。如果显示器18是2048像素宽和1536像素宽并且GPU 12渲染具有2048像素乘1536像素的图像表面,那么图像表面在全像素分辨率。然而,如果GPU 12渲染具有128像素乘96像素的图像表面,那么GPU 12在1/256像素分辨率(例如,2048/16x1536/16)渲染图像表面。如果GPU 12随后对具有1/256像素分辨率乘因数256x的图像表面进行上采样,那么所得的经上采样的图像将包含2048x1536像素,但是图像分辨率将是全图像分辨率的1/256。作为比较,经上采样的具有1/256像素分辨率的图像表面与具有全像素分辨率的图像表面相比将呈现的更加模糊。这是因为在经上采样的图像内容中存在较少细节,因为上采样基于已经现有的像素值产生像素的像素值而不是产生独立的新像素值。
虽然图像分辨率和像素分辨率的以上描述是相对于整个图像表面描述的,但是相同概念适用于图像表面的部分。举例来说,如果图像内容被渲染到NxN大小的图块,并且来自应用程序22的图像分辨率信息指示NxN大小的图块中的图像内容的图像分辨率是四分之一分辨率,那么将图像内容渲染到大小N/2xN/2,并且随后通过四的因数进行上采样使得所述图块的图像内容具有四分之一图像分辨率。
在应用程序22在顶点基础上限定图像分辨率的实例中,应用程序22可将每个图元的图像分辨率限定为所述图元的顶点的额外的属性数据。因为在图像表面中存在多个图元,所以将存在具有不同图像分辨率的多个图像部分。举例来说,应用程序22可限定第一组的图元为在第一图像分辨率,第二组的图元为在第二图像分辨率等等,包含在全图像分辨率的组的图元。
具有不同图像分辨率的图元的组中的每一个可形成相应的形状(例如,椭圆形)。相应地,在一些实例中应用程序22可限定图像表面的不同部分的不同图像分辨率,其中每个部分是特定多边形形状的(例如,椭圆形、矩形等)。可能存在应用程序22限定具有不同图像分辨率(例如,包含图像分辨率的波段)的图像部分的各种其它方式,并且图像分辨率信息的顶点的顶点属性的使用是一个实例。
如上文所描述,GPU 12可经配置以在两个阶段中产生图像内容:分区阶段和渲染阶段。在分区阶段中,GPU驱动程序32和/或控制器36可限定图块(也被称作分区)的大小,其中每个图块的大小是NxN(例如,NxN的像素的数量)。图块不必是正方形的或全部是相同大小的。为易于描述,以下内容是相对于具有相同大小的正方形图块描述的。
控制器36可随后使得着色器核心38和固定功能单元40执行相应的操作以确定哪些图元属于哪个图块以及哪些顶点可见。在渲染阶段中,控制器36可使得着色器核心38和固定功能单元40在每个图块的基础上执行相应的操作以在逐图块基础上渲染图像内容。GPU 12将所得图像内容存储在存储器10中以用于检索和显示。
图形处理的部分包含通常通过GPU 12在着色器核心38上执行顶点着色器来执行的顶点处理。举例来说,顶点着色器可在每个顶点的属性的属性数据上执行坐标转换、照明、着色和其它此类过程。应用程序22可与顶点着色器结合,并且应用程序22可经由GPU驱动程序32发布指示控制器36检索顶点着色器的目标代码以用于在着色器核心38上执行的命令。
GPU 12可执行顶点着色器作为分区阶段的一部分。顶点着色器可接收如由应用程序22限定的图元的顶点坐标并且产生作为观看区域的一部分的图元的顶点坐标。可以是固定功能单元40的部分的分区电路可确定图元中的每一个所属于的图块。举例来说,分区电路可接收指示显示器18的大小的信息(例如,显示器18的水平地像素的数量乘显示器18的垂直地像素的数量)。基于显示器18的大小,分区电路可将顶点着色器所提供的坐标转换成显示器18上的坐标。显示器18的大小可以存储在本地存储器14或存储器10中。
另外,分区电路可将图像表面划分成多个图块。图像表面可以是显示器18的大小。GPU驱动程序32可限定分区电路将划分图像表面的图块的数量。基于图块的数量和显示器18的大小,分区电路可确定每个图块的大小和图像表面中的每个图块的位点。作为一个实例,如果显示器18的大小是100像素乘100像素,并且GPU驱动程序32限定图像表面将被划分成100个图块,那么分区电路可确定存在连续地布置的100个10像素乘10像素图块。
基于每个图块的大小、图像表面中的每个图块的位点和显示器18上的顶点的坐标,分区电路可确定哪个顶点属于哪个图块。举例来说,伴随100个10像素乘10像素图块实例,如果分区电路确定顶点的x和y坐标相应地是25和35,那么分区电路可确定此顶点位于图块(2,3)(即,右侧第二图块和底部第三图块)。在此实例中,25/10指示图块位于自右侧的第二图块,并且35/10指示图块位于自顶部的第三图块。
在一些实例中,顶点着色器输出的两个顶点可以位于相同x、y坐标处,但是在不同z坐标处。z坐标指示深度。深度测试电路可从分区电路接收哪些顶点属于哪些图块的坐标信息。对于具有相同x、y坐标的顶点,深度测试电路可基于相应的z坐标确定哪个顶点被哪个顶点遮挡。如果顶点或图元被遮挡,那么所述顶点或图元可以被从进一步处理中的丢弃。举例来说,深度测试电路可能不将被遮挡的顶点或图元的属性数据输出到存储器10。分区电路和深度测试电路的操作的顺序是作为一个实例提供的,并且操作的顺序可以颠倒。深度测试电路可首先确定顶点或图元是否被遮挡且从进一步处理中移除那些顶点,并且分区电路可随后确定顶点属于哪些图块。
在任一实例(例如,分区并且随后深度测试或深度测试并且随后分区)中,结果可以是指示图元属于哪些图块的信息。并且,剩余的顶点(例如,那些未丢弃的)可以是促成最终图像表面的顶点。这些操作可结束分区阶段。相应地,在分区阶段的末尾,存在哪些顶点属于哪些图块的可见性信息(例如,促成图像表面中的内容的哪些顶点属于哪些图块)。
GPU 12可在存储器10中存储哪些顶点属于哪个图块的信息,可能地作为额外属性数据。举例来说,每个图块可以与数字值中的位点相关联(例如,第一图块与数字值中的最后位相关联,第二图块与数字值中的第二到最后位相关联等等)。对于每个顶点,分区电路可确定指示所述顶点所属于的图块的数字值。在顶点的数字值中与特定图块相关联的位的数字一意味着相应的顶点属于所述图块。举例来说,假设九个图块,这意味着对于属于第一图块的每个顶点,分区电路可存储随后的数字值为所述顶点的额外的属性数据:000000001。在此实例中,第一图块与数字值中的最后一位相关联,并且因此,所述位是数字(例如,二进制)一并且其余位是属于第一图块的顶点的数字零。如果顶点属于第三图块,那么分区电路可存储随后的数字值为所述顶点的额外属性数据:000000100(例如,距离最后数字位的第三位是数字一,因为距离最后数字位的第三位与第三图块相关联)。
接下来对于渲染阶段,GPU 12可渲染通过图块中的每一个中的顶点形成的图元。GPU 12可在逐图块基础上执行此类渲染。举例来说,GPU 12可渲染第一图块的图像内容,随后第二图块等等。在写入第一图块的图像内容的结尾,GPU 12可在本地存储器14中存储图像内容,并且重复这些操作直至不存在可供渲染的任何图块。如更详细地描述,上采样电路42对图块中的一或多个中的图像内容进行上采样作为将图像内容输出到存储器10的一部分。在一些其它实例中,GPU 12可在每个图块的渲染之后对图像内容进行上采样并且将图像内容输出到存储器10,实际上在全部图块的渲染之后。
为了渲染图像内容,GPU 12确定图块中的每一个中的像素中的每一个的像素值(例如,色彩和不透明度)。GPU 12渲染图块中的每一个中的像素的一种方式是通过限定图像内容将被渲染的图块内的区域。如果GPU 12渲染图块中的每一个中的图像内容到图块的大小,那么GPU 12可渲染图像内容到全像素分辨率。
然而,根据本发明中所描述的技术,并非渲染图块的图像内容到图块的大小,GPU12可渲染图像内容到小于图块的大小。GPU 12渲染图块的图像内容的大小可基于图块中的顶点的图像分辨率。
如上文所描述,应用程序22可限定分辨率波段。在顶点着色器的操作的结尾,GPU12可确定图块中的顶点所属于的波段。顶点所属于的分辨率波段可限定所述图块中的图像内容的图像分辨率。
在一些实例中,应用程序22可限定顶点的图像分辨率。在通过顶点着色器执行的操作期间,顶点着色器可保持指派给顶点的顶点的图像分辨率的定义。随后在渲染期间,对于属于由其顶点限定的图元的全部像素,GPU 12可基于所限定的图像分辨率渲染这些图元到与图块的大小成正比的大小。
举例来说,如果第一图块内的大部分或多个顶点落入具有四分之一图像分辨率的波段或者被限定为具有四分之一图像分辨率,并且图块的大小是NxN,那么GPU 12可将第一图块的图像内容渲染到图块的大小的四分之一的大小(例如,N/2xN/2)。在此实例中,GPU12渲染第一图块的图像内容的大小是N/2xN/2,其与图块的大小成正比(例如,与NxN成正比)并且基于所限定的图像分辨率(例如,四分之一分辨率)。在此实例中,GPU 12可用图像分辨率的比率乘以图块的大小(例如,NxN乘以四分之一是N/2xN/2)。
GPU 12可渲染第一图块的图像内容到N/2xN/2的一个实例方式是基于限定的视口。举例来说,作为渲染图像内容的一部分,GPU 12接收限定GPU 12将在其中渲染图像内容的视口的命令。对于全像素/图像分辨率,视口命令(例如,OpenGL的glViewport命令)可限定GPU 12对其渲染图像内容为图块的大小(例如,NxN)的视口。然而,对于小于基于图像分辨率的图块的大小的大小,视口命令可将视口限定为N/2xN/2。
在一些实例中,因为应用程序22可能并不经配置以确定各种图元将被渲染到的图块,所以应用程序22可能并不经配置以发布限定所述图块的视口到小于所述图块的大小的视口命令。因此,应用程序22可发布视口命令而不指示GPU 12将图像内容渲染到较小大小。
GPU驱动程序32可俘获由应用程序22发布的视口命令并且修改视口命令以将视口限定到与图块的大小和限定的图像分辨率成正比的较小大小。举例来说,如上文所描述,GPU驱动程序32的任务可以是输出应用程序22发布到GPU 12的GPU 12执行的命令。应用程序22可限定视口命令,并且GPU驱动程序32可接收视口命令并且修改视口命令以设置视口到GPU 12将对其渲染图像内容的实际视口(例如,从NxN到N/2xN/2修改视口)。
基于图块的限定的视口,GPU 12可渲染所述图块的图像内容到由所述图块的视口限定的区域。举例来说,GPU 12可光栅化图元并且基于限定的视口大小限定图元内的像素。对于图元内的每个像素,GPU 12可执行确定相应的像素的像素值的像素着色器。像素着色器可将视口内的像素的所得像素值输出到本地存储器14。
GPU 12可针对图块中的每一个重复这些操作。相应地,本地存储器14可针对每个图块存储图像内容。然而,任何图块的图像内容的大小不需要一定是与图块相同大小的,并且可以小于图块的大小。举例来说,如果第一图块的图像分辨率是四分之一(例如,因为应用程序22限定恰好在第一图块中的图像分辨率波段为四分之一图像分辨率),那么图块的图像内容的大小可以是第一图块的大小的四分之一。如果第二图块的图像分辨率是十六分之一,那么图块的图像内容的大小可以是第二图块的大小的十六分之一等等。这可结束渲染阶段。
对于一些图块,可有可能的是GPU 12渲染图像内容到那些图块的大小。应用程序22可限定一些顶点到具有全图像分辨率,因为那些顶点是用于观看者应该聚焦在的图元的。因此,GPU 12可渲染一些图块到全像素分辨率(例如,到等于图块的大小的大小),因为那些图块中的图像内容将具有全图像分辨率并且可渲染一些图块到小于全像素分辨率(例如,到与图块的大小相比较小的大小),因为那些图块中的图像内容将具有小于全图像分辨率(例如,二分之一、四分之一、八分之一、十六分之一图像分辨率等等)。
上采样电路42可经配置以将相应的图像内容从图块中的每一个输出到存储器10。然而,作为针对每个图块输出图像内容的一部分,上采样电路42可针对一或多个图块对图像内容进行上采样。举例来说,如果GPU 12将第一图块的图像内容渲染到四分之一像素分辨率,那么上采样电路42可从本地存储器14读取经渲染的图像内容中的第一像素的像素值,并且存储第一像素的像素值四次以表示图像表面上的四个像素的像素值。随后上采样电路42可从本地存储器14读取经渲染的图像内容中的第二像素的像素值,并且存储第二像素的像素值四次以表示图像表面上的接下来的四个像素的像素值等等。
通过这种方式,上采样电路42可对图块中的图像内容进行上采样以产生经上采样的图像内容。上采样电路42可基于图块的经渲染的图像内容的大小和图块的大小对图像内容进行上采样。上采样电路42可将经上采样的图像内容输出到存储器10以用于存储,并且以供显示处理器16在显示器18上检索和显示。
在以上实例中,上采样电路42进行上采样作为将图像内容输出到存储器10的一部分。然而,在一些实例中,上采样电路42可对图块的图像内容进行上采样、将经过上采样的图像内容存储在本地存储器14中,并且随后将经过上采样的图像内容输出到存储器10。并且,在一些实例中,上采样电路42可能不等待直至在上采样和输出到存储器10之前全部图块的图像内容被渲染。在这些实例中,在GPU 12渲染第一图块的图像内容之后,上采样电路42可在GPU 12渲染第二图块的图像内容之前或与GPU 12渲染第二图块的图像内容并行对第一图块的经过上采样的图像内容进行上采样和输出。
图3是以甚至进一步的细节说明图1的计算装置的GPU和存储器的框图。为了执行图形操作,GPU 12可实施图形处理管线。图形处理管线包含执行如由在GPU 12上执行的软件或固件限定的功能并且通过作为经配置以执行非常特定功能的固定硬件的固定功能单元执行功能。在GPU 12上执行的软件或固件可被称作着色器,并且着色器可在GPU 12的一或多个着色器核心上执行。着色器为用户提供功能灵活性,这是因为用户可设计着色器以按任何可设想的方式来执行所期望的任务。然而,固定功能单元经针对固定功能单元执行任务的方式而硬接线。相应地,固定功能单元可不提供许多功能灵活性。
在此实例中,GPU 12可包含控制器36、输入汇编程序电路44、分区阶段电路48和渲染阶段电路58中的一或多个。分区阶段电路48包含顶点着色器50,其以虚线示出以指示在GPU 12的着色器核心38(图2)上执行的顶点着色器50。举例来说,分区阶段电路48包含顶点着色器50在上面执行的着色器核心38。分区阶段电路48还包含分区电路52和深度测试电路54。渲染阶段电路58包含光栅化器电路60和像素着色器64,其以虚线示出以指示像素着色器64在着色器核心38上执行。在所说明的实例中,本地存储器14被说明为在GPU 12内部但是可以在GPU 12外部。GPU 12还包含上采样电路42,其对来自图块中的每一个的经渲染的图像内容进行上采样和输出。
着色器核心38也可执行其它类型的着色器,例如以所述次序遵循顶点着色器级且用于棋盘形布置的外壳着色器和域着色器。棋盘形布置电路还可包含在一或多个固定功能单元40中以用于执行棋盘形布置。着色器核心38还可执行几何着色器,所述几何着色器在着色器核心38执行域着色器时接收域着色器的输出或在不执行域着色器时接收顶点着色器的输出。光栅化器电路60可接收顶点着色器50所产生的图形数据或来自几何着色器(当可供使用时)或域着色器(当可供使用时)的图形数据。
图形管线的其它配置是可能的,且本发明中所描述的技术不应被视为限于图3中所说明的具体实例。举例来说,GPU 12可包含比所说明的那些更多的级,且在一些实例中,GPU 12可能未必包含所有所说明的级。并且,提供所述级的特定排序用于说明目的且不应被视为具有限制性。
图3还说明用于存储中间图形数据作为通过GPU 12的图形管线所产生的图形数据的存储器10中的各种缓冲器。如所说明,存储器10包含顶点缓冲器46、流式输出缓冲器56、像素缓冲器62和帧缓冲器66。这些缓冲器可以是相同的较大缓冲器的部分或者可以是单独的缓冲器。
应用程序22可使得CPU 6(例如,经由GPU驱动程序32)将顶点的顶点数据(例如,属性数据)输出到顶点缓冲器46。在一些实例中,顶点的属性数据可包含指示通过顶点形成的图元的相对图像分辨率的图像分辨率信息。举例来说,对于用于观看者应该聚焦在的图像部分的图元,应用程序22可限定相对高水平的图像分辨率,包含全分辨率。对于用于观看者不应该聚焦在的图像部分的图元,应用程序22可限定相对低水平的图像分辨率(例如,四分之一分辨率、八分之一分辨率等等)。在一些实例中,应用程序22可以越来越少的图像分辨率渐进地限定图像部分。举例来说,对于紧邻具有全分辨率的图像部分的图像部分,应用程序22可限定二分之一分辨率,对于紧靠着紧邻图像部分的图像部分,应用程序22可限定四分之一分辨率等等。
可能存在限定例如分辨率的波段的图像分辨率的其它方式。并且,应用程序22不必是限定图像分辨率的唯一方式。除了应用程序22之外或替代于应用程序22,一些其它组件(例如,GPU驱动程序32或控制器36)可限定图像分辨率。
输入汇编程序电路44可从系统存储器10读取如由CPU 6限定的顶点,且汇编所述控制点以形成顶点。举例来说,输入汇编程序电路44可读取坐标、色彩值和其它此类信息。坐标、色彩值和其它此类信息可通常被称作顶点的属性。基于顶点的属性,输入汇编程序电路44可确定图元的大体布局。输入汇编程序电路44可以是固定功能单元。
顶点着色器50可接收顶点的属性的属性数据。顶点着色器50可执行每顶点操作,例如,变换、蒙皮、变形和每顶点照明。举例来说,应用程序22可限定在所谓的“本地坐标”中形成不同对象的图元的顶点的坐标。本地坐标是三维坐标(x,y,z),并且在本地空间中限定坐标(例如,相对于对象本身,其中作为一个实例对象的中心在坐标(0,0,0)处)。顶点着色器50经由模型矩阵将本地坐标转换到世界空间,其中世界空间包含图像表面所涵盖的空间中的全部的对象。有时被称作变换矩阵的模型矩阵平移、缩放和/或旋转对象到对象属于较大世界空间中的场所。模型矩阵可以由应用程序22的开发者限定。
顶点着色器50可用旋转场景的观看矩阵乘以顶点的世界坐标使得对象定向到观看者的视点。基于观看者的视点,在一个视点中一些对象可能呈现在其它对象的前方,且与其它视点逆向,并且观看矩阵基于观看者的视点正确地定向对象。作为一个实例,如果观看者从第一视点观看对象,那么第一对象呈现在第二对象的前方,但是从相反的视点,第二对象将呈现在第一对象的前方。观看矩阵可以由应用程序22的开发者限定。
顶点着色器50可经由投影矩阵将观看空间坐标裁剪到裁剪空间。投影矩阵指定顶点着色器变换到经归一化的装置坐标(NDC)的范围(例如,-1.0到1.0)的范围坐标。顶点着色器50裁剪在此范围外部的全部坐标,因为那些图元是不可见的。如果图元的仅一部分在所述范围内,那么顶点着色器50可裁剪在所述范围外部的图元的部分,并且产生适配在所述范围内部的图元。
在数学上,顶点着色器50可执行以下操作以产生裁剪坐标:
V裁剪=M投影*M观看*M模型*V本地,
其中M投影、M观看和M模型相应地是指投影、观看和模型矩阵,并且V本地是指本地坐标。
分区电路52从顶点着色器50接收输出(例如,裁剪坐标中的顶点)并且确定顶点所属于的图块(例如,分区)。举例来说,顶点着色器50的输出可以是观看者视角中的x和y坐标,以及深度值(例如,z坐标)。分区电路52可利用x和y坐标来确定所述顶点所属于的图块,以及产生所需的任何额外图形数据以用于通过渲染阶段电路58的渲染。分区电路52可以是一或多个固定功能单元40的固定功能单元。
作为一个实例,分区电路52可针对全像素分辨率图像表面确定每个顶点所属于的图块。GPU驱动程序32可限定视口,其中视口的大小是显示器18的大小(例如,1920像素乘1080像素)。在制造期间GPU驱动程序32可以通过显示器18的大小预编程,或者操作系统34可将显示器18的大小提供到GPU驱动程序32。GPU驱动程序32也可提供指示图块的数量的信息,或者图块的数量可以是预设的并且存储在本地存储器14或GPU 12的寄存器中。在任一情况下,分区电路52可接收视口的大小和图块的数量,并且确定视口中的哪些像素属于哪些图块。在一些实例中,分区电路52可接收指示每个图块的大小和图块的数量的信息。在此类实例中,分区电路52不需要一定接收视口。
顶点着色器50可从观看者的视角提供经归一化到范围在-1.0到1.0之间的像素的x和y坐标。分区电路52可利用x和y坐标以及图块的大小和数量以确定顶点中的每一个所属于的图块。作为一个实例,假设存在10x10个图块,其各自具有10x10像素的大小。在此实例中,如果顶点具有相应地0.6和-0.4的NDC x和y坐标,那么分区电路52可确定此顶点的位置在(80,20),因为在此实例中NDC中的每个0.1梯级是5个像素。因为每个图块是10像素乘10像素,具有相应地80和20的x和y坐标的顶点将在从左侧的第八图块和从顶部的第二图块中。分区电路52可重复此类操作以识别顶点中的每一个所属于的图块。
如上文所描述,分区电路52可识别顶点所属于的图块的一个实例方式基于数字值,其中数字值中的每个位对应于图块。对于属于特定图块的顶点,分区电路52可将对应于所述图块的位设置到数字值中的数字一以用于顶点,并且将全部其它的位保持在数字零。可能存在识别顶点所属于的图块的其它方式。
深度测试电路54可比较由顶点着色器50处理的顶点的z坐标以确定顶点是可见还是不可见的。深度测试电路54可输出对流式输出缓冲器56可见的顶点的经处理属性。举例来说,如果一个顶点在另一顶点的前方,那么深度测试电路54可确定后面的顶点是不可见的并且可能不输出顶点的属性数据中的任一个到流式输出缓冲器56。通过这种方式,分区阶段电路48可产生包含指示每个顶点所属于的图块的信息的信息的可见性流。
分区阶段电路48的操作的顺序不需要一定得到设置。举例来说,在分区电路52确定顶点所属于的图块之前深度测试电路54可首先确定顶点是否被遮挡。并且,如上文所描述,在一些实例中,应用程序22可已经限定顶点的图像分辨率。相应地,对于可见的其属性数据存储在流式输出缓冲器56中的顶点,流式输出缓冲器56也可存储用于这些顶点的图像分辨率信息。
举例来说,在应用程序22限定波段中的图像分辨率的情况中,分区电路52可任选地确定顶点所属于的分辨率波段,方法是比较顶点的x坐标和y坐标以及分辨率波段。分区电路52可将顶点的图像分辨率信息存储为流式输出缓冲器56中的属性数据。然而,分区电路52确定顶点所属于的分辨率波段并不是必需的,并且另一组件可确定顶点所属于的分辨率波段。
光栅化器电路60从流式输出缓冲器56接收图元的顶点的属性数据并且将图元转换成像素以供显示。举例来说,图元可被限定为指示图元的互连的向量,且可被限定在独立于将显示图像的显示器18的坐标空间中。光栅化器电路60将这些向量转换成显示器坐标,且执行任何额外功能,例如,移除被遮挡的图元内的点。光栅化器电路60可以是一或多个固定功能单元40的固定功能单元且将值输出到像素缓冲器62。
在本发明中所描述的实例中,在将向量转换成显示器坐标中,光栅化器电路60可考虑图像分辨率。作为一个实例,应用程序22可输出限定光栅化器电路60将在其中确定显示器坐标的区域的视口命令。在并不考虑图像分辨的实例中,视口命令可限定其中光栅化器电路60将确定显示器坐标为图块的大小(例如,NxN)的大小。举例来说,对于第一图块,视口命令将大小限定为(0,0,N,N)(例如,从0,0开始并且在N,N结束),对于第二图块,视口命令将大小限定为(N,0,N+N,N)等等。
然而,在本发明中所描述的实例中,并非限定视口的大小为图块的大小,视口的大小可以小于图块的大小并且基于图像分辨率。举例来说,GPU驱动程序32可修改由应用程序22限定的视口命令。
对于属于第一图块的全部顶点,它是在流式输出缓冲器56中可供使用的信息,如同上文所描述的数字值,GPU驱动程序32可确定顶点所属于的分辨率波段以及是否存在多个或大部分的图像分辨率。作为一个实例,假设在第一图块中存在五个顶点。对于每个顶点,GPU驱动程序32可确定由应用程序22限定的图像分辨率。GPU驱动程序32可确定是否存在是大部分或最可能的图像分辨率的特定图像分辨率。基于大部分或最可能的图像分辨率,GPU驱动程序32可确定第一图块的图像分辨率。在一些实例中,并非使用大部分或最可能的图像分辨率,GPU驱动程序32可确定图像分辨率的平均值或加权平均值以确定第一图块的图像分辨率。
并且,在属性数据限定顶点的图像分辨率的实例中,GPU驱动程序32可读取属性数据以确定图块的图像分辨率。举例来说,类似于上文,GPU驱动程序32可确定是否存在大部分或最可能的图像分辨率并且分配图像分辨率用于整个图块,或一些平均值或加权平均值作为第一图块的图像分辨率。
GPU驱动程序32可基于第一图块的所确定的图像分辨率和大小限定视口(例如,通过修改视口为由应用程序22限定)。举例来说,如果所确定的分辨率是四分之一分辨率,那么GPU驱动程序32可确定视口的大小为N/2xN/2。在此实例中,GPU驱动程序32确定第一图块中的图像内容的分辨率与全分辨率(例如,四分之一分辨率)之间的比率并且用第一图块的大小乘以比率以确定视口的大小(例如,四分之一乘以NxN是N/2xN/2)。
在以上实例中,GPU驱动程序32确定第一图块的图像内容的分辨率。然而,在第一图块中的顶点中的一些的图像分辨率可以不同于通过GPU驱动程序32确定的图像分辨率。举例来说,如果第一图块中的图元的顶点被限定到四分之一的图像分辨率(例如,基于图元所属于的分辨率波段),但是基于大部分图像分辨率,那么GPU驱动程序32可确定第一图块的图像分辨率是全分辨率。在此情况下,虽然限定于四分之一分辨率,但是图元中的像素的最终经渲染的分辨率可以是全分辨率。如果基于大部分分辨率GPU驱动程序32确定第一图块的图像分辨率是八分之一分辨率,那么虽然限定于四分之一分辨率,但是图元的最终经渲染的分辨率可以是八分之一分辨率。
虽然上述实例是相对于GPU驱动程序32描述的,但是控制器36可执行类似操作或GPU驱动程序32和控制器36可一起执行这些操作。举例来说,控制器36可基于图块的所确定的图像分辨率限定视口并且修改视口命令。
相应地,GPU驱动程序32或控制器36可确定图像表面的第一图块包含具有第一分辨率(例如,第一图像分辨率)的图像内容。第一分辨率小于图像表面的其它图块的第二分辨率。举例来说,第一分辨率可以是八分之一分辨率,并且其它图块中的图像内容可位于全分辨率或四分之一分辨率。GPU驱动程序32或控制器36可基于第一图块中的图像内容的第一分辨率和第一图块的大小限定第一图块的视口。
像素着色器64从像素缓冲器62接收如由光栅化器电路60输出的像素且执行后处理以将色彩值分配到待显示的像素中的每一个。举例来说,像素着色器64可接收存储在系统存储器10中的常数值、存储在系统存储器10中的纹理数据和任何其它数据以产生每像素输出,例如,色彩值。像素着色器64也可输出指示像素的不透明性的不透明度值。像素着色器64可将所得像素值输出到本地存储器14。通过这种方式,渲染阶段电路58可以小于第一图块的大小的大小并且基于第一图块中的图像内容的第一分辨率渲染第一图块的图像内容。举例来说,光栅化器电路60可基于如由GPU驱动程序32和/或控制器36限定的视口的大小确定显示器坐标,并且像素着色器64可确定视口中的像素中的每一个的每像素值。
虽然未说明,但在一些实例中,像素着色器64可输出到输出合并电路以进行任何最终像素处理。举例来说,输出合并电路可利用深度信息以进一步确定是否应移除显示像素中的任一个。输出合并电路还可执行混合操作以产生最终像素值。在此类实例中,输出合并电路可将最终像素值输出到本地存储器14。
渲染阶段电路58可针对每个图块重复这些操作,并且产生每个图块的图像内容。在一些实例中,可能仅需要单个渲染阶段,其中渲染阶段是指在所有图块中的图像内容的渲染。举例来说,应用程序22可能需要发布仅一个渲染命令以使GPU 12在不同图像分辨率下渲染图块中的每一个的图像内容,而并非发布多个渲染命令以使GPU 12在不同图像分辨率下渲染图像内容。
上采样电路42可检索存储在本地存储器14中的图像内容,并且基于所确定的图像分辨率对图像内容进行上采样。举例来说,GPU驱动程序32或控制器36可向上采样电路42指示图块中的每一个的图像分辨率。上采样电路42可利用图像分辨率信息以确定对图像内容进行上采样的程度。举例来说,如果第一图块的图像分辨率是四分之一,那么上采样电路42可以四的因数对图像内容进行上采样。如果第二图块的图像分辨率是全分辨率,那么上采样电路42可充当通路而不进行上采样。
存在上采样电路42可对图像内容进行上采样的各种方式,并且技术不限于进行上采样的任何特定方式。作为一个实例,上采样电路42可复制相同像素值多次(例如,四次以通过四的因数进行上采样)。作为另一实例,上采样电路42可跨越多个像素内插像素值以产生额外像素的像素值。
在一些实例中,上采样电路42可对图像内容进行上采样作为输出图像内容的像素值到帧缓冲器66的一部分。举例来说,在图像内容的输出期间,上采样电路42可对像素值进行上采样以产生像素的更多像素值作为写入所述像素的像素值的一部分。在一些实例中,上采样电路42可首先对第一图块中的全部的图像内容进行上采样并且将经上采样的图像内容存储到本地存储器14中。上采样电路42或可能地一些其它组件可将经上采样的图像内容输出到帧缓冲器66。
图4是说明注视点渲染的一个实例的直观图。在图4中说明的实例中,GPU驱动程序32或控制器36可将图像表面划分成九个图块68A-68I,其中的每一个的大小是NxN。在图块68A-68C的渲染期间,GPU驱动程序32或控制器36可已经确定图块68A-68C中的图像内容的图像分辨率在十六分之一分辨率。相应地,渲染阶段电路58可渲染图块68A-68C的图像内容到大小N/4xN/4的视口,如图4中所说明。举例来说,图块68A-68C的图像内容是图块68A-68C的大小的十六分之一。
在图块68D、68F和68G-68I的渲染期间,GPU驱动程序32或控制器36可已经确定图块68D、68F和68G-68I中的图像内容的图像分辨率在四分之一分辨率。相应地,渲染阶段电路58可将图块68D、68F和68G-68I的图像内容渲染到大小N/2xN/2的视口,如图4中所说明。举例来说,图块68D、68F和68G-68I的图像内容是图块68D、68F和68G-68I的大小的四分之一。在图块68E的渲染期间,GPU驱动程序32或控制器36可已经确定图块68E中的图像内容的图像分辨率在全分辨率。相应地,渲染阶段电路58可将图块68E的图像内容渲染到大小NxN的视口,如图4中所说明。举例来说,图块68E的图像内容等于图块68E的大小。
渲染阶段电路58可在本地存储器14中存储图块68A-68I的图像内容。上采样电路42可检索图像内容并且相应地对图块的图像内容进行上采样。举例来说,对于图块68A-68C中的图像内容,上采样电路42可通过16的因数对图像内容进行上采样。对于图块68D、68F和68G-68I中的图像内容,上采样电路42可通过四的因数对图像内容进行上采样。对于图块68E中的图像内容,上采样电路42可能不对图像内容进行上采样。
图4的右侧说明存储在帧缓冲器66中的最终图像。在此实例中,图像表面呈现的相对清楚,具有在图像表面的中心的较高分辨率,观看者应该聚焦在所述图像表面的中心。对于观看者不需要一定聚焦或在图像内容中存在不多差异的图像表面的其它部分,GPU 12必需执行像素着色器64的较少例子,并且通常具有较少像素来处理,这引起以较少的功率使用的较快的渲染。
图5是说明注视点渲染的实例方法的流程图。在图5中说明的实例中,在分区阶段期间,并且在渲染阶段之前,分区阶段电路48可产生用于全分辨率表面的可见性流,包含指示哪些顶点属于哪些图块的信息(70)。举例来说,如上文所描述,顶点着色器50可产生分区电路52接收的顶点的裁剪坐标。GPU驱动程序32或控制器36确定图像表面的图块的数量和大小。分区电路52接收裁剪坐标并且基于图块的x和y坐标以及数量和大小确定图元的顶点所属于的图块。另外,深度测试电路54可确定顶点或图元是否是可见的并且输出对流式输出缓冲器56可见的顶点。
GPU驱动程序32或控制器36可确定是否存在待渲染的更多图块(72)。如果存在待渲染的更多图块(72的是),那么GPU驱动程序32或控制器36可确定图像表面的第一图块的分辨率是第一分辨率(74)。在此实例中,第一图块的第一分辨率可以小于其它图块中的图像分辨率。作为一个实例,第一图块可以是图块68A。在此实例中,图块68A的图像分辨率是十六分之一,并且图块68D的图像分辨率是四分之一。
为了确定第一图块的图像分辨率,GPU驱动程序32或控制器36可确定图像表面的不同部分的分辨率。举例来说,应用程序22可限定分辨率波段,并且GPU驱动程序32或控制器36可基于应用程序22限定的分辨率波段确定图像表面的不同部分的分辨率(例如,通过比较图像表面中的图块的x和y坐标与分辨率波段的坐标并且确定对于图像表面的不同部分存在哪些分辨率)。
对于属于第一图块中的顶点,GPU驱动程序32或控制器36可基于由应用程序22限定的分辨率波段中的顶点的位置确定这些顶点的图像分辨率。GPU驱动程序32或控制器36可基于第一图块所处于的大部分(例如,第一图像分辨率波段或第二图像分辨率波段)确定第一图块的分辨率。GPU驱动程序32或控制器36可基于第一图块处于其中的分辨率波段确定第一图块的分辨率。
渲染阶段电路58可以小于第一图块的大小的大小并且基于第一图块中的图像内容的第一分辨率渲染第一图块的图像内容。举例来说,GPU驱动程序32或控制器36可确定图块的视口,其中视口的大小小于图块的大小(76)。为了确定视口的大小,GPU驱动程序32或控制器36可基于第一图块中的图像内容的第一分辨率和第一图块的大小限定第一图块的视口。举例来说,GPU驱动程序32或控制器36可用第一图块的大小乘以第一图块中的图像内容的第一分辨率与全分辨率之间的比率以确定视口的大小。
渲染阶段电路58可基于视口的所确定的大小渲染第一图块的图像内容到本地存储器14(78)。举例来说,渲染阶段电路58可产生第一图块的图像内容,但是图像内容的大小可以是视口的大小并且不是图块的大小。本地存储器14可存储第一图块的图像内容。
GPU驱动程序32或控制器36可确定是否存在待渲染的更多图块(72)。如果存在待渲染的更多图块(72的是),那么GPU 12可重复这些操作但是用于不同图块。举例来说,GPU驱动程序32或控制器36可确定图像表面的第二图块包含具有第二分辨率的图像内容,并且渲染阶段电路58可以小于第二图块的大小的大小并且基于第二图块中的图像内容的第二分辨率渲染第二图块的图像内容。
然而,如果不存在待渲染的更多图块(72的否),那么上采样电路42可对图像内容进行上采样并且将图像内容输出到帧缓冲器66(80)。上采样电路42可基于图像分辨率进行上采样(例如,如果四分之一分辨率用于图块的图像内容,那么通过四对图像内容进行上采样)。在一些实例中,上采样电路42可进行上采样作为输出的一部分。在一些实例中,上采样电路42可首先对图块的全部的图像内容进行上采样,存储图像内容,并且随后将图像内容输出到帧缓冲器66。
以下是指示图形驱动程序32或控制器36可如何确定图块的图像分辨率的伪码:
float bin_scale(float fx,float fy,float gx,float gy,float w,floatbox_x,float box_y,float box_w,float box_h){
float xf1=(box_x-fx)*gx;
float xf2=(box_x_box_w-fx)*gx;
float yf1=(box_y-fy)*gy;
float yf2=(box_y+box_h-fy)*gy;
float xf3=0;
float yf3=0;
if(sign(xf1)==sign(xf2))xf3=mag_min(xf1,xf2);
if(sign(yf1)==sign(yf2))yf3=mag_min(yf1,yf2);
float pix_area=max(1,xf3*xf3+yf3*yf3+w);
return 1./sqrt(pix_area);
}
上述实例技术可提供注视点渲染的各种优点。在一些其它技术中,应用程序(如同应用程序22)可针对想要以不同分辨率渲染的每个区形成单独的帧缓冲器。应用程序可针对每个帧缓冲器确定不同的投影矩阵,并且针对这些帧缓冲器中的每一个产生命令缓冲器。应用程序可指示GPU驱动程序32将不同帧缓冲器位块传输成(例如,组合成一个)单个帧缓冲器中。GPU 12可随后执行帧缓冲器中的每一个的分区并且渲染这些帧缓冲器的图块的全部的图元。GPU 12可将较小帧缓冲器的每个图块输出到存储器10,并且随后GPU 12从存储器10从每个较小帧缓冲器读取回数据(或显示处理器16从每个较小帧缓冲器读取回数据)并且位块传输到较大帧缓冲器上的它们的区域。
然而,在上述技术中,应用程序22可能仅需要产生命令一次而非如同在其它技术中所需的针对每个帧缓冲器,这可以节省CPU 6的3倍工作负荷。并且,GPU 12可能仅需要执行分区一次且不依赖于不同投影矩阵,这与需要多个不同帧缓冲器的一些其它技术(例如,多个不同图像被渲染,从系统存储器10读取回,并且随后组合到一起)相比就顶点和图元处理工作负荷而言可以节省3倍。并且,在上述技术中,GPU 12并不需要将不同图像写出到系统存储器10并且随后读取回它们以用于组合,这可以节省功率和存储器带宽。
上文描述了执行注视点渲染的一个实例方式。然而,本发明中所描述的技术不限于此。
作为另一实例注视点技术,CPU 6和GPU 12可使用如同上文所描述的那些的类似技术以确定图元所属于的图块(例如,执行类似于上文的分区阶段)。在执行分区阶段之后,GPU 12可将整个表面的图像内容存储到由应用程序22限定的分辨率的最小分辨率。GPU 12可将整个图像上采样到中间分辨率(例如,从1/16分辨率变成1/4分辨率)。在此情况下整个图像表面的像素分辨率是1/4像素分辨率,但是图像分辨率是1/16。
对于需要在1/4图像分辨率渲染的图像表面的部分,CPU 6可限定剪刀区,并且GPU12可通过1/4像素分辨率渲染恰好在剪刀区内的部分。GPU 12可随后对所得的整个图像表面进行上采样。
在此情况下,将有一些部分具有1/16图像分辨率,并且其它部分具有1/4图像分辨率,但是整个图像将在全像素分辨率。CPU 6可确定是否存在将在全图像分辨率的任何部分,并且剪切那些区。GPU 12可在全像素分辨率渲染剪刀区的图像内容。因此,最后,将存在具有1/16图像分辨率的一些部分,其它部分具有1/4图像分辨率,并且其它部分具有全图像分辨率。通过这种方式,GPU 12可提供注视点渲染的另一实例方式。
本发明中所描述的技术可至少部分实施于硬件、软件、固件或其任何组合中。举例来说,所描述的技术的各种方面可在一或多个处理器内实施,包含一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA),或任何其它等效集成或离散逻辑电路,以及此类组件的任何组合。术语“处理器”或“处理电路”可大体上指代前述逻辑电路中的任一个(单独或结合其它逻辑电路)或例如执行处理的离散硬件的任何其它等效电路。
此类硬件、软件和固件可实施于同一装置内或单独装置内以支持本发明中所描述的各种操作和功能。另外,所描述的单元、模块或组件中的任一个可一起或单独作为离散但可互操作逻辑装置而实施。将不同特征描述为模块或单元意图强调不同功能方面并且未必暗示此类模块或单元必须由单独硬件或软件组件实现。实际上,与一或多个模块或单元相关联的功能性可由单独硬件、固件和/或软件组件执行,或集成到共用或单独硬件或软件组件内。
本发明中所描述的技术也可存储、实施或编码于计算机可读媒体(例如,存储指令的计算机可读存储媒体)中。嵌入或编码于计算机可读媒体中的指令可使得一或多个处理器执行本文中所描述的技术,例如,当由一或多个处理器执行指令时。计算机可读存储媒体可包含随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器、硬盘、CD-ROM、软盘、卡盒、磁性媒体、光学媒体或其它有形的计算机可读存储媒体。
已描述各种方面和实例。然而,可在不脱离所附权利要求书的范围的情况下对本发明的结构或技术作出修改。
Claims (24)
1.一种注视点渲染的方法,所述方法包括:
在分区阶段期间,将图像表面划分成多个图块,其中,所述图像表面的图像内容将在渲染阶段期间被渲染;
确定所述图像表面的所述多个图块中的第一图块将包含具有第一分辨率的图像内容,其中所述第一分辨率小于所述图像表面的所述多个图块中的其它图块的第二分辨率;
确定渲染所述第一图块的图像内容采取的大小,其中,渲染所述第一图块的所述图像内容采取的大小是基于所述第一图块的所述图像内容的所述第一分辨率的,其中,渲染所述图像内容所采取的大小小于所述第一图块的大小,并且其中,所述第一图块的所述图像内容是所述图像表面的图像内容的一部分,所述图像表面在所述分区阶段被划分,并且所述图像内容将在所述渲染阶段被渲染;
在所述渲染阶段期间,以小于所述第一图块的大小的所确定的大小并且基于所述第一图块中的所述图像内容的所述第一分辨率渲染所述第一图块的所述图像内容,其中,针对整个所述第一图块渲染的所述图像内容覆盖小于整个所述第一图块,其中,针对整个所述第一图块渲染的所述图像内容不与任何其它图块的图像内容重叠,其中,渲染所述图像内容包括将所述第一图块的所述图像内容渲染到存储器的一部分,其中,所述存储器的所述部分小于用于所述第一图块的整个存储器,并且其中,所渲染的图像内容的大小小于整个所述第一图块的大小;
对所述第一图块中的所述图像内容进行上采样以产生经上采样的图像内容;
基于所述第一图块中的所述经上采样的图像内容对所述经上采样的图像内容进行内插,以产生经内插的图像内容;以及
输出所述经内插的图像内容。
2.根据权利要求1所述的方法,其进一步包括:
基于所述第一图块中的所述图像内容的所述第一分辨率和所述第一图块的所述大小限定所述第一图块的视口,
其中以小于所述第一图块的所述大小的所述大小渲染所述第一图块的所述图像内容包括基于所述第一图块的限定的所述视口渲染所述图像内容。
3.根据权利要求2所述的方法,其中限定所述视口包括:
用所述第一图块的所述大小乘以所述第一图块中的所述图像内容的所述第一分辨率与所述图像内容的全分辨率之间的比率以确定所述视口的大小。
4.根据权利要求1所述的方法,其进一步包括:
确定所述图像表面的不同部分的分辨率;以及
在所述分区阶段期间,并且在所述渲染之前,确定所述图像表面的图元的哪些顶点属于所述第一图块,
其中确定所述图像表面的所述第一图块将包含具有所述第一分辨率的图像内容包括基于所述图像表面的不同部分的分辨率的所述确定和所述图像表面的哪些顶点属于所述第一图块的所述确定来确定所述图像表面的所述第一图块将包含具有所述第一分辨率的图像内容。
5.根据权利要求4所述的方法,其进一步包括:
接收指示所述图像表面的不同部分的所述分辨率的信息,
其中确定所述图像表面的不同部分的分辨率包括基于所述接收到的信息确定所述图像表面的不同部分的分辨率。
6.根据权利要求1所述的方法,其中对所述图像内容进行上采样包括上采样作为所述经上采样的图像内容的所述输出的一部分。
7.根据权利要求1所述的方法,其中所述经上采样的图像内容包括第一经上采样的图像内容,所述方法进一步包括:
确定所述图像表面的第二图块将包含具有所述第二分辨率的图像内容;
以小于所述第二图块的所述大小的大小并且基于所述第二图块中的所述图像内容的所述第二分辨率渲染所述第二图块的所述图像内容;
对所述第二图块中的所述图像内容进行上采样以产生第二经上采样的图像内容;以及
输出所述第二经上采样的图像内容。
8.根据权利要求7所述的方法,其中对所述第一图块中的所述图像内容进行上采样并且输出所述第一经上采样的图像内容包括对所述第一图块中的所述图像内容进行上采样并且在渲染所述第二图块的所述图像内容之后输出所述第一经上采样的图像内容。
9.根据权利要求1所述的方法,其进一步包括显示所述经上采样的图像内容。
10.一种用于注视点渲染的装置,所述装置包括:
系统存储器;以及
图形处理单元GPU,其包括可编程或固定功能电路中的至少一个,其中所述GPU经配置以:
在分区阶段期间,将图像表面划分成多个图块,其中,所述图像表面的图像内容将在渲染阶段期间被渲染;
确定所述图像表面的所述多个图块中的第一图块将包含具有第一分辨率的图像内容,其中所述第一分辨率小于所述图像表面的所述多个图块中的其它图块的第二分辨率;
确定渲染所述第一图块的图像内容采取的大小,其中,渲染所述第一图块的所述图像内容采取的大小是基于所述第一图块的所述图像内容的所述第一分辨率的,其中,渲染所述图像内容所采取的大小小于所述第一图块的大小,并且其中,所述第一图块的所述图像内容是所述图像表面的图像内容的一部分,所述图像表面在所述分区阶段被划分,并且所述图像内容将在所述渲染阶段被渲染;
在所述渲染阶段期间,以小于所述第一图块的大小的所确定的大小并且基于所述第一图块中的所述图像内容的所述第一分辨率渲染所述第一图块的所述图像内容,其中,针对整个所述第一图块渲染的所述图像内容覆盖小于整个所述第一图块,其中,针对整个所述第一图块渲染的所述图像内容不与任何其它图块的图像内容重叠,其中,为了渲染所述图像内容,所述GPU被配置为将所述第一图块的所述图像内容渲染到用于所述GPU的存储器的一部分,其中,用于所述GPU的所述存储器的所述部分小于用于所述第一图块的整个存储器,并且其中,所渲染的图像内容的大小小于整个所述第一图块的大小;
对所述第一图块中的所述图像内容进行上采样以产生经上采样的图像内容;
基于所述第一图块中的所述经上采样的图像内容对所述经上采样的图像内容进行内插,以产生经内插的图像内容;以及
输出所述经内插的图像内容以供存储在所述系统存储器中。
11.根据权利要求10所述的装置,其进一步包括经配置以基于所述第一图块中的所述图像内容的所述第一分辨率和所述第一图块的所述大小限定所述第一图块的视口的处理器,
其中为了以小于所述第一图块的所述大小的所述大小渲染所述第一图块的所述图像内容,所述GPU经配置以基于所述第一图块的限定的所述视口渲染所述图像内容。
12.根据权利要求11所述的装置,其中为了限定所述视口,所述处理器经配置以用所述第一图块的所述大小乘以所述第一图块中的所述图像内容的所述第一分辨率与所述图像内容的全分辨率之间的比率以确定所述视口的大小。
13.根据权利要求10所述的装置,其进一步包括经配置以确定所述图像表面的不同部分的分辨率的处理器,
其中所述GPU经配置以在所述分区阶段期间并且在所述渲染之前确定所述图像表面的图元的哪些顶点属于所述第一图块,
其中为了确定所述图像表面的所述第一图块将包含具有所述第一分辨率的图像内容,所述GPU经配置以基于所述图像表面的不同部分的分辨率的所述确定和所述图像表面的哪些顶点属于所述第一图块的所述确定来确定所述图像表面的所述第一图块将包含具有所述第一分辨率的图像内容。
14.根据权利要求13所述的装置,其中所述GPU经配置以接收指示所述图像表面的不同部分的所述分辨率的信息,
其中为了确定所述图像表面的不同部分的分辨率,所述GPU经配置以基于所述接收到的信息确定所述图像表面的不同部分的分辨率。
15.根据权利要求10所述的装置,其中为了进行上采样,所述GPU经配置以对所述图像内容进行上采样作为输出所述经上采样的图像内容的一部分。
16.根据权利要求10所述的装置,其中所述经上采样的图像内容包括第一经上采样的图像内容,并且其中所述GPU经配置以:
确定所述图像表面的第二图块将包含具有所述第二分辨率的图像内容;
以小于所述第二图块的所述大小的大小并且基于所述第二图块中的所述图像内容的所述第二分辨率渲染所述第二图块的所述图像内容;
对所述第二图块中的所述图像内容进行上采样以产生第二经上采样的图像内容;以及
输出所述第二经上采样的图像内容。
17.根据权利要求16所述的装置,其中为了对所述第一图块中的所述图像内容进行上采样并且输出所述第一经上采样的图像内容,所述GPU经配置以对所述第一图块中的所述图像内容进行上采样并且在渲染所述第二图块的所述图像内容之后输出所述第一经上采样的图像内容。
18.根据权利要求10所述的装置,其进一步包括经配置以将所述经上采样的图像内容输出到显示器的显示处理器。
19.一种用于注视点渲染的装置,所述装置包括:
用于在分区阶段期间,将图像表面划分成多个图块的装置,其中,所述图像表面的图像内容将在渲染阶段期间被渲染;
用于确定所述图像表面的所述多个图块中的第一图块将包含具有第一分辨率的图像内容的装置,其中所述第一分辨率小于所述图像表面的所述多个图块中的其它图块的第二分辨率;
用于确定渲染所述第一图块的图像内容采取的大小的单元,其中,渲染所述第一图块的所述图像内容采取的大小是基于所述第一图块的所述图像内容的所述第一分辨率的,其中,渲染所述图像内容所采取的大小小于所述第一图块的大小,并且其中,所述第一图块的所述图像内容是所述图像表面的图像内容的一部分,所述图像表面在所述分区阶段被划分,并且所述图像内容将在所述渲染阶段被渲染;
用于在所述渲染阶段期间,以小于所述第一图块的大小的所确定的大小并且基于所述第一图块中的所述图像内容的所述第一分辨率渲染所述第一图块的所述图像内容的装置,其中,针对整个所述第一图块渲染的所述图像内容覆盖小于整个所述第一图块,其中,针对整个所述第一图块渲染的所述图像内容不与任何其它图块的图像内容重叠,其中,用于渲染所述图像内容的装置包括用于将所述第一图块的所述图像内容渲染到存储器的一部分的装置,其中,所述存储器的所述部分小于用于所述第一图块的整个存储器,并且其中,所渲染的图像内容的大小小于整个所述第一图块的大小;
用于对所述第一图块中的所述图像内容进行上采样以产生经上采样的图像内容的装置;
用于基于所述第一图块中的所述经上采样的图像内容对所述经上采样的图像内容进行内插,以产生经内插的图像内容的装置;以及
用于输出所述经内插的图像内容的装置。
20.根据权利要求19所述的装置,其进一步包括:
用于基于所述第一图块中的所述图像内容的所述第一分辨率和所述第一图块的所述大小限定所述第一图块的视口的装置,
其中所述用于以小于所述第一图块的所述大小的所述大小渲染所述第一图块的所述图像内容的装置包括用于基于所述第一图块的限定的所述视口渲染所述图像内容的装置。
21.根据权利要求19所述的装置,其进一步包括:
用于确定所述图像表面的不同部分的分辨率的装置;以及
用于在所述分区阶段期间并且在所述渲染之前确定所述图像表面的图元的哪些顶点属于第一图块的装置,
其中所述用于确定所述图像表面的所述第一图块将包含具有所述第一分辨率的图像内容的装置包括用于基于所述图像表面的不同部分的分辨率的所述确定和所述图像表面的哪些顶点属于所述第一图块的所述确定来确定所述图像表面的所述第一图块将包含具有所述第一分辨率的图像内容的装置。
22.根据权利要求19所述的装置,其中所述用于输出的装置包括所述用于上采样的装置。
23.一种上面存储有指令的计算机可读存储媒体,所述指令在被执行时使得用于注视点渲染的装置的一或多个处理器:
在分区阶段期间,将图像表面划分成多个图块,其中,所述图像表面的图像内容将在渲染阶段期间被渲染;
确定所述图像表面的所述多个图块中的第一图块将包含具有第一分辨率的图像内容,其中所述第一分辨率小于所述图像表面的所述多个图块中的其它图块的第二分辨率;
确定渲染所述第一图块的图像内容采取的大小,其中,渲染所述第一图块的所述图像内容采取的大小是基于所述第一图块的所述图像内容的所述第一分辨率的,其中,渲染所述图像内容所采取的大小小于所述第一图块的大小,并且其中,所述第一图块的所述图像内容是所述图像表面的图像内容的一部分,所述图像表面在所述分区阶段被划分,并且所述图像内容将在所述渲染阶段被渲染;
在所述渲染阶段期间,以小于所述第一图块的大小的所确定的大小并且基于所述第一图块中的所述图像内容的所述第一分辨率渲染所述第一图块的所述图像内容,其中,针对整个所述第一图块渲染的所述图像内容覆盖小于整个所述第一图块,其中,针对整个所述第一图块渲染的所述图像内容不与任何其它图块的图像内容重叠,其中,使得所述一或多个处理器渲染所述图像内容的指令包括使得所述一或多个处理器进行以下操作的指令:将所述第一图块的所述图像内容渲染到存储器的一部分,其中,所述存储器的所述部分小于用于所述第一图块的整个存储器,并且其中,所渲染的图像内容的大小小于整个所述第一图块的大小;
对所述第一图块中的所述图像内容进行上采样以产生经上采样的图像内容;
基于所述第一图块中的所述经上采样的图像内容对所述经上采样的图像内容进行内插,以产生经内插的图像内容;以及
输出所述经内插的图像内容。
24.根据权利要求23所述的计算机可读存储媒体,其进一步包括使得所述一或多个处理器进行以下操作的指令:
基于所述第一图块中的所述图像内容的所述第一分辨率和所述第一图块的所述大小限定所述第一图块的视口,
其中使得所述一或多个处理器以小于所述第一图块的所述大小的所述大小渲染所述第一图块的所述图像内容的所述指令包括使得所述一或多个处理器基于所述第一图块的限定的所述视口渲染所述图像内容的指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/390,333 | 2016-12-23 | ||
US15/390,333 US11222397B2 (en) | 2016-12-23 | 2016-12-23 | Foveated rendering in tiled architectures |
PCT/US2017/057915 WO2018118203A1 (en) | 2016-12-23 | 2017-10-23 | Foveated rendering in tiled architectures |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110036413A CN110036413A (zh) | 2019-07-19 |
CN110036413B true CN110036413B (zh) | 2023-06-02 |
Family
ID=60268488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780073414.9A Active CN110036413B (zh) | 2016-12-23 | 2017-10-23 | 平铺架构中的注视点渲染 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11222397B2 (zh) |
EP (1) | EP3559914B1 (zh) |
KR (1) | KR102475212B1 (zh) |
CN (1) | CN110036413B (zh) |
AU (1) | AU2017382489A1 (zh) |
BR (1) | BR112019012641B1 (zh) |
WO (1) | WO2018118203A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
GB2553744B (en) | 2016-04-29 | 2018-09-05 | Advanced Risc Mach Ltd | Graphics processing systems |
GB2572625B (en) * | 2018-04-05 | 2020-06-17 | Imagination Tech Ltd | Ordering in tessellation operations |
GB2573543B (en) * | 2018-05-09 | 2021-10-27 | Advanced Risc Mach Ltd | Graphics Processing |
US10937126B2 (en) * | 2018-05-17 | 2021-03-02 | Intel Corporation | Tile-based multiple resolution rendering of images |
EP3598391B1 (en) * | 2018-07-16 | 2023-09-06 | Huawei Technologies Co., Ltd. | Variable resolution rendering |
US10796478B2 (en) | 2018-09-26 | 2020-10-06 | Qualcomm Incorporated | Dynamic rendering for foveated rendering |
WO2020140063A1 (en) * | 2018-12-27 | 2020-07-02 | Futurewei Technologies, Inc. | Flexible tile signaling in video coding |
MX2021007926A (es) * | 2018-12-28 | 2021-10-22 | Huawei Tech Co Ltd | Un codificador de video, un decodificador de video y metodos correspondientes. |
WO2020238749A1 (zh) | 2019-05-30 | 2020-12-03 | 阿里巴巴集团控股有限公司 | 栅格数据访问方法、装置、电子设备及计算机存储介质 |
BR112022001434A2 (pt) * | 2019-07-28 | 2022-06-07 | Google Llc | Métodos, sistemas e mídia para renderizar conteúdo de vídeo imersivo com malhas otimizadas |
US11030783B1 (en) | 2020-01-21 | 2021-06-08 | Arm Limited | Hidden surface removal in graphics processing systems |
US11049216B1 (en) * | 2020-01-21 | 2021-06-29 | Arm Limited | Graphics processing systems |
US11600002B2 (en) * | 2020-06-03 | 2023-03-07 | Qualcomm Incorporated | Bin filtering |
CN113726950B (zh) * | 2021-06-10 | 2022-08-02 | 荣耀终端有限公司 | 一种图像处理方法和电子设备 |
US11893654B2 (en) * | 2021-07-12 | 2024-02-06 | Qualcomm Incorporated | Optimization of depth and shadow pass rendering in tile based architectures |
CN116263982B (zh) * | 2022-04-20 | 2023-10-20 | 象帝先计算技术(重庆)有限公司 | 图形处理器、系统、方法、电子装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750725A (zh) * | 2012-06-05 | 2012-10-24 | 南京安讯网络服务有限公司 | 基于图形处理器加速的地形渲染方法 |
CN104169974A (zh) * | 2012-03-15 | 2014-11-26 | 高通股份有限公司 | 图形处理单元中基于可见性的状态更新 |
CN104679509A (zh) * | 2015-02-06 | 2015-06-03 | 腾讯科技(深圳)有限公司 | 一种渲染图形的方法和装置 |
CN105676470A (zh) * | 2016-03-24 | 2016-06-15 | 清华大学 | 一种三维场景的视觉上的空间分辨率增强方法及系统 |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682441A (en) | 1995-11-08 | 1997-10-28 | Storm Technology, Inc. | Method and format for storing and selectively retrieving image data |
US6643666B1 (en) * | 1998-02-26 | 2003-11-04 | James J. Kernz | Apparatus and method for accessing a coin image compilation |
US6366899B1 (en) * | 1998-02-26 | 2002-04-02 | James J. Kernz | Apparatus and method for accessing a coin image compilation |
US7075535B2 (en) * | 2003-03-05 | 2006-07-11 | Sand Codex | System and method for exact rendering in a zooming user interface |
US7567241B2 (en) | 2004-08-03 | 2009-07-28 | Silverbrook Research Pty Ltd | Stylus with customizable appearance |
US20060075034A1 (en) | 2004-09-24 | 2006-04-06 | Harri Lakkala | Method and apparatus for creating and storing personal information relating to earth shaking events |
US9384619B2 (en) | 2006-07-31 | 2016-07-05 | Ricoh Co., Ltd. | Searching media content for objects specified using identifiers |
US7933632B2 (en) * | 2005-09-16 | 2011-04-26 | Microsoft Corporation | Tile space user interface for mobile devices |
US8619083B2 (en) | 2009-01-06 | 2013-12-31 | Microsoft Corporation | Multi-layer image composition with intermediate blending resolutions |
US8385669B2 (en) * | 2009-03-04 | 2013-02-26 | Microsoft Corporation | Scalable mutable tiled multi-resolution texture atlases |
US20100229115A1 (en) | 2009-03-05 | 2010-09-09 | Microsoft Corporation | Zoomable user interface data generation |
US20110087737A1 (en) | 2009-10-14 | 2011-04-14 | Cbs Interactive, Inc. | Systems and methods for living user reviews |
CN102667864B (zh) | 2009-10-26 | 2015-06-03 | 索尼计算机娱乐公司 | 图像文件生成装置、图像处理装置、图像文件生成方法、图像处理方法 |
US20110173570A1 (en) * | 2010-01-13 | 2011-07-14 | Microsoft Corporation | Data feeds with peripherally presented interesting content |
US8957920B2 (en) * | 2010-06-25 | 2015-02-17 | Microsoft Corporation | Alternative semantics for zoom operations in a zoomable scene |
US8549425B2 (en) * | 2010-12-02 | 2013-10-01 | Sony Corporation | Visual treatment for a user interface in a content integration framework |
US9690099B2 (en) | 2010-12-17 | 2017-06-27 | Microsoft Technology Licensing, Llc | Optimized focal area for augmented reality displays |
US20140086309A1 (en) | 2011-06-16 | 2014-03-27 | Freescale Semiconductor, Inc. | Method and device for encoding and decoding an image |
US20130016128A1 (en) * | 2011-07-13 | 2013-01-17 | Apple Inc. | Tiled Zoom of Multiple Digital Image Portions |
JP5792607B2 (ja) * | 2011-12-09 | 2015-10-14 | 株式会社ソニー・コンピュータエンタテインメント | 画像処理装置および画像処理方法 |
US9727991B2 (en) * | 2013-03-01 | 2017-08-08 | Microsoft Technology Licensing, Llc | Foveated image rendering |
US20140267616A1 (en) | 2013-03-15 | 2014-09-18 | Scott A. Krig | Variable resolution depth representation |
US9830714B2 (en) | 2014-06-27 | 2017-11-28 | Samsung Electronics Co., Ltd. | Graphics processing with advection to reconstruct missing sample data points |
KR102327144B1 (ko) * | 2014-11-26 | 2021-11-16 | 삼성전자주식회사 | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법 |
US20160212423A1 (en) | 2015-01-16 | 2016-07-21 | Microsoft Technology Licensing, Llc | Filtering to mitigate artifacts when changing chroma sampling rates |
US10152764B2 (en) * | 2015-03-24 | 2018-12-11 | Intel Corporation | Hardware based free lists for multi-rate shader |
US10037620B2 (en) * | 2015-05-29 | 2018-07-31 | Nvidia Corporation | Piecewise linear irregular rasterization |
US10210844B2 (en) * | 2015-06-29 | 2019-02-19 | Microsoft Technology Licensing, Llc | Holographic near-eye display |
JP6821646B2 (ja) | 2015-07-17 | 2021-01-27 | マジック リープ, インコーポレイテッドMagic Leap,Inc. | 動的領域分解能を有する仮想/拡張現実システム |
US9807416B2 (en) | 2015-09-21 | 2017-10-31 | Google Inc. | Low-latency two-pass video coding |
KR102454893B1 (ko) * | 2015-09-30 | 2022-10-14 | 삼성전자주식회사 | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치의 동작 방법 |
US10726619B2 (en) * | 2015-10-29 | 2020-07-28 | Sony Interactive Entertainment Inc. | Foveated geometry tessellation |
US11010956B2 (en) * | 2015-12-09 | 2021-05-18 | Imagination Technologies Limited | Foveated rendering |
US10643296B2 (en) * | 2016-01-12 | 2020-05-05 | Qualcomm Incorporated | Systems and methods for rendering multiple levels of detail |
US10157448B2 (en) * | 2016-02-12 | 2018-12-18 | Qualcomm Incorporated | Foveated video rendering |
US10192528B2 (en) * | 2016-03-31 | 2019-01-29 | Sony Interactive Entertainment Inc. | Real-time user adaptive foveated rendering |
US10401952B2 (en) * | 2016-03-31 | 2019-09-03 | Sony Interactive Entertainment Inc. | Reducing rendering computation and power consumption by detecting saccades and blinks |
US10169846B2 (en) * | 2016-03-31 | 2019-01-01 | Sony Interactive Entertainment Inc. | Selective peripheral vision filtering in a foveated rendering system |
US10255714B2 (en) * | 2016-08-24 | 2019-04-09 | Disney Enterprises, Inc. | System and method of gaze predictive rendering of a focal area of an animation |
US20180082464A1 (en) * | 2016-09-16 | 2018-03-22 | Tomas G. Akenine-Moller | Apparatus and method for an efficient 3d graphics pipeline |
US10379611B2 (en) * | 2016-09-16 | 2019-08-13 | Intel Corporation | Virtual reality/augmented reality apparatus and method |
US10147166B2 (en) * | 2016-09-23 | 2018-12-04 | Apple Inc. | Methods and systems for spatially localized image editing |
US10262387B2 (en) * | 2016-11-14 | 2019-04-16 | Google Llc | Early sub-pixel rendering |
US20180137602A1 (en) * | 2016-11-14 | 2018-05-17 | Google Inc. | Low resolution rgb rendering for efficient transmission |
US10453271B2 (en) * | 2016-12-07 | 2019-10-22 | Microsoft Technology Licensing, Llc | Automated thumbnail object generation based on thumbnail anchor points |
US10298840B2 (en) | 2017-01-31 | 2019-05-21 | Microsoft Technology Licensing, Llc | Foveated camera for video augmented reality and head mounted display |
US10565964B2 (en) | 2017-04-24 | 2020-02-18 | Intel Corporation | Display bandwidth reduction with multiple resolutions |
CN110770796B (zh) | 2017-06-05 | 2024-03-15 | 谷歌有限责任公司 | 平稳变化的中央凹型渲染 |
US10504272B2 (en) | 2017-06-13 | 2019-12-10 | Intel Corporation | Apparatus and method for optimizing time/space warp for virtual reality using dynamic tiling and dirty tile marking |
US10580151B2 (en) | 2017-12-05 | 2020-03-03 | Qualcomm Incorporated | Tile-based low-resolution depth storage |
-
2016
- 2016-12-23 US US15/390,333 patent/US11222397B2/en active Active
-
2017
- 2017-10-23 EP EP17794859.3A patent/EP3559914B1/en active Active
- 2017-10-23 WO PCT/US2017/057915 patent/WO2018118203A1/en unknown
- 2017-10-23 CN CN201780073414.9A patent/CN110036413B/zh active Active
- 2017-10-23 BR BR112019012641-4A patent/BR112019012641B1/pt active IP Right Grant
- 2017-10-23 KR KR1020197017666A patent/KR102475212B1/ko active IP Right Grant
- 2017-10-23 AU AU2017382489A patent/AU2017382489A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104169974A (zh) * | 2012-03-15 | 2014-11-26 | 高通股份有限公司 | 图形处理单元中基于可见性的状态更新 |
CN102750725A (zh) * | 2012-06-05 | 2012-10-24 | 南京安讯网络服务有限公司 | 基于图形处理器加速的地形渲染方法 |
CN104679509A (zh) * | 2015-02-06 | 2015-06-03 | 腾讯科技(深圳)有限公司 | 一种渲染图形的方法和装置 |
CN105676470A (zh) * | 2016-03-24 | 2016-06-15 | 清华大学 | 一种三维场景的视觉上的空间分辨率增强方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3559914A1 (en) | 2019-10-30 |
BR112019012641A8 (pt) | 2023-04-04 |
EP3559914C0 (en) | 2023-10-18 |
BR112019012641B1 (pt) | 2024-02-15 |
US11222397B2 (en) | 2022-01-11 |
CN110036413A (zh) | 2019-07-19 |
EP3559914B1 (en) | 2023-10-18 |
AU2017382489A1 (en) | 2019-05-23 |
KR102475212B1 (ko) | 2022-12-06 |
KR20190100194A (ko) | 2019-08-28 |
WO2018118203A1 (en) | 2018-06-28 |
US20180182066A1 (en) | 2018-06-28 |
BR112019012641A2 (pt) | 2019-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110036413B (zh) | 平铺架构中的注视点渲染 | |
US10885607B2 (en) | Storage for foveated rendering | |
US10867434B2 (en) | Variable rate shading | |
US20170293995A1 (en) | Per-vertex variable rate shading | |
EP3180773B1 (en) | Bandwidth reduction using texture lookup by adaptive shading | |
CN106296565B (zh) | 图形管线方法和设备 | |
US20190035049A1 (en) | Dithered variable rate shading | |
US20160171644A1 (en) | Processing unaligned block transfer operations | |
CN109564694B (zh) | 用于基于入库的图形处理的顶点着色器 | |
US9280956B2 (en) | Graphics memory load mask for graphics processing | |
US10580151B2 (en) | Tile-based low-resolution depth storage | |
US9646359B2 (en) | Indefinite texture filter size for graphics processing | |
EP3178061A1 (en) | High order filtering in a graphics processing unit | |
WO2016022282A1 (en) | High order filtering in a graphics processing unit |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40005543 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |