CN116888632A - 使用着色图谱的分割渲染中的错误隐藏 - Google Patents
使用着色图谱的分割渲染中的错误隐藏 Download PDFInfo
- Publication number
- CN116888632A CN116888632A CN202280016565.1A CN202280016565A CN116888632A CN 116888632 A CN116888632 A CN 116888632A CN 202280016565 A CN202280016565 A CN 202280016565A CN 116888632 A CN116888632 A CN 116888632A
- Authority
- CN
- China
- Prior art keywords
- patch
- slice
- client device
- map
- error
- 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
- 238000009877 rendering Methods 0.000 title claims abstract description 87
- 230000011218 segmentation Effects 0.000 title description 2
- 238000012545 processing Methods 0.000 claims abstract description 98
- 238000000034 method Methods 0.000 claims description 125
- 230000015654 memory Effects 0.000 claims description 65
- 230000003190 augmentative effect Effects 0.000 claims description 14
- 238000003672 processing method Methods 0.000 claims 1
- 238000010186 staining Methods 0.000 abstract description 2
- 238000004040 coloring Methods 0.000 description 69
- 230000006870 function Effects 0.000 description 20
- 230000005540 biological transmission Effects 0.000 description 19
- 239000000872 buffer Substances 0.000 description 19
- 230000008569 process Effects 0.000 description 19
- 230000008859 change Effects 0.000 description 13
- 230000008901 benefit Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008520 organization Effects 0.000 description 8
- 238000001228 spectrum Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000000873 masking effect Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- NUHSROFQTUXZQQ-UHFFFAOYSA-N isopentenyl diphosphate Chemical group CC(=C)CCO[P@](O)(=O)OP(O)(O)=O NUHSROFQTUXZQQ-UHFFFAOYSA-N 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 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/50—Lighting effects
- G06T15/80—Shading
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
- A63F13/525—Changing parameters of virtual cameras
- A63F13/5255—Changing parameters of virtual cameras according to dedicated instructions from a player, e.g. using a secondary joystick to rotate the camera around a player's character
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/355—Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
- G02B27/0172—Head mounted characterised by optical features
-
- 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
- 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
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/77—Retouching; Inpainting; Scratch removal
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Optics & Photonics (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
分割渲染图形处理架构的客户端设备接收当前帧的经编码的着色图谱。经编码的着色图谱由切片表征。客户端解码接收到的经编码的着色图谱并识别未成功解码的切片。客户端然后确定经解码的着色图谱的每个面片是否与所识别的未成功解码的切片相交。客户端针对每个相交面片确定每个相交面片的先前有效版本是否被存储在客户端设备处。客户端用对应的先前有效版本对具有被存储在客户端设备处的先前有效版本的每个相交面片进行错误隐藏,以创建经错误隐藏的图谱。客户端使用经错误隐藏的图谱来渲染当前帧。
Description
相关申请的交叉引用
本申请要求享有于2021年3月3日提交的题为“ERROR CONCEALMENT IN SPLITRENDERING USING SHADING ATLASES”的美国专利申请序列号No.17/190,758的权益,其全部内容通过引用的方式明确地并入本文。
技术领域
本公开内容总体上涉及处理系统,并且更具体而言,涉及用于图形处理的一种或多种技术。
背景技术
计算设备通常利用图形处理单元(GPU)来加速对用于显示的图形数据的渲染。这样的计算设备可以包括:例如,计算机工作站、诸如所谓的智能电话的移动电话、嵌入式系统、个人计算机、平板计算机和视频游戏机。GPU执行图形处理管线,所述图形处理管线包括一起操作以执行图形处理命令并输出帧的一个或多个处理级。中央处理单元(CPU)可以通过向GPU发出一个或多个图形处理命令来控制GPU的操作。现代CPU通常能够并发地执行多个应用,每个应用可能需要在执行期间利用GPU。提供用于在显示器上视觉呈现的内容的设备通常包括GPU。
通常,设备的GPU被配置为执行图形处理管线中的过程。然而,随着无线通信和更小的手持设备的出现,对改进的图形处理的需求增加。
发明内容
以下呈现一个或多个方面的简化概述以提供对这些方面的基本理解。本概述不是对所有预期方面的广泛综述,既不旨在标识所有方面的关键要素,也不是描述任何方面或全部方面的范围。其唯一目的是以简化形式呈现一个或多个方面的一些概念,作为稍后呈现的更详细描述的序言。
在本文公开的技术的方面中,提供了方法、计算机可读介质和装置。分割(split)渲染图形处理架构的客户端设备接收当前帧的经编码的着色图谱(shading atlas)。经编码的着色图谱由切片(slice)表征。客户端解码接收到的经编码的着色图谱,并识别未成功解码的切片。客户端然后确定经解码的着色图谱的每个面片(patch)是否与所识别的未成功解码的切片相交。客户端针对每个相交面片,确定每个相交面片的先前有效版本是否被存储在客户端设备处。客户端用对应的先前有效版本对具有被存储在客户端设备处的先前有效版本的每个相交面片进行错误隐藏,以创建经错误隐藏的图谱。客户端使用经错误隐藏的图谱来渲染当前帧。
在一些示例中,客户端设备累积列表,该列表包括:着色图谱的每个面片的面片标识符,以及与每个面片标识符相对应的面片在着色图谱中的位置。在这样的示例中,确定经解码的着色图谱的每个面片是否与未成功解码的切片相交是基于累积的列表的。
在一些示例中,客户端设备指示与被确定为不对应于先前有效版本的相交面片相对应的、经错误隐藏的图谱的每个区域。在这样的示例中,渲染当前帧进一步包括:使用针对每个所指示的区域的修补(in-painting)来进行渲染。
在一些示例中,相交面片的先前有效版本是用于渲染紧接在前的帧的相交面片的版本。在一些示例中,客户端设备是用于扩展现实(XR)应用、增强现实(AR)应用或虚拟现实(VR)应用的客户端设备。在一些示例中,客户端设备是云辅助游戏架构中的客户端设备。在一些这样的示例中,客户端设备是头显、手持机、多媒体控制台或头戴式显示器(HMD)。
在一些示例中,客户端基于与被确定为与至少一个所识别的未成功解码的切片相交的面片相对应的每个经错误隐藏的面片,来生成针对所述至少一个所识别的未成功解码的切片的替换切片。在这样的示例中,基于替换切片对后续帧的经编码的着色图谱进行解码。
在附图和以下描述中阐述本公开内容的一个或多个示例的细节。根据说明书和附图以及权利要求书,本公开内容的其他特征、目的和优点将是显而易见的。
附图说明
图1是示出根据本公开内容的一种或多种技术的示例内容生成系统的方框图。
图2A示出了根据本公开内容的一种或多种技术的示例着色图谱。
图2B图示了根据本公开内容的一种或多种技术的示例着色图谱组织。
图3示出了根据本公开内容的一种或多种技术的包括客户端设备与服务器之间的通信的示例示意图。
图4示出了根据本公开内容的一种或多种技术的包括客户端设备与服务器之间的通信的示例示意图。
图5示出了根据本公开内容的一种或多种技术,用于分割渲染图形处理中的客户端设备处的图谱错误隐藏的示例架构。
图6是根据本公开内容的一种或多种技术的图形处理的示例方法的流程图。
图7是根据本公开内容的一种或多种技术的图形处理的示例方法的流程图。
图8是根据本公开内容的一种或多种技术的图形处理的示例方法的流程图。
图9是根据本公开内容的一种或多种技术的图形处理的示例方法的流程图。
具体实施方式
矢量流传输系统可以利用可在服务器和客户端设备之间传输的着色图谱,着色图谱包括面片(也称为“块”)。此外,经编码的着色图谱视频流的一些分组可能在传输期间被丢弃或未被准确地接收。作为传输协议中丢弃的分组的结果,经解码的着色图谱的一个或多个切片可能被损坏。此处使用“切片”来标识一个帧中的、与同一帧中任何其他区域分开编码的空间上不同的区域。在一些实例中,视频解码器具有标记被认为不可靠或损坏的输出切片的能力。被标记的损坏切片可以包括着色图谱面片的已知子集。视频传输系统的一些方面可以提供对网络行为的一定程度的弹性,诸如网络上的分组丢失和/或增加的延迟。此外,与其他系统相比,矢量流传输传输系统中流传输的视频可以具有不同的属性。本公开内容的各方面可以包括用于矢量流传输系统的错误隐藏算法。在一些这样的方面中,当前着色图谱的丢失的面片可以使用该丢失的面片的先前成功接收的版本(在一些示例中,来自先前着色图谱)来进行替换。在本申请全文中,词语“面片”用于描述在着色图谱组织阶段处被独立操纵的最小信息单元。在本文公开的技术领域的其他地方,也使用词语“块”。
在下文中参考附图更全面地描述了系统、装置、计算机程序产品和方法的各个方面。然而,本公开内容可以以许多不同的形式来体现,并且不应当被解释为限于贯穿本公开内容给出的任何特定结构或功能。相反,提供这些方面使得本公开内容将是透彻和完整的,并且将向本领域技术人员充分传达本公开内容的范围。基于本文的教导,本领域技术人员应当理解,本公开内容的范围旨在覆盖本文公开的系统、装置、计算机程序产品和方法的任何方面,无论其是独立于本公开内容的其他方面实施的还是与本公开内容的其他方面组合实施的。例如,可以使用本文阐述的任何数量的方面来实施装置或实践方法。另外,本公开内容的范围旨在覆盖使用除了本文所阐述的本公开内容的各个方面之外或不同于本文所阐述的本公开内容的各个方面的其他结构、功能或者结构和功能来实践的这种装置或方法。本文公开的任何方面可以由权利要求的一个或多个要素来体现。
尽管本文描述了各个方面,但是这些方面的许多变型和排列落入本公开内容的范围内。尽管提及了本公开内容的各方面的一些潜在益处和优点,但是本公开内容的范围不旨在限于特定益处、用途或目标。相反,本公开内容的各方面旨在广泛地适用于不同的无线技术、系统配置、网络和传输协议,其中的一些在附图和以下描述中通过示例的方式示出。具体实施方式和附图仅仅是对本公开内容的说明而不是限制,本公开内容的范围由所附权利要求及其等同方案来限定。
参考各种装置和方法来呈现若干方面。将借助各种块、组件、电路、过程、算法等等(统称为“要素”)在以下具体实施方式中描述并在附图中示出这些装置和方法。这些要素可以使用电子硬件、计算机软件或其任何组合来实施。这些要素是被实施为硬件还是软件取决于特定应用和施加在整个系统上的设计约束。
作为示例,要素或要素的任何部分或要素的任何组合可以被实施为包括一个或多个处理器(其还可以被称为处理单元)的“处理系统”。处理器的示例包括微处理器、微控制器、图形处理单元(GPU)、通用GPU(GPGPU)、中央处理单元(CPU)、应用处理器、数字信号处理器(DSP)、精简指令集计算(RISC)处理器、片上系统(SoC)处理器、基带处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑、分立硬件电路以及被配置为执行本公开内容通篇所描述的各种功能的其他适合的硬件。处理系统中的一个或多个处理器可以执行软件。软件应被广义地解释为表示指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用程序、软件应用程序、软件包、例程、子例程、对象、可执行程序、执行线程、过程、函数等等,无论被称为软件、固件、中间件、微代码、硬件描述语言或其他的。术语应用程序可以指代软件。如本文所述,一种或多种技术可以指被配置为执行一个或多个功能的应用程序,即软件。在这样的示例中,应用程序可以存储在存储器上,例如,处理器的片上存储器、系统存储器或任何其他存储器。本文描述的硬件(诸如处理器)可以被配置为执行应用程序。例如,应用程序可以被描述为包括代码,所述代码当由硬件执行时使硬件执行本文描述的一种或多种技术。作为示例,硬件可以从存储器访问代码并执行从存储器访问的代码以执行本文描述的一种或多种技术。在一些示例中,在本公开内容中标识了组件。在这样的示例中,组件可以是硬件、软件或其组合。组件可以是单独的组件或单个组件的子组件。
相应地,在本文所描述的一个或多个示例中,所描述的功能可以以硬件、软件或其任何组合来实施。如果以软件来实施,则所述功能可以作为一个或多个指令或代码存储或编码在计算机可读介质上。计算机可读介质包括计算机储存介质。储存介质可以是可由计算机访问的任何可用介质。示例性而非限制性地,这样的计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、光盘储存设备、磁盘储存设备、其他磁储存设备、上述类型的计算机可读介质的组合,或者可以用于以可由计算机访问的指令或数据结构的形式存储计算机可执行代码的任何其他介质。
总体而言,本公开内容描述用于在单个设备或多个设备中具有图形处理管线、改进图形内容的渲染和/或减少处理单元(即,被配置为执行本文中所描述的一种或多种技术的任何处理单元,诸如GPU)的负载的技术。例如,本公开内容描述用于在利用图形处理的任何设备中的图形处理的技术。贯穿本公开内容描述了其他示例益处。
如本文所使用的,术语“内容”的实例可以指“图形内容”、“3D图形设计的产品”、它们的再现,即“图像”,并且反之亦然。无论术语是用作形容词、名词还是其他词性,都是如此。在一些示例中,如本文所使用的,术语“图形内容”可以指由图形处理管线的一个或多个过程产生的内容。在一些示例中,如本文中所使用,术语“图形内容”可以指由被配置为执行图形处理的处理单元产生的内容。在一些示例中,如本文所使用的,术语“图形内容”可以指由图形处理单元产生的内容。
在一些示例中,如本文所使用的,术语“显示内容”可以指由被配置为执行显示处理的处理单元生成的内容。在一些示例中,如本文所使用的,术语“显示内容”可以指由显示处理单元生成的内容。图形内容可以被处理以成为显示内容。例如,图形处理单元可以将诸如帧的图形内容输出到缓冲区(其可以被称为帧缓冲区)。显示处理单元可以从缓冲区读取图形内容(诸如一帧或多帧),并且对其执行一种或多种显示处理技术以生成显示内容。例如,显示处理单元可以被配置为对一个或多个经渲染层执行合成,以生成帧。作为另一示例,显示处理单元可以被配置为将两个或更多个层进行组合、混合或以其他方式合并在一起成为单个帧。显示处理单元可以被配置为对帧执行缩放,例如,放大或缩小。在一些示例中,帧可以指层。在其他示例中,帧可以指已经混合在一起以形成帧的两个或更多个层,即,帧包括两个或更多个层,并且可以随后混合包括两个或更多个层的帧。
图1是示出被配置为实施本公开内容的一种或多种技术的示例系统100的方框图。系统100包括设备104。设备104可以包括用于执行本文描述的各种功能的一个或多个组件或电路。在一些示例中,设备104的一个或多个组件可以是SoC的组件。设备104可以包括被配置为执行本公开内容的一种或多种技术的一个或多个组件。在所示的示例中,设备104包括处理单元120、内容编码器/解码器122和系统存储器124。在一些方面,设备104可以包括多个可任选组件,例如通信接口126、收发机132、接收机128、发射机130、显示处理器127和一个或多个显示器131。对显示器131的引用可以指一个或多个显示器131。例如,显示器131可以包括单个显示器或多个显示器。显示器131可以包括第一显示器和第二显示器。第一显示器可以是左眼显示器,并且第二显示器可以是右眼显示器。在一些示例中,第一显示器和第二显示器可以接收不同的帧以在其上呈现。在其他示例中,第一显示器和第二显示器可以接收相同的帧以在其上呈现。在另外的示例中,图形处理的结果可以不显示在设备上,例如,第一显示器和第二显示器可以不接收用于在其上呈现的任何帧。相反,可以将帧或图形处理结果传输到另一设备。在一些方面,这可以被称为分割渲染。
处理单元120可以包括内部存储器121。处理单元120可以被配置为执行图形处理,诸如在图形处理管线107中。内容编码器/解码器122可以包括内部存储器123。在一些示例中,设备104可以包括显示处理器,诸如显示处理器127,以在由一个或多个显示器131呈现之前对由处理单元120生成的一帧或多帧执行一种或多种显示处理技术。显示处理器127可以被配置为执行显示处理。例如,显示处理器127可以被配置为对由处理单元120生成的一帧或多帧执行一种或多种显示处理技术。一个或多个显示器131可被配置为显示或以其他方式呈现由显示处理器127处理的帧。在一些示例中,一个或多个显示器131可以包括以下中的一个或多个:液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、投影显示装置、增强现实显示装置、虚拟现实显示装置、头戴式显示器或任何其他类型的显示装置。
处理单元120和内容编码器/解码器122外部的存储器(诸如系统存储器124)可以是处理单元120和内容编码器/解码器122可访问的。例如,处理单元120和内容编码器/解码器122可以被配置为从外部存储器(诸如系统存储器124)读取和/或写入外部存储器。处理单元120和内容编码器/解码器122可以通过总线通信地耦合到系统存储器124。在一些示例中,处理单元120和内容编码器/解码器122可以通过总线或不同的连接彼此通信地耦合。
内容编码器/解码器122可以被配置为从诸如系统存储器124和/或通信接口126的任何源接收图形内容。系统存储器124可以被配置为存储所接收的经编码或经解码的图形内容。内容编码器/解码器122可以被配置为例如从系统存储器124和/或通信接口126以经编码像素数据的形式接收经编码或经解码的图形内容。内容编码器/解码器122可以被配置为对任何图形内容进行编码或解码。
内部存储器121或系统存储器124可以包括一个或多个易失性或非易失性存储器或存储设备。在一些示例中,内部存储器121或系统存储器124可以包括RAM、SRAM、DRAM、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存存储器、磁性数据介质或光学存储介质,或任何其他类型的存储器。
根据一些示例,内部存储器121或系统存储器124可以是非暂时性存储介质。术语“非暂时性”可以指示存储介质不体现在载波或传播信号中。然而,术语“非暂时性”不应被解释为意味着内部存储器121或系统存储器124是不可移动的或者其内容是静态的。作为一个示例,系统存储器124可以从设备104移除并移动到另一设备。作为另一示例,系统存储器124可以是不可从设备104移除的。
处理单元120可以是中央处理单元(CPU)、图形处理单元(GPU)、通用GPU(GPGPU)或可被配置为执行图形处理的任何其他处理单元。在一些示例中,处理单元120可集成到设备104的母板中。在一些示例中,处理单元120可存在于图形卡上,图形卡安装在设备104的母板中的端口中,或可以其他方式并入被配置为与设备104互操作的外围设备内。处理单元120可以包括一个或多个处理器,诸如一个或多个微处理器、GPU、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、分立逻辑、软件、硬件、固件、其他等效集成或分立逻辑电路,或其任何组合。如果所述技术部分地以软件实施,则处理单元120可将用于所述软件的指令存储在合适的非暂时性计算机可读存储介质(例如,内部存储器121)中,且可使用一个或多个处理器以硬件执行指令以实现本公开内容的技术。前述中的任何一项,包括硬件、软件、硬件和软件的组合等,可以被认为是一个或多个处理器。
内容编码器/解码器122可以是被配置为执行内容解码的任何处理单元。在一些示例中,内容编码器/解码器122可被集成到设备104的母板中。内容编码器/解码器122可以包括一个或多个处理器,诸如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、视频处理器、分立逻辑、软件、硬件、固件、其他等效集成或分立逻辑电路,或其任何组合。如果所述技术部分地以软件实施,则内容编码器/解码器122可将用于所述软件的指令存储在合适的非暂时性计算机可读存储介质(例如,内部存储器123)中,且可使用一个或多个处理器以硬件执行指令以实现本公开内容的技术。前述中的任何一项,包括硬件、软件、硬件和软件的组合等,可以被认为是一个或多个处理器。
在一些方面,系统100可以包括可选的通信接口126。通信接口126可以包括接收机128和发射机130。接收机128可被配置为执行本文中针对设备104所描述的任何接收功能。另外,接收机128可被配置为从另一设备接收信息,例如眼睛或头部位置信息、渲染命令或位置信息。发射机130可被配置为执行本文中针对设备104所描述的任何发送功能。例如,发射机130可被配置为将信息发送到另一设备,所述信息可以包括对内容的请求。接收机128和发射机130可以组合成收发机132。在此类示例中,收发机132可被配置为执行本文中针对设备104所描述的任何接收功能和/或发送功能。
再次参考图1,在某些方面中,图形处理管线107可以包括错误隐藏组件198,该错误隐藏组件198被配置为,作为矢量流传输分割渲染过程的一部分,接收对该过程的着色图谱序列进行编码的比特流。每个着色图谱包括面片—结合图4进一步描述。客户端对着色图谱序列中的特定着色图谱进行解码,并且确定该特定着色图谱的特定面片未被成功解码。客户端将所存储的、该着色图谱序列的先前着色图谱的面片,标识为该特定面片的成功解码的较早版本。然后,客户端使用所存储的面片替代该特定面片来渲染该特定着色图谱。在一些示例中,客户端在解码该特定着色图谱之前解码该先前着色图谱。客户端确定多个面片,包括该先前着色图谱中的该特定面片的较早版本,被成功解码。客户端存储被确定为已经被成功解码的多个面片中的每个面片,包括该特定面片的较早版本。
如本文中所描述,设备(诸如设备104)可以指被配置为执行本文中所描述的一种或多种技术的任何设备、装置或系统。例如,设备可以是服务器、基站、用户设备、客户端设备、站、接入点、计算机(例如,个人计算机、台式计算机、膝上型计算机、平板计算机、计算机工作站或大型计算机)、终端产品、装置、电话、智能电话、服务器、视频游戏平台或游戏机、手持设备(例如,便携式视频游戏设备或个人数字助理(PDA))、可穿戴计算设备(例如,智能手表、增强现实设备或虚拟现实设备)、不可穿戴设备、显示器或显示设备、电视、电视机顶盒、中间网络设备、数字媒体播放器、视频流传输设备、内容流传输设备、车载计算机、任何移动设备、被配置为生成图形内容的任何设备或被配置为执行本文描述的一种或多种技术的任何设备。本文中的过程可以被描述为由特定组件(例如,GPU)执行,但是在另外的示例中,可以使用与所公开的示例一致的其他组件(例如,CPU)来执行。
GPU可以在GPU管线中处理多种类型的数据或数据分组。例如,在一些方面,GPU可以处理两种类型的数据或数据分组,例如上下文寄存器分组和绘图调用数据。上下文寄存器分组可以是全局状态信息集合,例如关于全局寄存器、着色程序或常数数据的信息,其可以调节将如何处理图形上下文。例如,上下文寄存器分组可以包括关于颜色格式的信息。在上下文寄存器分组的一些方面中,可以存在指示哪个工作负荷属于上下文寄存器的比特。而且,可以存在同时和/或并行运行的多个功能或编程。例如,功能或编程可以描述某个操作,例如颜色模式或颜色格式。因此,上下文寄存器可以定义GPU的多个状态。
上下文状态可用于确定个别处理单元(例如,顶点提取器(VFD)、顶点着色器(VS)、着色器处理器或几何处理器)如何操作,和/或处理单元以什么模式操作。为此目的,GPU可以使用上下文寄存器和编程数据。在一些方面中,GPU可以基于模式或状态的上下文寄存器定义,在管线中生成工作负荷,例如顶点或像素工作负荷。某些处理单元(例如,VFD)可以使用这些状态来确定某些功能,例如,如何组装顶点。由于这些模式或状态可以改变,因此GPU可能需要改变对应的上下文。另外,与模式或状态相对应的工作负荷可以遵循变化的模式或状态。
GPU可以以各种不同的方式渲染图像。在一些情况下,GPU可以使用渲染或图块化渲染来渲染图像。在图块化渲染GPU中,图像可以被划分或拆分成不同的区段或图块(tile)。在划分图像之后,每个区段或图块可以被单独地渲染。图块化渲染GPU可以将计算机图形图像划分为网格格式,使得网格的每个部分(即,图块)被单独地渲染。在一些方面中,在图格遍次(binning pass)期间,可将图像划分成不同图格或图块。此外,在图格遍次中,不同的图元可在特定的图格中着色,例如使用绘图调用。在一些方面,在图格遍次期间,可构造可见性流,其中可识别可见图元或绘图调用。
在渲染的一些方面中,可以存在多个处理阶段或遍次。例如,可在两个遍次(例如,可见性遍次和渲染遍次)中执行渲染。在可见性遍次期间,GPU可以输入渲染工作负荷,记录图元或三角形的位置,然后确定哪些图元或三角形落入帧的哪个部分。在可见性遍次的一些方面中,GPU还可识别或标记可见性流中的每个图元或三角形的可见性。在渲染遍次期间,GPU可以输入可见性流,并且一次处理帧的一部分。在一些方面,可以分析可见性流以确定哪些图元可见或不可见。因此,可以处理可见的图元。通过这样做,GPU可以减少对不可见图元进行处理或渲染的不必要工作负荷。
在一些方面,可以在多个位置和/或在多个设备上执行渲染,例如,以便在不同设备之间划分渲染工作负荷。例如,可以在服务器和客户端设备之间分割渲染,这可以被称为“分割渲染”。在一些情况下,分割渲染可以是用于将内容带到用户设备或头戴式显示器(HMD)的方法,其中,可以在设备或HMD外部(例如,在服务器处)执行图形处理的一部分。
可以针对多种不同类型的应用(例如,虚拟现实(VR)应用、增强现实(AR)应用和/或扩展现实(XR)应用、云游戏应用)执行分割渲染。在VR应用中,在用户设备处显示的内容可以对应于人造或动画化内容,例如,在服务器或用户设备处渲染的内容。在AR或XR内容中,在用户设备处显示的内容的一部分可以对应于真实世界内容,例如现实世界中的对象,且内容的一部分可以是人造或动画化内容。此外,人造或动画化内容和真实世界内容可以显示在光学透视或视频透视设备中,使得用户可以同时观看真实世界对象和人造或动画化内容。在一些方面,人造或动画化内容可以被称为虚拟内容,或者反之亦然。
本公开内容的一些方面可以考虑分割XR或AR架构的不同类型的模态,例如,像素流传输(PS)架构和基于对象空间表示的分割渲染(OSRBSR)。下面描述的矢量流传输(VS)是OSRBSR架构的一个这样的示例。在PS系统中,可以在显示之前在客户端上使用异步时间扭曲(ATW)的变型来补偿内容延迟。例如,时间扭曲可以扭曲原始渲染内容或计算机生成图像(CGI)的形状。在其他示例中,使用ATW或其他高级重新投影技术被重新投影到更新近的显示姿态的内容可能遭受不一致的去遮挡(dis-occlusion)—其中内容在内容渲染时被来自视点的前景对象遮挡且在接近显示时间的稍后视点中被去遮挡的效果,不能在所显示的内容中忠实地表示。在一些方面中,在AR系统中,被流传输到客户端的PS帧可基于视图变换而被时间扭曲。例如,本公开内容的各方面可以执行时间投影,使得可以基于估计的未来相机位置来确定未来帧的位置。
如本文所指示的,矢量流传输是一种类型的分割渲染系统,其被设计为,与诸如像素流传输的传统方法相比,为XR、AR或VR业务提供改进的延迟容限和/或带宽使用。如上所述,在像素流传输中,服务器可以渲染一帧或多帧,例如,经由眼缓冲区,眼缓冲区表示通过每只眼睛表示的视频。在像素流传输的一些实例中,在帧渲染时间(例如,在服务器上)与帧显示时间(例如,在客户端上)之间可能存延迟量。该延迟可以由ATW补偿,这导致对在延迟不存在情况下应该显示什么图像的近似,即理想显示内容。延迟越长,近似可能越偏离假想的理想显示内容。在某个点(并且对于一些显示值),这种偏离变得明显。
在矢量流传输系统中,服务器可以流传输虚拟或CGI表面的外观,以及这些虚拟对象的几何形状/网格。在设备处理的较后级中,例如,在将信息传输给显示器之前,客户端可以使用最新近的头部姿态来光栅化可见虚拟对象的几何形状,和/或对相应纹理进行纹理映射。延迟补偿的这种变型可能不会使对象的形状以及在前景与背景内容之间的边界失真,并且由此保持对可见场景的更准确的描绘。
矢量流传输系统还可以流传输不同类型的信息。例如,在矢量流传输架构中,服务器可以产生着色图谱信息,例如,场景中潜在可见表面的对象空间中的纹理的表示。它还可以流传输元信息,例如,在着色图谱的各个部分到虚拟对象网格的对应子集(例如,三角形或多边形)之间的映射。客户端设备可以接收更新的着色图谱信息、新可见的几何形状/网格信息以及由服务器发送的每帧中的对应元信息。然后,客户端设备可以使用最新的设备姿态对当前可见的网格进行光栅化,并且它可以利用着色图谱信息和/或元信息来将经着色表面从图谱空间纹理映射到最终屏幕空间,从而将该信息转换为可以在客户端设备(或其他地方)上显示的像素。服务器帧的频率可能不对应于在客户端上显示的帧的频率。具体而言,服务器帧频率可以更低:在一些情况下,它可以对应于目标设备显示频率的1/2、1/3、1/4或1/5,与像素流传输相比,这可以转化为带宽节省。
除了发送用于忠实表示从任何一个视点可见的形状之外的形状的对象网格之外,矢量流传输系统还传输对应的经着色表面,从而使得客户端能够从所有附近的视点准确地重构虚拟场景。由于所传输的经着色表面通常不是从任何一个视点都可见的,因此它们不能在屏幕空间中共同表示,而是被联合地存储在着色图谱中。
参考图2A,并且继续参考上下文的图1,示出了根据本公开内容的一种或多种技术的着色图谱200。如图2A所示,着色图谱200示出了存储在对象空间中渲染并且旨在用于屏幕空间显示的纹理的一种有效方式。图2A还示出了以不同的分辨率对着色图谱200的不同部分进行着色,例如,取决于距相机的距离。此外,着色图谱200的深灰色部分(例如,图2A的最右侧的灰色着色)可以表示着色图谱200的未分配部分。在一些实例中,由于高时间相干性,可以有效地编码着色图谱200。例如,着色图谱200中的一个面片可以表示一段时间内虚拟世界中的相同物理表面。在一些方面中,着色图谱200中的面片可以保持在相同的位置,只要它们潜在地可见并且占据屏幕空间中的类似区域。这样的面片将保持类似的外观,在着色中具有逐渐的并且通常轻微的变化。这些属性导致作为整体的着色图谱的高时间相关性。
参考图2B,并且继续参考上下文的先前附图,示出了根据本公开内容的一种或多种技术的着色图谱组织250。如图2B所示,着色图谱260包括超级块262,其中每个超级块包括不同宽度的块/面片。相同宽度的块被组织在列270中,并且特定宽度的列270全部被分配在相同的超级块中。因此,可以分别在两个超级块262a与262b之间分割包括宽度A的列270a和宽度B的列270b的该结构。每列进一步包括面片280,面片280是着色图谱组织的基本元素。在一些方面中,列宽度可以被限制为2的幂(以像素数计)。因此,例如,列宽度A可以是列宽度B的值的一半。如图2B所示,从大值到小值的着色图谱的组织可以是超级块262到列270到面片280到三角形290。
关于面片280和三角形290,每个面片280由一数量个三角形290组成。三角形290是从渲染视点来看的图形信息的最小单元。但是为了在视频帧状数据结构(其总是矩形)中更有效地打包的目的,将三角形290分组为矩形实体—面片280是有益的。因此,从着色图谱260组织视点来看,面片280是最小的可单独寻址元素。形成面片的三角形290的最小数量可以是一个,尽管这是一种退化的情况并且导致低效(未使用矩形区域的一部分)。因此,常见且期望的情况将是两个三角形290有效地打包,以精确地覆盖面片280的矩形。这也可以扩展到3-三角形290的面片280、4-三角形290的面片280、等等。
图2B示出了如何将面片280有效地打包到着色图谱260中。此外,当决定如何在着色图谱260中组织面片280时,存储器管理的这种层级结构允许广泛的并行性。着色图谱的存储器组织可以如下。图谱包括超级块,超级块被进一步划分为(相等宽度的)列,并且每列包括堆叠的面片。面片具有矩形形状(正方形是特殊情况),并且它们可以包括某一固定数量的三角形。这在图2B的描绘宽度B的列的部分中示出,其中几个面片被示出为包括一数量个三角形,例如三角形290。例如,面片280可以由一个、两个或三个三角形290组成。在一些实施方式中,包括多于三个三角形的面片星座也是可能的。三角形到面片的指派在资产加载(asset loading)和场景预处理(例如,离线执行)期间被选择一次,并且超过该点,它在分割渲染服务的持续时间内保持固定。在一些方面中,三角形到面片的映射操作与面片到着色图谱的在线存储器组织是分离的,如图2B所示。在一个实例中,可以选择被指派给一个面片的三角形,使得它们是对象网格中的邻居,它们的纵横比可以与所所选择的面片星座“兼容”,它们的大小/面积可以具有与被布置在面片内的规范三角形的大小/面积类似的比例,并且它们的表面法线可以是类似的。三角形到面片的指派可以纯粹基于网格属性,因此在对象空间中,并且由此可以在服务开始之前完成。与此相反,面片到超级块的指派可以随时间改变,这种指派是与屏幕空间中的对象外观紧密耦合的,并且由此,其取决于相机位置和取向。有几个因素决定面片是否将出现在图谱中,并且如果是,则其尺寸应该是什么。首先,一旦面片成为潜在可见集合的一部分,就将其初始到着色图谱中。这大致意味着,一旦可以通过在当前位置附近移动的相机显露面片,则面片就被第一次添加。针对被添加的面片的初始超级块指派取决于屏幕空间中的面片外观。更靠近相机的面片在屏幕空间中看起来更大,并且因此被分配图谱固定区域(real estate)的更大部分。另外,相对于相机轴以大入射角出现的面片可能看起来是倾斜的,并且由此可以在图谱中由具有高纵横比的面片(例如,瘦矩形)表示。取决于相机运动,屏幕空间中的三角形外观可能逐渐改变,并且因此对应的面片的大小和纵横比也可能改变。在列宽度被限制为2的幂的着色图谱组织的实例中,在图谱中可能存在有限数量的可用的面片大小和纵横比,并且因此面片从一个列宽的超级块到另一列宽的超级块的切换在时间上可能不是非常频繁或连续的。
此外,为了保持图谱内的上述时间相干性,一旦被添加到图谱,面片就可以被限制为在受一些约束的情况下尽可能长地占据相同的位置。一旦(i)其屏幕空间面积和纵横比变得越来越不适合当前超级块的列宽度,因此切换变得必要,或者(ii)面片在延长的时间段内停止处于潜在可见集合中,着色图谱中的面片位置就可以改变。在这两种情况下,所讨论的面片必须在图谱内移动或被完全移除—特别是在情况(ii)中。该改变可能导致编码比特率的临时增加,但是新状态可能持续一段时间,导致编码比特率整体降低。除了情况(i)和(ii)之外,还可能存在面片改变其在着色图谱内的位置的额外原因。在一些实施方式中,着色图谱时间演变可能被偶尔中断,从而引发图谱重置事件。可能需要图谱重置事件,以便保持检查存储器碎片或图谱过度利用。在图谱重置期间,重新确定针对所有当前潜在可见的面片的面片分配,这通常导致大多数面片改变其在图谱中的位置。在图谱重置事件期间,某些面片也可以被从图谱中移除或被添加到图谱。当使用运动图像专家组(MPEG)编码标准族中常见的IPPP结构对着色图谱序列进行编码时,图谱重置事件可以与I帧的周期性插入同步,因为I帧中的时间相干性的破坏不会导致编码比特率的显著增加。为了便于快速存储器查找,水平和垂直面片大小都保持为2的幂。例如,面片可以是16像素高和64像素宽。该面片将被指派给包含宽度全部为64个像素的面片的超级块。当头显位置改变使得面片的纵横比看起来更接近1:2,并且尺寸稍大时,该面片将被从其当前位置移除,并且可以为其指派32个像素的高度和64个像素的宽度。在这种情况下,它可以再次被分配给宽度为64的超级块,但是它将需要改变其位置。
如上所述,矢量流传输还可以包括元信息,该元信息与每个经编码的着色图谱一起发送(因此每个服务器帧一次)。该元信息可以例如描述三角形到面片的指派(其在服务开始时被传输一次),或面片到超级块的指派以及面片在图谱内的位置(两者都可以在帧之间改变)。客户端可以使用元信息来确定:在客户端上执行的光栅化步骤期间,如何将着色图谱中的表面映射到被投影在屏幕空间中的可见网格三角形。在一些方面中,客户端可以使用着色图谱、网格几何形状、元信息和最新近的客户端姿态来形成两个不同的眼缓冲区。
在一些方面,可以使用着色图谱将着色信息从服务器发送到客户端设备。着色图谱也可以被视频编码。在一些实例中,即使经编码的着色图谱可以符合基于标准运动图像专家组(MPEG)的流,经编码的比特流的属性中的至少一些属性和/或被包括在着色图谱中的一些信息也可以是唯一的。例如,经编码视频流可以包含多个切片,其可以被选择为使得每个切片包含完整的(而不是部分的)超级块。如果图谱被划分为整数个超级块,并且所有超级块具有相同的大小,则这种情况总是可能的。此外,着色图谱流可能偶尔被传输介质、干扰或其他原因损坏。视频流中的损坏可以使得其导致可解码视频,但是某些帧的某些部分不能被正确解码或者可能由于其他原因而在解码时出现损坏。
在一些实例中,屏幕空间可以包括一数量个不同的表面,诸如遮挡屏幕中的其他表面的表面。因此,着色图谱和元信息可以帮助解释这些不同的表面、它们的形状、大小和屏幕上的外观,例如,关于客户端设备可能需要以正确的方式渲染场景的信息。
参考图3,并且继续参考上下文的先前附图,示出了根据本公开内容的一种或多种技术的用于在服务器310和客户端设备330之间的分割渲染的示例架构300。更具体地,架构300示出了包括在服务器310和客户端设备330之间的信息传输协议的矢量流传输传输系统。示意图300包括服务器310、网络320和客户端设备330。如图3所示,服务器310包括可见性和存储器管理级312、着色级314和编码级316。客户端设备330可以包括解码级332、显示级334和姿态估计级336。
如图3所示,可以在级312中的存储器管理过程之后确定元信息341。级312中的可见性过程可以确定将在当前帧中发送到客户端设备330的相关几何形状和/或网格数据342。着色图谱343是着色级314的结果,并且在编码级316中被编码以通过网络320传输到客户端设备330。编码级316可以负责将着色图谱帧343的系列编码成MPEG流344中。编码级还可以负责对元信息345和/或几何形状/网格数据346进行压缩和前向纠错。MPEG流344、元信息345和经编码的几何形状346可以经由网络320从服务器310传输到客户端设备330。在一些实例中,MPEG流344可能在网络320中被损坏,并且因此所接收的MPEG流347可能不完全对应于所发送的MPEG流344。另外,在一些实例中,元信息和经编码的几何形状可能对传输介质更具弹性,或者它们可以经由更可靠的协议发送,使得客户端无损坏地接收它们。客户端在解码级332中解码所接收的流。在解码级332之后重构的元信息和几何形状和/或网格数据在一些实例中可以与服务器310上的对应数据(例如,元信息341和几何形状和/或网格数据342)精确匹配。然而,如果MPEG流以某种方式被损坏,则重构的着色图谱帧348可能与在服务器310上准备的着色图谱帧343不匹配。在解码之后,着色图谱帧348和经解码的元信息350以及经解码的几何形状/网格数据349可以与最新近的姿态信息352一起由渲染和显示级334使用,以便渲染左眼和右眼缓冲区并将它们显示在客户端设备330处的屏幕(图3中未示出)上。
如上所述,着色图谱MPEG流可能经受有损传输,其中一些信息分组可能经历错误,诸如被丢弃、在传输期间被损坏、或未被准确解码。在一些实例中,,丢失的信息分组可能转换为部分地不准确的经重构图谱帧。除非受影响的信息分组携带一些关键信息(例如,系统报头),否则随机偶然的分组丢失的影响可以是在空间/时间上有限的。例如,如果切片被组织成使得没有实时传输协议(RTP)分组跨越多于一个切片,则流中的一个丢失的RTP分组可能影响一个MPEG切片。这又意味着损坏或丢弃的RTP分组可能导致传入图谱的若干超级块被不正确地解码。
在一些方面,视频传输系统可以提供对网络行为的一定程度的弹性,诸如网络上的零星分组丢失和/或零星增加的延迟。一些视频传输系统(例如,流传输视频系统)可以依赖于缓冲和储备(stock)错误隐藏。然而,缓冲可能不是针对延迟敏感内容的一个选项,所述延迟敏感内容诸如分割渲染架构,例如云游戏、分割XR、分割AR或分割VR,其中渲染操作的良好部分在服务器上远程执行,即远离姿态估计级336,并且其中期望保持较低的端到端系统延迟。此外,由一些视频解码器实施的储备错误隐藏可针对某些类型的视频编码宏块(MB)中的错误起作用,这些类型的MB例如帧内译码MB(I-MB)、帧间译码MB或预测译码MB(P-MB),其中来自先前帧或当前帧的相邻宏块的经成功解码内容可用于隐藏任何当前错误。然而,这样的技术是专门针对空间相干性丰富的自然视频数据开发的,其通常不能很好地与计算机图形内容一起工作,并且甚至更不能很好地与具有很少或没有空间相关性的着色图谱内容一起工作。
在一些方面,与其他系统相比,在矢量流传输系统中流传输的视频可以具有不同的属性。例如,与自然视频或像素流传输图形内容不同,矢量流传输着色图谱中的区域对应于错乱的对象空间外观,而不是屏幕空间外观。至少部分地由于这一点,两个相邻宏块在外观上可能非常不同,特别是在相邻宏块与两个(或更多个)不同的矢量流传输块对齐的情况下。此外,由于构成超级块的面片和图谱本身总是对应于对象空间中的相同物理表面,并且它们包含唯一的面片标识符,所以可以更容易地确定帧到帧的内容对应性。特别是,具有给定标识符的面片的快照可能在跨时间上间隔开的帧比在任何给定的一帧中出现该面片和相邻面片的情况更加相关。由于视频内容的特定性质,目前需要矢量流传输中的视频传输包括单独的或专用的错误隐藏算法。
本公开内容的各方面可以包括用于矢量流传输系统的专用错误隐藏算法。例如,矢量流传输系统可以流传输关于来自一个着色图谱的面片如何对应于来自另一着色图谱的面片的信息。这可以使得本公开内容可以在面片级别上确定在先前的信息传输中是否接收到对应的面片。在一些实例中,当前着色图谱中的丢失的面片可以包括一数量的像素,例如N个像素,并且来自先前成功解码的着色图谱的对应面片可以使用另一数量的像素(例如,M个像素)来表示,其中,M可以小于或大于N。关于每个图谱帧中的面片大小的信息也是可用的,并且可以由客户端设备330用于图谱空间错误隐藏。
如上所述,每个面片伴随有描述其在该帧的着色图谱中的位置的信息。另外,可针对在先前帧中接收的对应面片实例存储丢失面片的先前面片位置信息。因此,可以从先前着色图谱中检索当前着色图谱中丢失的面片的版本。
在本公开内容的一些方面,丢失的面片(例如,丢弃的或以其他方式未被正确解码的面片)可能被发现已经在先前的着色图谱之一中被正确地接收和解码。此外,可以假设相应的元信息在客户端侧可用/不变或被可靠地接收。另外,虽然该信息通常可以以较高的可靠性流传输,但是本公开内容的技术还可以包括用于规避元信息的偶尔丢失的算法。矢量流传输客户端设备可以使用该信息来定位当前丢失面片的最新近副本,其可以描述对象空间中与先前的正确解码的面片相同的物理表面。此外,矢量流传输客户端可以更新它的其他内部状态参数,以使面片级隐藏的时机对客户端渲染器透明。例如,如果面片在该帧中没有正确解码,则可以修改对应的指针以指向相同面片的最新近副本,或者可以使用最新解码的纹理和先前解码的纹理的片段的组合来生成最新绘制缓冲区。以这种方式,渲染操作对发生错误隐藏的事实保持未知。
如上所述,当在客户端设备上渲染场景时,需要几何形状信息和面片信息(例如,元信息)。渲染单元使用在着色图谱中描绘的面片表示来光栅化几何形状并对那些网格的经着色表面进行纹理映射。当前面片表示可以从着色图谱视频流的最近经解码帧获得,或者(在传输错误的情况下)从先前帧获得,参考接收到的面片的先前实例。另外,正确解码的面片的最新版本可以被存储在存储器中,例如内部存储器。因此,当正确地接收到面片时,可以存储面片,并且客户端可以维护面片的最新近的正确出现(rendition)。该存储器存储可以被保留一段时间,例如,1秒,这可以由客户端设备上的最大可用存储量来确定。
另外,如果当前帧中的接收到的面片存在错误,则本公开内容可以确定面片表示是否被正确地存储在存储器中的其他地方。因此,本公开内容的各方面可利用准确接收的先前面片信息进行当前渲染。可替换地,如果与最新的帧更新相对应的面片丢失或不准确,则可以检索该丢失/不准确的面片的先前成功解码版本。此外,可以更新系统参数以指示所存储的先前面片表示(而不是丢失或不正确解码的当前面片表示)被用于渲染下一帧。
在一些情况下,着色图谱中的面片的表示可以随时间改变大小或纵横比。例如,着色图谱中的表面对应于对象的网格上的特定表面,特别是在渲染时从视点潜在可见的网格的部分。取决于相机视点,描述网格的一小部分的面片表示可能在时间上改变,以当在投影空间中看到时看起来具有不同的形状或大小。此外,可以根据相机视点,纵横比可能被拉伸。在一些方面中,客户端设备可以从元信息知道所有面片的当前大小和纵横比要求,并且如果面片在当前图谱中丢失或不正确地解码,则客户端设备可以利用面片的先前接收的正确解码的实例,并对这些实例进行整形以适配当前块大小和纵横比。
如上所述,本公开内容的一些方面可以确定是否从当前着色图谱准确地解码了面片。如果面片被准确地解码,则本公开内容可以维护面片表示,并通知客户端渲染器继续渲染。如果面片未被准确解码,则本文公开的技术的示例可以确定该面片是否在最近准确解码的着色图谱中被表示。如果该面片在最近存储的成功解码的着色图谱中被表示,或者被单独存储,则本公开内容可以使用该先前的面片表示来表示当前着色图谱中的面片。本公开内容的各方面还可以更新系统参数,以便客户端渲染器在没有任何延迟的情况下继续渲染。
如果面片先前未被准确解码并且在客户端存储器中可用,则本文公开的技术的示例可以利用其他方法,例如,视频修补方法。这可能是先前未看到的内容的情况,例如如下情况:面片自渲染开始以来第一次出现在潜在可见集合中,但是其是着色图谱中的第一次被发送的表示且没有被准确地接收或解码。另外,本文公开的技术的示例可以包括旨在使用经错误隐藏的面片来防止经解码视频内容中的错误传播的多个不同特征。错误隐藏直接地影响客户端的渲染部分。然而,视频解码器部分也可以受益于对损坏信息的纠正。由于视频解码器在解码所有经帧间译码/经预测编码的宏块时依赖于其先前状态,因此一个经解码图谱中的损坏面片通常将在后续帧中传播该错误,直到相应的宏块(MB)被帧内编码(例如,在I帧中)。这是错误隐藏信息同样可以被传播到解码器的状态以便纠正在对未来的经预测编码宏块进行解码时可使用的信息的一个原因,。
如本文所指示的,如果准确地或正确地接收到面片,则客户端设备可以按原样渲染该面片。另外,准确/正确解码的面片以及在一些情况下面片的元信息,可以被存储在例如存储器中,以供稍后使用。如果没有准确或正确地接收到面片,则本公开内容可以确定包括该块的最后接收的图谱以及该面片在着色图谱中的位置。可替换地,客户端可以单独地存储面片的每个成功解码的实例—而不是在整个着色图谱内。如果单独存储面片,则客户端可以查阅面片存储表以确定:(i)在过去是否成功地接收面片,(ii)如果是,其被存储在哪里,以及(iii)面片在先前成功描绘中的尺寸是什么。然后可以使用相同面片的最近解码的实例,并查阅存储表以确定其在存储器中的位置,来在单个的基础上检索先前正确解码的面片。
存储单个面片表示相对于存储整个着色图谱而言可能存在优点。例如,任何给定的正确解码的着色图谱包含与场景相关联的所有面片的子集。因此,为了维护曾经接收到的每个面片的至少一个正确实例,客户端可能需要存储具有许多重复面片表示的非常大量的着色图谱。相反,如果单个地存储面片,则客户端可以保留特定面片的最近的正确表示,从而允许其他表示被覆写或以其他方式由客户端设备操作系统的垃圾收集功能控制。
此外,由于每个面片的位置可能因帧而异,因此找到包含面片的最新图谱并且随后找到面片存储在图谱中的位置可能需要筛选多个元信息消息,这些元信息消息描述面片到图谱的位置映射。在单个地保留每个面片的示例中,当已经成功地解码和存储了面片的新表示时,客户端设备可以更新面片存储表,这于是简化了错误隐藏时的查找过程。
另一方面,在客户端上存储紧凑图谱表示而不是单个面片可能存在某些优点。例如,着色图谱表示具有已经在服务器上经历了严格存储器管理方案的益处,这促进了针对每个单个图谱的相当严格的存储器占用空间。如果在存储器中仅保留少量的着色图谱(例如,五到十个),这些着色图谱可以是连续的图谱或由K个实例分开的图谱:例如,图谱编号L、图谱编号L+K、图谱编号L+2K等,其中K可以是大于1的小整数,则客户端上所需的总存储器占用空间可能相当适中。与此相反,如果替代地追求存储单个面片,则客户端设备需要维护存储器管理,所述存储器管理可能需要额外计算资源且如果不及时或恰当地管理,则可能导致较大存储器占用空间。本文公开的技术的示例描述了当使用任一策略时的面片级错误隐藏的机制,并且对适当策略的选择可以取决于特定的客户端架构和要求。
在矢量流传输中的错误隐藏的一些方面中,本文公开的技术的示例可以确定矢量流传输客户端设备在分组丢失的情况下可以如何做出反应。在一些实例中,可以以规则的间隔(例如,每五帧)插入I帧,以停止错误传播。此外,每个着色图谱重置事件可以导致插入新的I帧,以便有效地对图谱内的面片位置中的根本变化进行编码。在一些方面中,消息和其他元信息可以例如在传输控制协议(TCP)链路上无错误地传输,或者以通过可靠用户数据报协议(RUDP)使得可能的各种可靠性级别传输。
另外,本公开内容的各方面还可以包括若干当前视频编码器设置。例如,图谱帧可以被划分为水平带,即视频切片。另外,从视频比特流丢失网络分组可能导致损坏整个切片,例如,与切片相对应的经编码比特流可能是不可解码的。此外,视频解码器可以应用解码器错误隐藏。对于I帧,可以用恒定颜色填充切片,使得没有参考帧可被用于隐藏。对于P帧中的宏块或经预测编码的宏块,视频解码器可以例如沿着最佳的已知或外推的运动矢量,传播最后正确解码的参考宏块。
本公开内容的各方面可以包括用于对图谱切片进行着色的数个结构。如上所述,图谱填充可以在垂直方向上,以便使帧中的所有水平切片包含大致相同量的“被占用”内容。本公开内容的各方面可以尽可能地将视频切片边界与图谱超级块边界对齐。此外,经编码分组也可以对齐,使得单个分组永远不会描述多于一个视频切片。可以这样做以最少化受分组丢失影响的图谱面片的数量。另外,当切片丢失时,客户端渲染器可以尝试隐藏所有被包括的面片。在一些实例中,客户端可以至少存储最后正确解码的图谱以用于错误隐藏。在这种情况下,客户端必须收集描述在先前图谱和当前图谱之间的受影响的面片演变的所有元信息。客户端设备还可以存储来自最近过去的多于一个正确解码的图谱,以便增加受当前丢失切片影响的面片被正确接收和存储的可能性。最后,客户端可以存储一组所有先前接收并正确解码的面片,这些面片可以或可以不布置在连续的存储器中。每当成功解码面片的新版本时,客户端设备就可以更新该块。可以维护单独的表,以便指定:面片标识符、存储器位置和其最近表示的大小/尺寸,有时被称为面片存储表。该信息可能足以执行当前帧中的受影响面片的错误隐藏。
在一些方面中,为了外推从未被正确接收的面片的表示,本文公开的技术的示例可以使用所有相邻的正确接收的三角形的平均值来填充经渲染的眼缓冲区中的丢失三角形。此外,如果当前帧中受分组丢失影响的该切片的大部分已经在最新近帧之一中被正确地接收到,则可以使用来自最后正确渲染的帧的ATW错误隐藏来代替颜色平均修补。
在一些实例中,术语帧可以表示由客户端渲染的帧,以及表示在服务器上渲染并发送到客户端的帧,如在着色图谱中。另外,由客户端渲染的帧可以被称为眼缓冲区(EB)—例如,XR显示中的每只眼睛一个眼缓冲区。例如,这可以是在分割渲染架构的XR应用中的客户端显示器处所预期的。术语帧还可以指服务器渲染的产物,例如,在游戏引擎渲染管线中消耗一个头部姿态的结果。帧还可以指作为服务器渲染和以其他方式处理头部姿态的结果而由客户端(例如,通过网络)接收的信息的总体。在一些实例中,生成服务器帧的速率可以低于在客户端上生成眼缓冲区的速率。例如,取决于HMD显示器,可以以20Hz生成服务器帧,并且可以以60Hz或90Hz生成客户端眼缓冲区。因此,可以针对服务器发送的每一帧生成多个EB对。此外,这些EB对中的每一EB对可以利用不同的头部姿态,例如,当HMD在来自服务器的连续更新之间到处移动时。
参考图4,并且继续参考上下文的先前附图,示意图400示出了根据本公开内容的一种或多种技术的服务器410和客户端设备430之间的通信。更具体地,示意图400是包括服务器410和客户端设备430之间的信息传输的矢量流传输处理。如图4所示,示意图400包括:服务器410、包括至少一个面片480的着色图谱420、元信息422和客户端设备430。在一些方面中,服务器410可以包括游戏引擎和/或视频和音频编码器。另外,客户端设备430可以包括头显、HMD、配备有至少一个显示器和/或视频和音频解码器的其他多媒体用户设备。
图4示出了分割渲染系统的上述过程的示例。例如,本公开内容的各方面(例如,本文的服务器和客户端设备)可以在矢量流传输期间执行错误隐藏。例如,本文的客户端设备(例如,图4中的客户端设备430)可以接收包括一个或多个面片的至少一个着色图谱,例如着色图谱420。本文的客户端设备还可以解码包括一个或多个面片480的至少一个着色图谱,例如着色图谱420。此外,客户端设备430可以将姿态信息440返回到服务器410,以供服务器410在准备下一帧时使用。
另外,本文的客户端设备可以确定是否准确地解码该一个或多个面片中的至少一个面片(例如,着色图谱420中的面片),其中该至少一个面片可以包括例如使用最近的游戏状态和头部姿态在服务器上着色化的信息。本文的客户端设备还可以在准确地解码至少一个面片(例如,着色图谱420中的面片)时基于面片来渲染帧的一部分。在一些方面中,可以基于至少一个面片(例如,着色图谱420中的面片)的显示内容来渲染帧的该部分。此外,当准确地解码至少一个面片(例如,着色图谱420中的面片480)时,本文的客户端设备可以存储至少一个面片的面片表示。在一些实例中,当准确地解码至少一个着色图谱时,本文的客户端设备还可以存储包括一个或多个面片的经解码的至少一个着色图谱,例如着色图谱420。如果正在存储着色图谱,则本文描述的一些客户端实施方式还将存储与所有存储的着色图谱相对应的元信息(块信息)。
本文的客户端设备还可以在未准确地解码至少一个面片(例如,着色图谱420中的面片480)时(例如,在当前服务器更新或帧中),识别至少一个面片的先前版本。在一些方面中,可以基于受影响的面片480的唯一标识符、由客户端在面片480的最后正确解码的实例与当前时间之间接收的累积元信息(例如,元信息422)以及包含面片480的先前正确解码的表示的着色图谱,来进一步识别先前面片。可替换地,面片480的先前像素信息可以从存储在客户端处的面片480的最后准确解码的实例和维护该存储的存储器地址的面片存储表中读取。
此外,本文的客户端设备可以基于至少一个面片的先前版本来隐藏至少一个损坏的面片的错误。另外,当未准确解码至少一个面片(例如,着色图谱420中的面片480)时,本文的客户端设备可以基于经错误隐藏的面片或至少一个损坏的面片来渲染帧的一部分。
在一些方面中,包括一个或多个面片的至少一个着色图谱(例如,着色图谱420)可以从服务器、边缘服务器或云服务器(例如,服务器410)接收。此外,包括一个或多个面片的至少一个着色图谱(例如,着色图谱420)可以由客户端设备、头显或头戴式显示器(HMD)或具有至少一个显示器的任何其他多媒体设备(例如,客户端设备430)接收。在一些实例中,可以至少部分地由GPU、CPU或专用硬件解码器来执行对是否准确地解码一个或多个面片中的至少一个面片(例如,着色图谱420中的面片)的确定。如果面片被准确地解码,则客户端可以使用它来渲染当前帧。它也可以由客户端存储,以替换所讨论的面片的先前准确解码的实例。相反,如果在当前帧中未准确解码面片,则客户端可以使用查找表来识别客户端是否先前已准确解码和存储损坏的面片,可以使用另一编目方法来识别面片的这种先前实例存储在客户端存储器中的位置,并且可以使用累积元信息来确定面片的先前尺寸和/或应该如何映射该先前面片以隐藏未被准确解码的面片的当前实例。可替换地,面片的先前尺寸也可以在该编目方法中存储在客户端上,即,存储在查找表、散列表等等中。此外,当包含多个当前丢失面片(即,不准确解码的面片)的着色图谱的整个切片已经使用来自客户端的存储器的先前面片实例成功地错误隐藏时,该像素信息然后可以在客户端上传播到视频解码器的内部存储器中,并且用于替换/修改在当前帧中不能正确解码的对应视频宏块(MB)。该方法对整个切片(包括面片)进行错误隐藏,然后使用经错误隐藏的切片来修改切片内的每个单独MB。可以接收包括一个或多个面片的至少一个着色图谱,例如着色图谱420,以用于XR应用、AR应用、VR应用程序或任何其他分割渲染多媒体应用。
本公开内容的一些方面可以:(1)接收和解码着色图谱。然后,对于经解码的图谱中的每个面片,本公开内容可以:(2)确定面片是(a)被准确解码还是(b)被损坏。如果(2a),则本公开内容可以:(i)保存当前面片表示和适合于定位正确解码的面片的面片元信息(诸如面片标识符),和/或覆写相同面片的先前实例,(ii)在客户端上使用相同面片的该先前实例来渲染下一帧。如果(2b),则本公开内容可以确定损坏的面片的先前实例是否已经被保存在客户端上。如果是,则本公开内容可以确定面片的适当的先前实例,以便使用先前存储的面片来对损坏/丢失的面片进行错误隐藏。可以使用面片位置信息从客户端存储器中检索正确解码的面片的先前实例,该面片位置信息可以由客户端维护(通常在客户端将各个面片表示直接存储在存储器中时使用),或者由客户端使用存储的元信息检索(通常在客户端存储整个过去的着色图谱时使用)。本公开内容还可以将面片的该经错误隐藏版本用于客户端渲染。另外,本公开内容可以将经错误隐藏的像素内容传播到视频解码器,然后可以将其用作先前状态来替换损坏/丢失的先前状态信息。如果损坏的面片的先前正确解码的实例未被保存,则本公开内容可以通过若干技术之一来确定像素信息:面片像素信息的修补、屏幕空间中的错误隐藏、使用先前渲染的帧的后客户端渲染、以及使用损坏的面片的标识符、组成三角形标识符、对应的顶点信息和/或用于客户端渲染的最新相机姿态的关于屏幕空间中受影响区域的知识。然而,如果面片被错误隐藏,则本公开内容可以使用该版本进行客户端渲染,除非不将错误隐藏应用于损坏的面片而是直接应用于经渲染的帧。
参考图5,并且继续参考上下文的先前附图,示出了根据本公开内容的一种或多种技术的用于在分割渲染图形处理中在客户端设备处的图谱错误隐藏的示例架构500。在这样的架构500中,视频解码510级(例如,作为上面结合图3描述的解码级332的一部分)输出以下两者:i)经解码的当前图谱512,以及ii)当前图谱的丢失/未成功解码部分(例如丢失的MB/切片514)的列表。当前经解码图谱512和丢失的MB/切片514二者是许多视频解码器单元的典型输出。注意,MB和切片是视频编码单元,而不是着色图谱固有的单元。
绘制缓冲区生成520级不仅输出几何形状524(顶点、三角形、属性)信息以支持渲染550级,而且还输出作为{PatchID,AtlasInfo}522的原始面片及其对应的图谱位置的列表。例如,使用图3的接收到的经编码元信息347b和经编码几何形状347c,绘制缓冲区生成520级可以是上面结合图3描述的整体渲染和显示级334的一部分。在一些示例中,单色面片不在着色图谱中发送,并且不被包括在{PatchID,AtlasInfo}522中。
错误检测530级可以使用丢失的MB/切片514和{PatchID,AtlasInfo}522来确定当前图谱512中的哪些面片与丢失的MB/切片514相交,将该信息作为隐藏顶点532(例如,纹理坐标)传递给错误隐藏540级。在一些示例中,错误检测级530存储其中PatchID被更新且AtlasInfo有效的最后帧号。
错误隐藏540级使用i)先前帧的经错误隐藏的图谱544信息,ii)当前帧的隐藏顶点532信息,iii)当前图谱512,以及iv)前一级的经错误隐藏的图谱544,来用先前帧的经错误隐藏的图谱544信息的相应有效面片替换当前图谱512的一些面片。另外,在先前帧的经错误隐藏的图谱544信息不包含相应的有效面片的情况下,错误隐藏540级使用掩蔽纹理542来指示屏幕的需要在显示之前的渲染550级期间被修补的部分。如上所述,当前经错误隐藏的图谱544被保存为下一帧的错误隐藏540的输入。
渲染550级基于经错误隐藏的图谱544(其还包含不需要隐藏的有效图谱面片的纹理信息)和几何形状524来渲染帧的屏幕空间表示(例如,左眼缓冲区和右眼缓冲区)。对于在掩蔽纹理542中被指示为缺少有效的先前帧隐藏纹理的区域,渲染550级可以使用修补或某种其他形式的隐藏。该方法优先使用先前有效面片的纹理而不是修补和其他隐藏方法。
参考图6,并且继续参考上下文的先前附图,示出了根据本公开内容的一种或多种技术的示例方法的流程图600。该方法可以由诸如客户端设备、CPU、GPU或用于图形和/或视频处理的装置中的一个或多个之类的装置来执行。
在这样的方法中,分割渲染架构的客户端设备接收当前帧的经编码的着色图谱—框610。经编码的着色图谱可以通过切片来表征。在参考图3和图5的继续示例中,服务器310的编码级316将一系列着色图谱343编码到MPEG流344中。编码级316还对元信息341(其包括上面讨论的{PatchID,AtlasInfo})和几何形状/网格数据342进行压缩并前向纠错。MPEG流344、经编码的元信息345和经编码的几何形状346各自由服务器310通过网络320发送。在可能被网络320变换、损坏和可能丢弃之后,客户端设备330从服务器310接收传输。
在这样的方法中,客户端解码接收到的经编码的着色图谱,并识别未成功解码的切片—框620。在继续的示例中,视频解码510级解码接收到的MPEG流(例如,作为解码级332的一部分),并输出经解码的当前图谱512。着色图谱MPEG流344经受有损传输,并且流的一些部分可能经历错误。例如,MPEG流344可能在网络320中被损坏,并且因此接收到的MPEG流347可能不完全对应于所发送的MPEG流344。视频解码510级输出流的那些部分(即,在继续示例中的切片)的列表,其被识别为未被成功解码(丢失的MB/切片514)。
客户端设备确定经解码的着色图谱的每个面片是否与所识别的未成功解码的切片相交—框630。在继续的示例中,客户端设备还已经接收到当前帧的经编码的几何形状347b和当前帧的经编码的元信息347c—它们中的每一个可以一起编码或单独编码。经编码的几何形状347b和经编码的元信息347c中的每一个可以以不同于着色图谱343的编码的方式来编码—如在继续示例中的情况。关于着色图谱343,元信息345包括将面片映射到当前图谱512中的位置的{PatchID,AtlasInfo}522的列表/更新。附加信息还经由面片布局将网格顶点映射到纹理顶点。在继续的示例中,绘制缓冲区生成520级从经编码的元信息347c中提取在当前帧中潜在可见的面片/更新的面片的{PatchID,AtlasInfo}。
在继续的示例中,错误检测530级使用{PatchID,AtlasInfo}512和丢失的MB/切片514来识别与未成功解码的切片相交的每个面片。与未成功解码的切片相交的这种面片的列表与PatchID和AtlasInfo一起使用以输出隐藏顶点532信息。
客户端设备针对每个相交面片,确定相交面片的先前有效版本是否被存储在客户端设备处—框640。在继续的示例中,错误隐藏540检查先前的经错误隐藏的图谱544(从处理先前帧中保存),以确定被识别为要在隐藏顶点532信息中隐藏的每个面片的有效对应物是否可用。
客户端设备利用对应的先前有效版本,对具有被存储在客户端设备处的先前有效版本的每个相交面片进行错误隐藏,以创建经错误隐藏的图谱—框650。在继续的示例中,错误隐藏540级使用i)先前帧的经错误隐藏的图谱544,ii)当前帧的隐藏顶点532,以及iii)当前图谱512,来用先前帧(在一些示例中,紧接在前的帧)的经错误隐藏的图谱544的对应有效面片替换当前图谱512的错误面片—创建当前帧的经错误隐藏的图谱544。在继续的示例中,经错误隐藏的图谱544是纹理集合,包括当前着色图谱512的正确解码的部分的纹理和当前着色图谱的经错误隐藏的纹理。
然后,客户端使用经错误隐藏的图谱的纹理来渲染当前帧—框660。在继续的示例中,渲染550级并不知道经错误隐藏的图谱544中的表面的源。
参考图7,并且继续参考上下文的先前附图,示出了根据本公开内容的一种或多种技术的示例方法的流程图700。该方法可以由诸如客户端设备、CPU、GPU或用于图形和/或视频处理的装置中的一个或多个之类的装置来执行。在这样的方法700中,框610、框620、框640、框650和框660如以上结合图6所描述地执行。
在这样的方法700中,客户端设备330累积列表,该列表包括着色图谱的每个面片的面片标识符以及于每个面片标识符相对应的面片在着色图谱中的位置—框725。在继续的示例中,客户端设备330的绘制缓冲区生成520级可以仅偶尔从服务器310接收{PatchID,AtlasInfo}的完整的新集合,并且接收在完整的新集合之间的对列表的更新。在这样的方法700中,基于累积列表来确定经解码的着色图谱的每个面片是否与所识别的未成功解码的切片相交—框730。
参考图8,并且继续参考上下文的先前附图,示出了根据本公开内容的一种或多种技术的示例方法的流程图800。该方法可以由诸如客户端设备、CPU、GPU或用于图形和/或视频处理的装置中的一个或多个之类的装置来执行。在这样的方法中,框610-框650如以上结合图6所描述地执行。
在这样的方法800中,客户端设备指示与被确定为不对应于先前有效版本的相交面片相对应的经错误隐藏的图谱的每个区域—框855。在继续的示例中,错误隐藏540级使用掩蔽纹理542来指示与被确定为不对应于先前有效版本的相交面片相对应的经错误隐藏的图谱的每个区域。在这样的方法中,客户端设备使用经错误隐藏的图谱并使用对每个所指示的区域的修补来渲染当前帧—框860。
参考图9,并且继续参考上下文的先前附图,示出了根据本公开内容的一种或多种技术的示例方法的流程图900。该方法可以由诸如客户端设备、CPU、GPU或用于图形和/或视频处理的装置中的一个或多个之类的装置来执行。在这样的方法中,框610-框660如以上结合图6所描述地执行。
在这样的方法900中,客户端设备基于与被确定为与至少一个所识别的未成功解码的切片相交的面片相对应的每个经错误隐藏的面片,来生成至少一个所识别的未成功解码的切片的替换切片—框970。在继续的示例中,Vdec再生560级使用经隐藏面片信息546来生成经错误隐藏的切片562;尽管该功能可以与视频解码510级集成地执行。在这样的方法中,客户端设备然后基于替换切片,对后续帧的经编码的着色图谱进行解码—框980。
在一些方面中,可以从服务器、边缘服务器或云服务器接收包括一个或多个块的至少一个着色图谱,如结合图2A、2B和3-5中的示例所描述的。此外,包括一个或多个块的至少一个着色图谱可由客户端设备、头显或头戴式显示器(HMD)接收,如结合图2A、2B和3-5中的示例所描述的。在一些实例中,对是否准确地解码一个或多个块中的至少一个块的确定可以至少部分地由GPU或CPU执行,如结合图2A、2B和3-5中的示例所描述的。此外,可以针对XR应用、AR应用或VR应用接收包括一个或多个块的至少一个着色图谱,如结合图2A、2B和3-5中的示例所描述的。在一些方面中,先前像素信息可以包括所存储的经更新的像素信息,如结合图2A、2B和3-5中的示例所描述的。在一些方面中,帧的该部分可以对应于至少一个眼缓冲区的一部分,如结合图2A、2B和3-5中的示例所描述的。
在一些示例中,提供一种用于图形处理的方法或装置。该装置可以是服务器、客户端设备、CPU、GPU或可执行图形处理的某个其他处理器。在一方面中,该装置可以是设备104内的处理单元120,或者可以是设备104或另一设备内的某个其他硬件。该装置可以包括:用于作为矢量流传输分割渲染过程的一部分,接收预期对该过程的第一帧和该过程的后续帧中的每一个的着色图谱的块进行编码的比特流的单元;用于尝试解码第一帧的块中的每一个块的单元;用于确定所尝试的对第一帧的第一块的解码成功的单元;用于存储被确定为成功解码的第一块的单元;用于尝试解码后续帧的块中的每一个块的单元;用于在所述存储之后确定所尝试的对后续帧的特定块的解码不成功的单元;用于将所存储的第一块标识为被确定为未被成功解码的特定块的较早版本的单元;以及用于使用所存储的第一块而不是该特定块来渲染后续帧的单元。
可以实施本文描述的主题以实现一个或多个益处或优点。例如,所描述的图形处理技术可以由服务器、客户端、GPU、CPU或可以执行图形处理以实施本文描述的错误隐藏技术的某个其他处理器使用。与其他图形处理技术相比,这也可以以低成本实施。此外,本文的图形处理技术可以改进或加速数据处理或执行。此外,本文的图形处理技术可以提高资源或数据利用率和/或资源效率。另外,本公开内容的各方面可以利用错误隐藏过程,该错误隐藏过程可以增加在分割渲染和/或矢量流传输中传输的丢失的块或信息的准确性。
根据本公开内容,在上下文没有另外指示的情况下,术语“或”可以被解释为“和/或”。另外,虽然诸如“一个或多个”或“至少一个”等等的短语可能已经用于本文公开的一些特征而不是其他特征,但是在上下文没有另外指示的情况下,没有使用这种语言的特征可以被解释为具有暗示的这种含义。
在一个或多个示例中,本文中所描述的功能可以以硬件、软件、固件或其任何组合实施。例如,尽管贯穿本公开内容已使用术语“处理单元”,但此类处理单元可以以硬件、软件、固件或其任何组合实施。如果本文中所描述的任何功能、处理单元、技术或其他模块以软件实施,则本文中所描述的功能、处理单元、技术或其他模块可作为计算机可读介质上的一个或多个指令或代码进行存储或发送。计算机可读介质可以包括计算机数据存储介质或通信介质,其包括促进将计算机程序从一处传递到另一处的任何介质。以此方式,计算机可读介质通常可对应于:(1)有形计算机可读存储介质,其是非暂时性的,或(2)通信介质,诸如信号或载波。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索用于实施本公开内容中所描述的技术的指令、代码和/或数据结构的任何可用介质。作为示例而非限定,此类计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储设备、磁盘存储设备或其他磁存储设备。如本文中所使用,磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。上述的组合也应当包括在计算机可读介质的范围内。计算机程序产品可以包括计算机可读介质。
代码可由一个或多个处理器执行,所述一个或多个处理器诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、算术逻辑单元(ALU)、现场可编程逻辑阵列(FPGA)或其他等效的集成或分立逻辑电路。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任何其他结构中的任何一个。另外,这些技术可完全实施于一个或多个电路或逻辑元件中。
本公开内容的技术可实施于广泛多种设备或装置中,包括无线手持机、集成电路(IC)或一组IC,例如芯片组。在本公开内容中描述各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但未必需要由不同硬件单元实施。相反,如上所述,各种单元可以结合合适的软件和/或固件,在任何硬件单元中进行组合,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合来提供。已经描述了各种示例。这些示例和其他示例在所附权利要求的范围内。
Claims (28)
1.一种图形处理方法,包括:
在分割渲染图形处理架构的客户端设备中:
接收当前帧的经编码的着色图谱,所述经编码的着色图谱由切片表征;
解码接收到的经编码的着色图谱并识别未成功解码的切片;
确定经解码的着色图谱的每个面片是否与所识别的未成功解码的切片相交;
针对每个相交面片,确定每个相交面片的先前有效版本是否被存储在所述客户端设备处;
用对应的先前有效版本对具有被存储在所述客户端设备处的先前有效版本的每个相交面片进行错误隐藏,以创建经错误隐藏的图谱;以及
使用所述经错误隐藏的图谱来渲染所述当前帧。
2.根据权利要求1所述的方法:
进一步包括由所述客户端设备累积列表,所述列表包括:所述着色图谱的每个面片的面片标识符以及与每个面片标识符相对应的面片在所述着色图谱中的位置,
其中,确定所述经解码的着色图谱的每个面片是否与未成功解码的切片相交是基于所累积的列表的。
3.根据权利要求1所述的方法:
进一步包括指示与被确定为不对应于先前有效版本的相交面片相对应的所述经错误隐藏的图谱中的每个区域,
其中,渲染所述当前帧进一步包括:使用针对每个所指示的区域的修补进行渲染。
4.根据权利要求1所述的方法,其中,所述相交面片的所述先前有效版本是用于渲染紧接在前的帧的所述相交面片的版本。
5.根据权利要求1所述的方法,其中,所述客户端设备是用于扩展现实(XR)应用、增强现实(AR)应用、虚拟现实(VR)应用或云游戏应用的客户端设备。
6.根据权利要求5所述的方法,其中,所述客户端设备是头显、多媒体控制台或头戴式显示器(HMD)。
7.根据权利要求1所述的方法,进一步包括:
基于与被确定为与至少一个所识别的未成功解码的切片相交的面片相对应的每个经错误隐藏的面片,来生成所述至少一个所识别的未成功解码的切片的替换切片;以及
基于所述替换切片对后续帧的经编码的着色图谱进行解码。
8.一种用于图形处理的装置,包括:
存储器,其存储可由至少一个处理器执行的指令;以及
至少一个处理器,其耦合到所述存储器并且被配置作为分割渲染图形处理架构的客户端设备来执行所述指令以:
接收当前帧的经编码的着色图谱,所述经编码的着色图谱由切片表征;
解码接收到的经编码的着色图谱并识别未成功解码的切片;
确定经解码的着色图谱的每个面片是否与所识别的未成功解码的切片相交;
针对每个相交面片,确定每个相交面片的先前有效版本是否被存储在所述客户端设备处;
用对应的先前有效版本对具有被存储在所述客户端设备处的先前有效版本的每个相交面片进行错误隐藏,以创建经错误隐藏的图谱;以及
使用所述经错误隐藏的图谱来渲染所述当前帧。
9.根据权利要求8所述的装置:
其中,所述至少一个处理器还被配置为执行所述指令以累积列表,所述列表包括:所述着色图谱的每个面片的面片标识符以及与每个面片标识符相对应的面片在所述着色图谱中的位置,
其中,确定所述经解码的着色图谱的每个面片是否与未成功解码的切片相交是基于所累积的列表的。
10.根据权利要求8所述的装置:
其中,所述至少一个处理器还被配置为执行所述指令以指示与被确定为不对应于先前有效版本的相交面片相对应的所述经错误隐藏的图谱中的每个区域,
其中,渲染所述当前帧进一步包括:使用针对每个所指示的区域的修补进行渲染。
11.根据权利要求8所述的装置,其中,所述相交面片的所述先前有效版本是用于渲染紧接在前的帧的所述相交面片的版本。
12.根据权利要求8所述的装置,其中,所述客户端设备是用于扩展现实(XR)应用、增强现实(AR)应用、虚拟现实(VR)应用或云游戏应用的客户端设备。
13.根据权利要求12所述的装置,其中,所述客户端设备是头显、多媒体控制台或头戴式显示器(HMD)。
14.根据权利要求8所述的装置,其中,所述至少一个处理器还被配置为执行所述指令以:
基于与被确定为与至少一个所识别的未成功解码的切片相交的面片相对应的每个经错误隐藏的面片,来生成所述至少一个所识别的未成功解码的切片的替换切片;以及
基于所述替换切片对后续帧的经编码的着色图谱进行解码。
15.一种用于客户端设备中的分割渲染架构中的图形处理的装置,包括:
用于接收当前帧的经编码的着色图谱的单元,所述经编码的着色图谱由切片表征;
用于解码接收到的经编码的着色图谱并识别未成功解码的切片的单元;
用于确定经解码的着色图谱的每个面片是否与所识别的未成功解码的切片相交的单元;
用于针对每个相交面片,确定每个相交面片的先前有效版本是否被存储在所述客户端设备处的单元;
用于用对应的先前有效版本对具有被存储在所述客户端设备处的先前有效版本的每个相交面片进行错误隐藏,以创建经错误隐藏的图谱的单元;以及
用于使用所述经错误隐藏的图谱来渲染所述当前帧的单元。
16.根据权利要求15所述的装置:
进一步包括用于由所述客户端设备累积列表的单元,所述列表包括:所述着色图谱的每个面片的面片标识符以及与每个面片标识符相对应的面片在所述着色图谱中的位置,
其中,用于确定所述经解码的着色图谱的每个面片是否与未成功解码的切片相交的单元是基于所累积的列表的。
17.根据权利要求15所述的装置:
进一步包括:用于指示与被确定为不对应于先前有效版本的相交面片相对应的所述经错误隐藏的图谱中的每个区域的单元,
其中,用于渲染所述当前帧的单元进一步包括:用于使用针对每个所指示的区域的修补进行渲染的单元。
18.根据权利要求15所述的装置,其中,所述相交面片的所述先前有效版本是用于渲染紧接在前的帧的所述相交面片的版本。
19.根据权利要求15所述的装置,其中,所述客户端设备是用于扩展现实(XR)应用、增强现实(AR)应用、虚拟现实(VR)应用或云游戏应用的客户端设备。
20.根据权利要求19所述的装置,其中,所述客户端设备是头显、多媒体控制台或头戴式显示器(HMD)。
21.根据权利要求15所述的装置,进一步包括:
用于基于与被确定为与至少一个所识别的未成功解码的切片相交的面片相对应的每个经错误隐藏的面片,来生成所述至少一个经识别的未成功解码的切片的替换切片的单元;以及
用于基于所述替换切片对后续帧的经编码的着色图谱进行解码的单元。
22.一种存储用于在分割渲染架构中由客户端设备进行图形处理的计算机可执行代码的计算机可读介质,所述代码在由处理器执行时使所述处理器:
接收当前帧的经编码的着色图谱,所述经编码的着色图谱由切片表征;
解码接收到的经编码的着色图谱并识别未成功解码的切片;
确定经解码的着色图谱的每个面片是否与所识别的未成功解码的切片相交;
针对每个相交面片,确定每个相交面片的先前有效版本是否被存储在所述客户端设备处;
用对应的先前有效版本对具有被存储在所述客户端设备处的先前有效版本的每个相交面片进行错误隐藏,以创建经错误隐藏的图谱;以及
使用所述经错误隐藏的图谱来渲染所述当前帧。
23.根据权利要求22所述的计算机可读介质:
其中,所述代码在由处理器执行时还使所述处理器累积列表,所述列表包括:所述着色图谱的每个面片的面片标识符以及与每个面片标识符相对应的面片在所述着色图谱中的位置,
其中,确定所述经解码的着色图谱的每个面片是否与未成功解码的切片相交是基于所累积的列表的。
24.根据权利要求22所述的计算机可读介质:
其中,所述代码在由处理器执行时还使所述处理器指示与被确定为不对应于先前有效版本的相交面片相对应的所述经错误隐藏的图谱中的每个区域,
其中,渲染所述当前帧进一步包括使用针对每个所指示的区域的修补进行渲染。
25.根据权利要求22所述的计算机可读介质,其中,所述相交面片的所述先前有效版本是用于渲染紧接在前的帧的所述相交面片的版本。
26.根据权利要求22所述的计算机可读介质,其中,所述客户端设备是用于扩展现实(XR)应用、增强现实(AR)应用、虚拟现实(VR)应用或云游戏应用的客户端设备。
27.根据权利要求26所述的计算机可读介质,其中,所述客户端设备是头显、多媒体控制台或头戴式显示器(HMD)。
28.根据权利要求22所述的计算机可读介质,其中,所述代码在由处理器执行时还使所述处理器:
基于与被确定为与至少一个所识别的未成功解码的切片相交的面片相对应的每个经错误隐藏的面片,来生成所述至少一个所识别的未成功解码的切片的替换切片;以及
基于所述替换切片对后续帧的经编码的着色图谱进行解码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/190,758 US11514641B2 (en) | 2021-03-03 | 2021-03-03 | Error concealment in split rendering using shading atlases |
US17/190,758 | 2021-03-03 | ||
PCT/US2022/070516 WO2022187777A1 (en) | 2021-03-03 | 2022-02-03 | Error concealment in split rendering using shading atlases |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116888632A true CN116888632A (zh) | 2023-10-13 |
Family
ID=80786705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280016565.1A Pending CN116888632A (zh) | 2021-03-03 | 2022-02-03 | 使用着色图谱的分割渲染中的错误隐藏 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11514641B2 (zh) |
EP (1) | EP4302272A1 (zh) |
KR (1) | KR20230130756A (zh) |
CN (1) | CN116888632A (zh) |
BR (1) | BR112023017159A2 (zh) |
TW (1) | TW202240380A (zh) |
WO (1) | WO2022187777A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11625806B2 (en) * | 2019-01-23 | 2023-04-11 | Qualcomm Incorporated | Methods and apparatus for standardized APIs for split rendering |
WO2024064031A1 (en) * | 2022-09-23 | 2024-03-28 | Qualcomm Incorporated | Pvs over udp for split rendering |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1264281A4 (en) * | 2000-02-25 | 2007-07-11 | Univ New York State Res Found | ARRANGEMENT AND METHOD FOR PROCESSING AND PLAYING A VOLUME |
US10310266B2 (en) | 2016-02-10 | 2019-06-04 | Advanced Micro Devices, Inc. | Method and system for streaming information in wireless virtual reality |
US10779011B2 (en) | 2017-07-31 | 2020-09-15 | Qualcomm Incorporated | Error concealment in virtual reality system |
US10593097B2 (en) | 2018-05-08 | 2020-03-17 | Qualcomm Technologies, Inc. | Distributed graphics processing |
US11039149B2 (en) | 2019-08-01 | 2021-06-15 | Qualcomm Incorporated | Dynamic video insertion based on feedback information |
EP3796658A1 (en) * | 2019-09-20 | 2021-03-24 | Koninklijke Philips N.V. | Coding scheme for depth data |
US11321905B2 (en) | 2020-04-03 | 2022-05-03 | Qualcomm Incorporated | Error concealment in split rendering |
-
2021
- 2021-03-03 US US17/190,758 patent/US11514641B2/en active Active
-
2022
- 2022-02-03 WO PCT/US2022/070516 patent/WO2022187777A1/en active Application Filing
- 2022-02-03 BR BR112023017159A patent/BR112023017159A2/pt unknown
- 2022-02-03 CN CN202280016565.1A patent/CN116888632A/zh active Pending
- 2022-02-03 EP EP22705360.0A patent/EP4302272A1/en active Pending
- 2022-02-03 KR KR1020237029263A patent/KR20230130756A/ko not_active Application Discontinuation
- 2022-02-07 TW TW111104276A patent/TW202240380A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
TW202240380A (zh) | 2022-10-16 |
BR112023017159A2 (pt) | 2023-12-05 |
US11514641B2 (en) | 2022-11-29 |
KR20230130756A (ko) | 2023-09-12 |
US20220284665A1 (en) | 2022-09-08 |
WO2022187777A1 (en) | 2022-09-09 |
EP4302272A1 (en) | 2024-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102590644B1 (ko) | 증강 현실 콘텐츠의 아틀라스 관리를 위한 방법 및 장치 | |
US11321905B2 (en) | Error concealment in split rendering | |
US20230039100A1 (en) | Multi-layer reprojection techniques for augmented reality | |
CN116888632A (zh) | 使用着色图谱的分割渲染中的错误隐藏 | |
US11468629B2 (en) | Methods and apparatus for handling occlusions in split rendering | |
US11908079B2 (en) | Variable rate tessellation | |
US20210312704A1 (en) | Rendering using shadow information | |
TW202230287A (zh) | 用於遮擋處理技術的方法和裝置 | |
TW202137141A (zh) | 用於邊緣壓縮抗混疊的方法和裝置 | |
US20230101978A1 (en) | Meshlet shading atlas | |
US20240104794A1 (en) | Pvs over udp for split rendering | |
WO2023164792A1 (en) | Checkerboard mask optimization in occlusion culling | |
WO2023055655A1 (en) | Meshlet shading atlas | |
WO2024064031A1 (en) | Pvs over udp for split rendering | |
TW202334898A (zh) | 基於自我調整區塊的訊框相似度編碼 | |
KR20240093463A (ko) | 메시릿 셰이딩 아틀라스 | |
KR20230025780A (ko) | 확인응답 메시지들을 사용한 신뢰성있는 비디오 송신을 위한 방법 및 장치 | |
CN116998145A (zh) | 用于基于显著性的帧颜色增强的方法和装置 | |
CN115917605A (zh) | 用于次序无关的遮挡计算的方法和装置 | |
CN116457830A (zh) | 基于区域不连续性的运动估计 |
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 |