Method and apparatus for efficient multi-view rasterization
By dividing the scene into multiple areas and generating geometric buffers, the problem of too many viewpoints in multi-view rasterization is solved, the processing efficiency of graphics rendering is improved, and efficient rendering of graphics content is achieved.
Patent Information
- Application Number
- CN202180016838.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-03-02
- Filing Date
- 2021-02-25
- Publication Date
- 2024-12-13
- Estimated Expiration
- 2041-02-25
AI Technical Summary
The prior art has cropping problems and a large number of viewpoints in multi-view rasterization, resulting in inefficient processing, especially in the excessive number of viewpoints generated for objects far from the viewpoint or the camera.
By dividing the scene into multiple regions and generating and combining geometric buffers based on viewpoints, the similarity between regions is determined, the number of unnecessary viewpoints is reduced, and the multi-view rasterization technology is used to improve rendering efficiency.
It effectively reduces the number of viewpoints generated in multi-view rasterization, improves the processing efficiency of graphics rendering, and reduces the load of graphics processing units.
Smart Images

Figure CN115152206B_ABST
Abstract
Description
[0001] Claiming priority under 35 U.S.C. § 119
[0002] This application claims priority to and the benefit of U.S. Non-provisional Application No. 16 / 806,774, filed on March 2, 2020, which is expressly incorporated herein by reference. Technical Field
[0003] The present disclosure relates generally to processing systems and, more particularly, to one or more techniques for graphics processing. Background Art
[0004] Computing devices typically utilize a graphics processing unit (GPU) to accelerate the rendering of graphics data for display. Such computing devices may include, for example, computer workstations, mobile phones such as so-called smart phones, embedded systems, personal computers, tablet computers, and video game consoles. The GPU executes a graphics processing pipeline that includes one or more processing stages that operate together to execute graphics processing commands and output frames. A central processing unit (CPU) can control the operation of the GPU by issuing one or more graphics processing commands to the GPU. Modern CPUs are typically capable of executing multiple applications concurrently, each of which may need to utilize a GPU during execution. Devices that provide content for visual presentation on a display typically include a GPU.
[0005] Typically, the GPU of a device is configured to perform processes in a graphics processing pipeline. However, with the advent of wireless communications and smaller handheld devices, the demand for improved graphics processing has continued to increase. Summary of the invention
[0006] A brief summary of one or more aspects is given below to provide a basic understanding of such aspects. This summary is not an extensive overview of all expected aspects, and is not intended to identify key elements of all aspects, nor to delineate the scope of any or all aspects. Its sole purpose is to present some concepts of one or more aspects in a simplified form as a prelude to a more detailed description presented later.
[0007] In one aspect of the present disclosure, a method, a computer-readable medium, and a device are provided. The device may be a central processing unit (CPU), a graphics processing unit (GPU), or any device that can perform graphics processing. The device may determine at least one scene including one or more viewpoints. In addition, the device may divide at least one scene into a plurality of regions based on each of the one or more viewpoints. In addition, the device may determine whether a region based on one of the one or more viewpoints is substantially similar to a region based on another of the one or more viewpoints. The device may also generate a geometric buffer for each of the plurality of regions based on the one or more viewpoints. In addition, the device may combine the geometric buffers for each of the plurality of regions based on the one or more viewpoints. The device may also determine shading information for at least some of the primitives in the set of potentially visible primitives. In addition, the device may also store at least some of the primitives in the set of potentially visible primitives. The device may also render at least one image based on the geometric buffer for each of the plurality of regions for the one or more viewpoints.
[0008] The details of one or more examples of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] Figure 1 is a block diagram illustrating an example content generation system in accordance with one or more techniques of this disclosure.
[0010] Figure 2 An example GPU in accordance with one or more techniques of this disclosure is shown.
[0011] Figure 3 Example images or surfaces are shown in accordance with one or more techniques of this disclosure.
[0012] Figure 4 Example images or surfaces are shown in accordance with one or more techniques of this disclosure.
[0013] Figure 5 An example diagram including multi-view rasterization is shown in accordance with one or more techniques of this disclosure.
[0014] Figure 6 An example diagram including buffers and sub-buffers is shown, in accordance with one or more techniques of this disclosure.
[0015] Figure 7 An example scenario in accordance with one or more techniques of this disclosure is shown.
[0016] Figure 8 An example scenario in accordance with one or more techniques of this disclosure is shown.
[0017] Fig. 9 An example scenario in accordance with one or more techniques of this disclosure is shown.
[0018] Fig.10 Example images in accordance with one or more techniques of this disclosure are shown.
[0019] Fig.11 An example flow diagram illustrating an example method in accordance with one or more techniques of this disclosure is shown. DETAILED DESCRIPTION
[0020] Multi-view rasterization (MVR) is a way to rasterize a scene or image based on the use of multiple views. For example, MVR can generate multiple views from multiple similar camera viewpoints or positions. The viewpoint can be divided into multiple regions or sub-buffers. In some cases, if the primitive is located in multiple regions or sub-buffers, there may be clipping (i.e., the primitive is divided at the boundary of the region or sub-buffer). In addition, the number of viewpoints generated for objects at a long distance from the viewpoint or camera in MVR may be high. For example, these viewpoints at a long distance from the camera can be discarded and / or not utilized. Various aspects of the present disclosure can solve the above-mentioned clipping problem or the problem of a large number of viewpoints in MVR. For example, various aspects of the present disclosure can reduce the number of viewpoints generated for objects at a long distance from the viewpoint or camera in MVR. In some cases, various aspects of the present disclosure can determine whether the area for one viewpoint is substantially similar or identical to the area for another viewpoint.
[0021] The following is a more complete description of various aspects of the system, device, computer program product and method with reference to the accompanying drawings. However, the present disclosure can be embodied in many different forms and should not be interpreted as being limited to any specific structure or function presented throughout the present disclosure. Specifically, these aspects are provided so that the present disclosure will be comprehensive and complete, and the scope of the present disclosure will be fully conveyed to those skilled in the art. Based on the teachings of this article, it should be recognized by those skilled in the art that the scope of the present disclosure is intended to cover any aspect of the system, device, computer program product and method disclosed herein, whether the aspect is implemented independently of other aspects of the present disclosure or implemented in combination with other aspects of the present disclosure. For example, using any number of aspects set forth herein, a device can be implemented or a method can be practiced. In addition, the scope of the present disclosure is intended to cover such a device or method that is practiced using other structures, functions, or structures and functions other than the various aspects of the present disclosure set forth herein or different from the various aspects of the present disclosure set forth herein. Any aspect disclosed herein can be embodied by one or more elements of the claims.
[0022] Although various aspects are described herein, many variations and permutations of these aspects fall within the scope of the present disclosure. Although some potential benefits and advantages of various aspects of the present disclosure are mentioned, the scope of the present disclosure is not intended to be limited to specific benefits, uses or objectives. Specifically, various aspects of the present disclosure are intended to be widely applicable to different wireless technologies, system configurations, networks and transmission protocols, some of which are illustrated by way of example in the drawings and in the description below. The specific embodiments and drawings are merely illustrative of the present disclosure and are not limiting. The scope of the present disclosure is defined by the appended claims and their equivalents.
[0023] Several aspects are presented with reference to various apparatus and methods. These apparatus and methods are described in the detailed description below and illustrated in the accompanying drawings by various blocks, components, circuits, processes, algorithms, etc. (collectively referred to as "elements"). These elements may be implemented using electronic hardware, computer software, or any combination thereof. Whether such elements are implemented as hardware or software depends on the specific application and the design constraints imposed on the overall system.
[0024] For example, an element, or any part of an element, or any combination of elements may be implemented as a "processing system", which includes one or more processors (which may also be referred to as processing units). Examples of processors include: microprocessors, microcontrollers, graphics processing units (GPUs), general purpose GPUs (GPGPUs), central processing units (CPUs), application processors, digital signal processors (DSPs), reduced instruction set computing (RISC) processors, systems on chip (SoCs), baseband processors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform various functions described throughout the present disclosure. One or more processors in a processing system may execute software. Whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise, software may be broadly interpreted to mean instructions, instruction sets, codes, code segments, program codes, programs, subroutines, software components, applications, software applications, software packages, routines, subroutines, objects, executable files, threads of execution, processes, functions, etc. The term application may refer to software. As described herein, one or more technologies may refer to an application (i.e., software) configured to perform one or more functions. In such an example, the application may be stored on a memory, for example, an on-chip memory of a processor, a system memory, or any other memory. The hardware described herein (such as a processor) may be configured to execute an application. For example, an application may be described as including a code that causes the hardware to execute one or more technologies described herein when executed by hardware. As an example, the hardware may access code from a memory and execute code accessed from the memory to perform one or more technologies described herein. In some examples, components are identified in the present disclosure. In such an example, a component may be hardware, software, or a combination thereof. A component may be a separate component or a subcomponent of a single component.
[0025] Accordingly, in one or more examples described herein, the described functions may be implemented in hardware, software, or any combination thereof. If implemented in software, the functions may be stored on a computer-readable medium or encoded as one or more instructions or codes on a computer-readable medium as one or more instructions or codes. Computer-readable media include computer storage media. Storage media may be any available medium that can be accessed by a computer. By way of example and not limitation, such computer-readable media may include random access memory (RAM), read-only memory (ROM), electrically erasable programmable ROM (EEPROM), optical disk storage, magnetic disk storage, other magnetic storage devices, a combination of computer-readable media of the above types, or any other medium that may be used to store computer executable code that can be accessed by a computer in the form of instructions or data structures.
[0026] In summary, this disclosure describes techniques for having a graphics processing pipeline in a single device or multiple devices to improve rendering of graphics content and / or reduce load on a processing unit (i.e., any processing unit, such as a GPU, configured to perform one or more of the techniques described herein). For example, this disclosure describes techniques for graphics processing in any device that utilizes graphics processing. Other example benefits are described throughout this disclosure.
[0027] As used herein, instances of the term "content" may refer to "graphics content," "images," and vice versa. This is true regardless of whether the term is used as an adjective, a noun, or another part of speech. In some examples, as used herein, the term "graphics content" may refer to content produced by one or more processes of a graphics processing pipeline. In some examples, as used herein, the term "graphics content" may refer to content produced by a processing unit configured to perform graphics processing. In some examples, as used herein, the term "graphics content" may refer to content produced by a graphics processing unit.
[0028] In some examples, as used herein, the term "display content" may refer to content generated by a processing unit configured to perform display processing. In some examples, as used herein, the term "display content" may refer to content generated by a display processing unit. Graphics content may be processed to become display content. For example, a graphics processing unit may output graphics content such as a frame to a buffer (which may be referred to as a frame buffer). The display processing unit may read graphics content (such as one or more frames) from a buffer, and perform one or more display processing techniques thereon to generate display content. For example, the display processing unit may be configured to perform synthesis on one or more rendering layers to generate a frame. As another example, the display processing unit may be configured to synthesize, mix or otherwise combine two or more layers into a single frame. The display processing unit may be configured to perform scaling (e.g., zooming in or out) on a frame. In some examples, a frame may refer to a layer. In other examples, a frame may refer to two or more layers that have been mixed together to form a frame, i.e., a frame includes two or more layers, and a frame including two or more layers may then be mixed.
[0029] Figure 11 is a block diagram illustrating an example content generation system 100 configured to implement one or more techniques of the present disclosure. The content generation system 100 includes a device 104. The device 104 may include one or more components or circuits for performing various functions described herein. In some examples, one or more components of the device 104 may be components of a SOC. The device 104 may include one or more components configured to perform one or more techniques of the present disclosure. In the example shown, the device 104 may include a processing unit 120, a content encoder / decoder 122, and a system memory 124. In some aspects, the device 104 may include multiple optional components, such as a communication interface 126, a transceiver 132, a receiver 128, a transmitter 130, a display processor 127, and one or more displays 131. References to the display 131 may refer to one or more displays 131. For example, the display 131 may include a single display or multiple displays. The display 131 may include a first display and a second display. The first display may be a left-eye display, and the second display may be a right-eye display. In some examples, the first display and the second display may receive different frames for presentation thereon. In other examples, the first display and the second display may receive the same frame for presentation thereon. In further examples, the results of the graphics processing may not be displayed on the device, for example, the first display and the second display may not receive any frames for presentation thereon. Instead, the frames or graphics processing results may be transmitted to another device. In some aspects, this may be referred to as split rendering.
[0030] The processing unit 120 may include an internal memory 121. The processing unit 120 may be configured to perform graphics processing, such as in the graphics processing pipeline 107. The content encoder / decoder 122 may include an internal memory 123. In some examples, the device 104 may include a display processor (such as a display processor 127) to perform one or more display processing techniques on one or more frames generated by the processing unit 120 before presentation by one or more displays 131. The display processor 127 may be configured to perform display processing. For example, the display processor 127 may be configured to perform one or more display processing techniques on one or more frames generated by the processing unit 120. The one or more displays 131 may be configured to display or otherwise present frames processed by the display processor 127. In some examples, the one or more displays 131 may include one or more of the following: a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, a projection display device, an augmented reality display device, a virtual reality display device, a head mounted display, or any other type of display device.
[0031] Memory external to the processing unit 120 and the content encoder / decoder 122, such as the system memory 124, may be accessible to the processing unit 120 and the content encoder / decoder 122. For example, the processing unit 120 and the content encoder / decoder 122 may be configured to read from and / or write to the external memory, such as the system memory 124. The processing unit 120 and the content encoder / decoder 122 may be communicatively coupled to the system memory 124 via a bus. In some examples, the processing unit 120 and the content encoder / decoder 122 may be communicatively coupled to each other via a bus or a different connection.
[0032] The content encoder / decoder 122 may be configured to receive graphics content from any source, such as the system memory 124 and / or the communication interface 126. The system memory 124 may be configured to store the received encoded or decoded graphics content. The content encoder / decoder 122 may be configured to receive the encoded or decoded graphics content in the form of encoded pixel data, for example, from the system memory 124 and / or the communication interface 126. The content encoder / decoder 122 may be configured to encode or decode any graphics content.
[0033] Internal memory 121 or system memory 124 may include one or more volatile or non-volatile memories or storage devices. In some examples, internal memory 121 or system memory 124 may include RAM, SRAM, DRAM, erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, magnetic data media or optical storage media, or any other type of memory.
[0034] According to some examples, the internal memory 121 or the system memory 124 may be a non-transitory storage medium. The term "non-transitory" may indicate that the storage medium is not embodied in a carrier wave or a propagated signal. However, the term "non-transitory" should not be interpreted to mean that the internal memory 121 or the system memory 124 is non-removable or that its contents are static. As an example, the system memory 124 may be removable from the device 104 and moved to another device. As another example, the system memory 124 may be non-removable from the device 104.
[0035] Processing unit 120 may be a central processing unit (CPU), a graphics processing unit (GPU), a general purpose GPU (GPGPU), or any other processing unit that may be configured to perform graphics processing. In some examples, processing unit 120 may be integrated into the motherboard of device 104. In some examples, processing unit 120 may be present on a graphics card installed in a port in the motherboard of device 104, or may be otherwise incorporated into a peripheral device configured to interoperate with device 104. Processing unit 120 may include one or more processors, such as one or more microprocessors, GPUs, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), arithmetic logic units (ALUs), digital signal processors (DSPs), discrete logic, software, hardware, firmware, other equivalent integrated or discrete logic circuits, or any combination thereof. If the technology is partially implemented in software, processing unit 120 may store instructions for the software in a suitable non-transitory computer-readable storage medium (e.g., internal memory 121), and may use one or more processors to execute instructions in hardware to perform the technology of the present disclosure. Any of the foregoing, including hardware, software, a combination of hardware and software, etc., may be considered to be one or more processors.
[0036] The content encoder / decoder 122 may be any processing unit configured to perform content decoding. In some examples, the content encoder / decoder 122 may be integrated into the mainboard of the device 104. The content encoder / decoder 122 may include one or more processors, such as one or more microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), arithmetic logic units (ALUs), digital signal processors (DSPs), video processors, discrete logic, software, hardware, firmware, other equivalent integrated or discrete logic circuits, or any combination thereof. If the technology is partially implemented in software, the content encoder / decoder 122 may store instructions for the software in a suitable non-transitory computer-readable storage medium (e.g., internal memory 121), and may use one or more processors to execute the instructions in hardware to perform the technology of the present disclosure. Any of the foregoing including hardware, software, a combination of hardware and software, etc. may be considered to be one or more processors.
[0037] In some aspects, the content generation system 100 may include an optional communication interface 126. The communication interface 126 may include a receiver 128 and a transmitter 130. The receiver 128 may be configured to perform any receiving functions described herein with respect to the device 104. In addition, the receiver 128 may be configured to receive information (e.g., eye or head position information, rendering commands, or position information) from another device. The transmitter 130 may be configured to perform any sending functions described herein with respect to the device 104. For example, the transmitter 130 may be configured to send information (which may include a request for content) to another device. The receiver 128 and the transmitter 130 may be combined into a transceiver 132. In such an example, the transceiver 132 may be configured to perform any receiving functions and / or sending functions described herein with respect to the device 104.
[0038] Reference again Figure 1 In some aspects, the graphics processing pipeline 107 may include a determination component 198 configured to determine at least one scene including one or more viewpoints. The determination component 198 may also be configured to divide the at least one scene into a plurality of regions based on each of the one or more viewpoints. The determination component 198 may also be configured to determine whether a region based on one of the one or more viewpoints is substantially similar to a region based on another of the one or more viewpoints. The determination component 198 may also be configured to generate a geometry buffer for each of the plurality of regions based on the one or more viewpoints. The determination component 198 may also be configured to combine the geometry buffers for each of the plurality of regions based on the one or more viewpoints. The determination component 198 may also be configured to determine shading information for at least some of the primitives in the set of potentially visible primitives. The determination component 198 may also be configured to store at least some of the primitives in the set of potentially visible primitives. The determination component 198 may also be configured to render at least one image based on the geometry buffers for each of the plurality of regions for the one or more viewpoints.
[0039] As described herein, a device such as device 104 may refer to any device, apparatus, or system configured to perform one or more of the techniques described herein. For example, a device may be a server, a base station, a user device, a client device, a station, an access point, a computer (e.g., a personal computer, a desktop computer, a laptop computer, a tablet computer, a computer workstation, or a mainframe computer), an end product, an apparatus, a phone, a smart phone, a server, a video game platform or console, a handheld device (e.g., a portable video game device or a personal digital assistant (PDA)), a wearable computing device (e.g., a smart watch, an augmented reality device, or a virtual reality device), a non-wearable device, a display or display device, a television, a television set-top box, an intermediate network device, a digital media player, a video streaming device, a content streaming device, an onboard computer, any mobile device, any device configured to generate graphical content, or any device configured to perform one or more of the techniques described herein. The process herein may be described as being performed by a specific component (e.g., a GPU), but in further embodiments, may be performed using other components (e.g., a CPU) consistent with the disclosed embodiments.
[0040] The GPU can process multiple types of data or data packets in the GPU pipeline. For example, in some aspects, the GPU can process two types of data or data packets, such as context register packets and draw call data. The context register packet can be a global state information set that can manage how the graphics context will be processed, such as information about global registers, shader programs, or constant data. For example, the context register packet may include information about the color format. In some aspects of the context register packet, there may be a bit indicating which workload belongs to the context register. In addition, there may be multiple functions or programs running simultaneously and / or in parallel. For example, a function or program may describe a specific operation, such as a color mode or color format. Therefore, the context register can define multiple states of the GPU.
[0041] The context state can be used to determine how a single processing unit (e.g., a vertex fetcher (VFD), a vertex shader (VS), a shader processor, or a geometry processor) operates, and / or in which mode the processing unit operates. To this end, the GPU can use context registers and programming data. In some aspects, the GPU can generate workloads, such as vertex or pixel workloads, based on context register definitions of modes or states in a pipeline. Certain processing units (e.g., VFDs) can use these states to determine certain functions, such as how to assemble vertices. Since these modes or states may change, the GPU may change the corresponding context. In addition, the workload corresponding to a mode or state can follow a constantly changing mode or state.
[0042] Figure 2 An example GPU 200 is shown in accordance with one or more techniques of this disclosure. Figure 2 As shown in FIG. 1 , the GPU 200 includes a command processor (CP) 210, a draw call group 212, a VFD 220, a VS 222, a vertex cache (VPC) 224, a triangle setup engine (TSE) 226, a rasterizer (RAS) 228, a Z pass engine (ZPE) 230, a pixel interpolator (PI) 232, a fragment shader (FS) 234, a rendering back end (RB) 236, an L2 cache (UCHE) 238, and a system memory 240. Although Figure 2 GPU 200 is shown to include processing units 220-238, but GPU 200 may include multiple additional processing units. In addition, processing units 220-238 are only examples, and according to the present disclosure, the GPU may use any combination or order of processing units. GPU 200 also includes command buffer 250, context register group 260 and context state 261.
[0043] like Figure 2 As shown in , the GPU may utilize a CP (e.g., CP 210) or a hardware accelerator to parse a command buffer into a context register group (e.g., context register group 260) and / or a draw call data group (e.g., draw call group 212). Then, the CP 210 may send the context register group 260 or the draw call data group 212 to a processing unit or block in the GPU through a separate path. In addition, the command buffer 250 may alternate different states of context registers and draw calls. For example, the command buffer may be constructed in the following manner: context registers of context N, draw calls of context N, context registers of context N+1, and draw calls of context N+1.
[0044] The GPU can render images in a variety of different ways. In some cases, the GPU can use rendering or tiled rendering to render images. In a tiled rendering GPU, the image can be divided or separated into different sections or tiles. After the image is divided, each section or tile can be rendered separately. The tiled rendering GPU can divide the computer graphics image into a grid format so that each part of the grid (i.e., tile) is rendered separately. In some aspects, in a binning path, the image can be divided into different bins or tiles. In some aspects, during a binning path, a visibility stream can be constructed, in which visible primitives or draw calls can be identified.
[0045] In some aspects, the GPU may apply a drawing or rendering process to different containers or tiles. For example, the GPU may render to a container and perform all drawing on the primitives or pixels in the container. During the process of rendering to the container, the rendering target may be located in the GPU internal memory (GMEM). In some cases, after rendering to a container, the contents of the rendering target may be moved to the system memory, and the GMEM may be released to render the next container. In addition, the GPU may render to another container and perform drawing for the primitives or pixels in the container. Therefore, in some aspects, there may be a small number of containers (e.g., four containers) that cover all the drawing in a surface. In addition, the GPU may loop all drawing in a container, but perform drawing for visible drawing calls (i.e., drawing calls including visible geometry). In some aspects, for example, in a sub-container path, a visibility stream may be generated to determine the visibility information of each primitive in an image or scene. For example, such a visibility stream may identify whether a certain primitive is visible. In some aspects, this information may be used, for example, to remove invisible primitives in a rendering path. In addition, at least some primitives identified as visible in the primitives may be rendered in the rendering path.
[0046] In some aspects of tiled rendering, there may be multiple processing stages or paths. For example, rendering may be performed in two paths, such as a visibility or container visibility path and a rendering or container rendering path. During the visibility path, the GPU may input a rendering workload, record the position of a primitive or triangle, and then determine which primitives or triangles fall into which container or region. In some aspects of the visibility path, the GPU may also identify or mark the visibility of each primitive or triangle in the visibility stream. During the rendering path, the GPU may input a visibility stream and process a container or region at a time. In some aspects, the visibility stream may be analyzed to determine which primitives or vertices of primitives are visible or invisible. Therefore, visible primitives or vertices of primitives may be processed. By doing so, the GPU may reduce the unnecessary workload of processing or rendering invisible primitives or triangles.
[0047] In some aspects, during the visibility pass, certain types of primitive geometry (e.g., positional geometry) may be processed. In addition, primitives may be classified into different containers or regions based on the position or positioning of primitives or triangles. In some cases, the classification of primitives or triangles into different containers may be performed by determining visibility information for these primitives or triangles. For example, the GPU may determine visibility information for each primitive in each container or region or write the visibility information, for example, to a system memory. The visibility information may be used to determine or generate a visibility stream. In the rendering pass, the primitives in each container may be rendered separately. In these cases, the visibility stream may be extracted from a memory for discarding primitives that are not visible to the container.
[0048] Some aspects of the GPU or GPU architecture can provide multiple different options for rendering (e.g., software rendering and hardware rendering). In software rendering, the driver or CPU can copy the entire frame geometry by processing each view at a time. In addition, some different states can change depending on the view. Therefore, in software rendering, the software can copy the entire workload by changing some states that can be used to render for each viewpoint in the image. In some aspects, since the GPU may submit the same workload multiple times for each viewpoint in the image, there may be an increased amount of overhead. In hardware rendering, the hardware or GPU may be responsible for copying or processing the geometry for each viewpoint in the image. Therefore, the hardware can manage the copying or processing of primitives or triangles for each viewpoint in the image.
[0049] Figure 3 An image or surface 300 is shown, which includes a plurality of primitives divided into a plurality of containers. Figure 3 As shown in FIG. 3 , image or surface 300 includes region 302, which includes primitives 321, 322, 323, and 324. Primitives 321, 322, 323, and 324 are divided into different containers or placed into different containers (e.g., containers 310, 311, 312, 313, 314, and 315). Figure 3 An example of tiled rendering using multiple viewpoints for primitives 321-324 is shown. For example, primitives 321-324 are located in a first viewpoint 350 and a second viewpoint 351. Therefore, GPU processing or rendering of an image or surface 300 including region 302 may utilize multi-viewpoint or multi-view rendering.
[0050] As pointed out herein, a GPU or graphics processor unit can use a tiled rendering architecture to reduce power consumption or save memory bandwidth. As further described above, this rendering method can divide the scene into multiple containers, and includes a visibility path that identifies the visible triangles in each container. Therefore, in tiled rendering, the full screen can be divided into multiple containers or tiles. Then, the scene can be rendered multiple times, for example, once or multiple times for each container.
[0051] In various aspects of graphics rendering, some graphics applications may render to a single target (i.e., render target) one or more times. For example, in graphics rendering, a frame buffer on a system memory may be updated multiple times. A frame buffer may be a portion of a memory or random access memory (RAM) (e.g., containing a bitmap or storage device) to help store display data for a GPU. A frame buffer may also be a memory buffer containing a complete data frame. In addition, a frame buffer may be a logical buffer. In some aspects, updating a frame buffer may be performed in a container or tile rendering, wherein, as discussed above, a surface is divided into a plurality of containers or tiles, and each container or tile may then be rendered separately. In addition, in tiled rendering, a frame buffer may be divided into a plurality of containers or tiles.
[0052] As noted herein, in a container or tiled rendering architecture, a frame buffer may have data that is repeatedly stored or written to it, for example, when rendering from different types of memory. This may be referred to as parsing and unparsing a frame buffer or system memory. For example, when storing or writing to one frame buffer and then switching to another frame buffer, the data or information on the frame buffer may be parsed from the GPU internal memory (GMEM) at the GPU to the system memory (i.e., memory in a double data rate (DDR) RAM or dynamic RAM (DRAM)).
[0053] In some aspects, system memory may also be a system on chip (SoC) memory or another chip-based memory for storing data or information, such as on a device or smartphone. System memory may also be a physical data storage device shared by a CPU and / or GPU. In some aspects, system memory may be a DRAM chip, such as on a device or smartphone. Thus, SoC memory may be a chip-based way to store data.
[0054] In some aspects, GMEM can be an on-chip memory at the GPU, which can be implemented by static RAM (SRAM). In addition, GMEM can be stored on a device (e.g., a smart phone). As noted herein, data or information can be transmitted between a system memory or DRAM and GMEM, for example, at a device. In some aspects, the system memory or DRAM can be located at a CPU or GPU. In addition, data can be stored at a DDR or DRAM. In container or tiled rendering, a small portion of memory can be stored at a GPU (e.g., at a GMEM). In some cases, storing data at a GMEM may use a larger processing workload and / or power consumption than storing data at a frame buffer or system memory.
[0055] In some aspects, the GPU may perform tessellation or a tessellation process. During the tessellation process, larger primitives may be divided into smaller sub-primitives or tessellated primitives. Tessellation may divide an image into more detailed sub-primitives or tessellated primitives, which may result in a more detailed rendering process and more detailed graphics content. A tessellator may determine or generate sub-primitives or tessellated primitives. In some aspects, one or more primitives may be grouped into patches. The tessellator may then determine or generate a geometry-based tessellation of a patch, for example, using triangles or rectangles, based on one or more tessellation parameters.
[0056] Compared with the image or surface originally generated based on the original block of primitive, the tessellation process can allow to determine or generate a more detailed or smoother image or surface. In addition, tessellation can be used to realize or render a more detailed surface in the image. As mentioned above, the tessellation process can produce sub-primitives or tessellated primitives. These sub-primitives or tessellated primitives are generated as outputs from tessellation, for example, based on one or more primitives or tiles. These primitives can also be referred to as original primitives or regular primitives, which are generated based on the original image or surface value. The sub-primitives determined or generated or the tessellated primitives can be more detailed versions of the original primitives or tiles. In some cases, each of the sub-primitives can be smaller than each of the primitives or tiles. Therefore, the original primitive can be shown as being divided into sub-primitives or tessellated primitives.
[0057] Figure 4 An example image or surface 400 is shown, in accordance with one or more techniques of this disclosure. Figure 4 The image 400 is shown to be divided into a plurality of containers, for example, container 410, container 420, container 430, and container 440. In addition, Figure 4A tile 460 is shown that includes one or more primitives 462. In some aspects, tile 460 may be referred to as a group of primitives or one or more primitives. Figure 4 Also shown are a plurality of sub-picture primitives 470, which include sub-picture primitive 472, sub-picture primitive 474, and sub-picture primitive 476. Figure 4 As shown in , a single sub-primitive in the plurality of sub-primitives 470 can be a variety of different shapes, such as a rectangle (eg, sub-primitive 476 ) or a triangle (eg, sub-primitives 472 , 474 ).
[0058] Figure 4 An example of the above-described tessellation process is shown. For example, the original or input primitives (e.g., one or more primitives 462 in tile 460) are shown as larger triangles with points as vertices. Sub-primitives or tessellated primitives (e.g., sub-primitive 470) output from the tessellation process are shown as smaller rectangles or triangles on surface 400, e.g., sub-primitives 472, 474, 476.
[0059] Multiview rasterization (MVR) is a way of rasterizing a scene or image based on the use of multiple views. For example, MVR can calculate or generate multiple views from multiple similar camera positions. These views can be based on similar camera viewpoints. MVR can be used with multiple different rendering aspects, such as a potentially visible set (PVS). In some aspects, these multiple views can be generated or calculated, and the PVS can be compiled based on data based on these multiple views. In some cases, the PVS can be used for multiple different graphics processing methods, such as segmented rendering or vector streaming.
[0060] MVR can also be used when rendering visual results that are different from ordinary images (e.g., light fields or focus stacks). This may be important for virtual reality (VR), augmented reality (AR), or extended reality (XR) displays, or generally displays with dynamic focus cues. MVR can also supplement other shading methods (e.g., object space shading). In some aspects, MVR can allow the GPU to exploit certain aspects of object space shading (e.g., spatial and / or temporal correlation). In addition, in some cases, MVR can generate multiple images from a single data structure that stores pre-shading information (e.g., a texture or shading atlas). In addition, MVR can provide decoupled shading on a variety of different GPUs.
[0061] Figure 5 Schematic diagram 500 including multi-view rasterization according to one or more techniques of the present disclosure is shown. Figure 5As shown in , diagram 500 includes a scene 502 , a geometry buffer (G-buffer) 504 , a viewpoint 506 , an atlas or shading atlas 508 , and a color buffer 510 . Figure 5 An example of a process (eg, rendering a light field) is shown.
[0062] like Figure 5 As shown in , the input of the process includes a scene 502, which includes a plurality of primitives (e.g., N primitives). The input of the process also includes a plurality of viewpoints 506, which may be arranged in a grid (e.g., a grid of K2 viewpoints arranged in a square pattern in a plane). In addition, the output of the process after the first state may include a plurality of G-buffers 504, such as K 2 G-buffers 504. These G-buffers 504 may include multiple values, such as z values, identifications (id) and / or texture horizontal (U) vertical (V) (UV) coordinates (tex-uv). In addition, each of the G-buffers 504 may share an atlas or shading atlas 508. In addition, the output of the process includes a color buffer 510 for the light field, such as K2 color buffers. Therefore, Figure 5 It appears that there can be three integration passes to render light fields.
[0063] like Figure 5 As shown in , the process or algorithm may include multiple passes or stages, for example, Pass 1, Pass 2, and / or Pass 3. For example, Pass 1 may include a visibility pass, which includes an MVR of a viewpoint 506 to a G buffer 504. For example, Pass 1 may include a K buffer of a viewpoint to multiple buffers (e.g., depth, id, and tex-uv buffers). 2 The algorithm also includes pass 2, which may be a shading pass. In the shading pass, the PVS of each buffer id may be shaded into an atlas or shading atlas 508. Additionally, pass 3 may include a parsing pass, which may include deferred rendering to resample the atlas texture into a perspective view stored in a color buffer 510 (e.g., K2 color buffers).
[0064] Aspects of the present disclosure may also include various geometry stages. For example, the present disclosure may include K2 draw calls. Aspects of the present disclosure may also include instantiating each primitive K2 times using a vertex shader, and instantiating each primitive K2 times using a geometry shader with a fixed output (e.g., an output of 1). In addition, aspects of the present disclosure may include a geometry shader with a fixed output (e.g., an output of K2) or multiple extensions for MVR. In addition, the present disclosure may include a mesh shader as a geometry stage.
[0065] Aspects of the present disclosure may also include multiple different buffers, such as sub-buffers defined in software. In order to store multiple buffers or G-buffers, the present disclosure may allocate memory for such storage, such as system memory 124 and / or internal memory 121. For example, the present disclosure may include various G-buffers because the number of hardware k-buffers or other frame buffer attachments may be limited. Based on this, aspects of the present disclosure may utilize implementations in software. For example, if there is enough memory in a GPU or CPU, the buffer may be implemented in software. For example, the present disclosure may use a large buffer that is split into different areas (e.g., rectangular areas) to implement the process. Aspects of the present disclosure may also include a vertex shader, such as a vertex shader that determines for each vertex the sub-buffer id to which the vertex should send its output. In addition, aspects of the present disclosure may include looking up offsets per sub-buffer (x, y) and combining them with vertices.
[0066] Figure 6 Schematic diagram 600 is shown in accordance with one or more techniques of the present disclosure. Figure 6 As shown in , schematic diagram 600 includes a buffer 610 , a sub-buffer 620 , and a primitive 602 . Figure 6 It is shown that primitives 602 from buffer 610 may vary slightly for different regions or areas of sub-buffer 620. In some aspects, a geometry shader or a mesh shader may perform this process.
[0067] like Figure 6 As shown in , if a primitive is located in multiple sub-buffers (e.g., primitive 602 in sub-buffer 620), there may be clipping, that is, dividing the primitive at the boundary of the region or sub-buffer 620. In some aspects, the clipping or division of primitives can be implemented in software. For example, the present disclosure can discard the clipped primitives in the fragment shader. Various aspects of the present disclosure can also utilize hardware clipping planes. In addition, various aspects of the present disclosure can include a stencil mask for each sub-buffer.
[0068] As noted above, there is a need to efficiently solve the primitive clipping problem or partitioning of primitives at segments or regions for MVR. Furthermore, the number of viewpoints generated for objects at a large distance from a viewpoint or camera in MVR may be high. For example, if the primitive is at a large distance from the viewpoint, the projection of the primitive to each of the views may be similar, or in some cases the same, and each of these projections may not need to be calculated. Therefore, there is a need to reduce the number of viewpoints generated for objects at a large distance from a viewpoint or camera in MVR.
[0069] Aspects of the present disclosure may address the above-described clipping problem or issues with a large number of viewpoints in MVR. For example, aspects of the present disclosure may reduce the number of viewpoints generated for objects at a large distance from a viewpoint or camera. In some cases, aspects of the present disclosure may determine whether a region for one viewpoint is substantially similar or identical to a region for another viewpoint.
[0070] Figure 7 Scenario 700 according to one or more techniques of the present disclosure is shown. More specifically, Figure 7 is a top view or bird's-eye view of scene 700. Figure 7 As shown in , scene 700 includes multiple areas or sections, such as area 701, area 702, area 703, and area 704. Scene 700 also includes primitives or triangles 710, viewpoints or cameras 720, and frustum 730. Primitives or triangles 710 can span multiple areas, such as areas 703 and 704. In addition, viewpoint or camera 720 is a point near the bottom of scene 700. Camera 720 can be one camera position in scene 700, where there are multiple other camera positions (e.g., three or nine camera positions).
[0071] Aspects of the present disclosure may assign regions (e.g., regions 701, 702, 703, and 704) to separate sub-buffers. By doing so, there will be a three-dimensional (3D) subdivision of scene 700. Thus, the present disclosure may subdivide scene 700 into multiple regions. In some aspects, there may be one sub-buffer per camera and per region. In addition, when switching viewpoints, the distance from camera 720 to primitive 710 may remain the same. Figure 7 As shown in , primitive 710 can be split between different regions (e.g., region 703 and region 704). In some aspects, primitive 710 can be assigned to a specific region (e.g., region 703). Therefore, if primitives or triangles are split between regions, the primitives or triangles can be assigned to smaller regions.
[0072] In addition, if Figure 7 As shown in , each region can be a multiple of the other regions. For example, region 702 can be twice the size of region 701, region 703 can be twice the size of region 702, and / or region 704 can be twice the size of region 703. Figure 7As shown in , as the area moves away from the camera 720, it can become larger and larger. As the object moves away from the camera 720, there can be an exponential decrease in the number of views. This can limit the amount of potential differences between camera views. Therefore, if the object is far away from the camera, there can be little difference between similar camera positions, for example, if the camera is slightly translated parallel to the image plane. Therefore, as the object moves farther and farther away from the camera, the present disclosure can limit the number of camera positions or viewpoints. In some aspects, the present disclosure can select a representative camera position or viewpoint and then use that viewpoint for substantially similar viewpoints or camera positions.
[0073] In some aspects, for multiple views (e.g., K2 views), different regions may correspond to different numbers of views as they move away from the camera. For example, region Z may correspond to K2 / 4 (Z-1) For example, region 701 (closest to camera 720) may correspond to K2 views, region 702 may correspond to K2 / 4 views, region 703 may correspond to K2 / 16 views, and region 704 may correspond to K2 / 64 views. (Z-1) As it gets larger, the corresponding area Z may approach a view. In some cases, if the depth buffer of the selected viewpoint in an area (eg, area 701 ) is less than infinity, the present disclosure may select a viewpoint in the next area (eg, area 702 ).
[0074] like Figure 7 As shown in , aspects of the present disclosure may subdivide a frustum (e.g., view frustum 730) into Z depth regions. This may include multiple exponential depth intervals, such that the subdivision of the frustum may include the interval difference being halved with each successive interval (e.g., intervals [1-2m], [2-4m], [4-8m], etc.). Additionally, aspects of the present disclosure may treat each region as a separate sub-buffer with its own depth buffer.
[0075] As mentioned above, aspects of the present disclosure can also render primitives into exactly one region. For example, regions can be selected in a geometry shader by quantizing the minimum depth of vertices. The present disclosure can inversely quantize regions so that the number of views is reduced for regions further away from the camera. As noted above, if primitives or triangles are split between regions, primitives can be assigned to the smaller of the shared regions. If there is no geometry shader in the process, adjacent attributes can be used to select regions in a vertex shader.
[0076] Figure 8 800 is a diagram illustrating a scenario in accordance with one or more techniques of the present disclosure. More specifically, Figure 8is a top view or bird's-eye view of scene 800. Figure 8 As shown, scene 800 includes multiple regions or sections, for example, region 801, region 802, region 803, and region 804. Scene 800 also includes object 810, viewpoint or camera 820, view cone 830, and viewing ray 840. Object 810 can span multiple regions, or be assigned to a single region (e.g., region 804). In addition, viewpoint or camera 820 is a point near the bottom of scene 800. Camera 820 can be a camera position in scene 800, wherein there are multiple other camera positions (e.g., three or nine camera positions). Aspects of the present disclosure can assign regions (e.g., regions 801, 802, 803, and 804) to separate sub-buffers. By doing so, there will be a 3D subdivision of scene 800. In fact, the present disclosure can subdivide scene 800 into multiple regions.
[0077] As noted above, a geometry buffer or G-buffer may be equivalent to a light field. During the parsing pass, any viewing ray or 4D ray may be tracked through the region views. In some aspects, the present disclosure may determine the correct coordinates in each view. For viewing rays starting from a new viewpoint that may be different from the viewpoint being rendered, the present disclosure may interpolate samples from existing views. A viewing ray may also be a line of sight or viewpoint from a particular camera position, e.g., viewing ray 840 from camera 820. Additionally, after determining the primitive id and tex-uv, aspects of the present disclosure may look up a shading in an atlas or shading atlas. As noted above, for multiple views (e.g., K2 views), different regions may correspond to different numbers of views as they move away from the camera. For example, region Z may correspond to K2 / 4 (Z-1) For example, region 801 may correspond to K2 views, region 802 may correspond to K2 / 4 views, region 803 may correspond to K2 / 16 views, and region 804 may correspond to K2 / 64 views.
[0078] like Figure 8As shown in , aspects of the present disclosure can utilize a parsing pass with one or more regions. During the parsing pass, the final geometry can be rendered. Therefore, objects can be rasterized into regions, for example, regions 801-804. For a specific camera viewpoint (e.g., viewpoint 820), visibility information can be reused from substantially similar camera viewpoints. By doing so, the present disclosure can determine or infer which objects are visible on a specific line or line of sight (e.g., viewing ray 840). Therefore, the present disclosure can track ray 840 through the region until it intersects with an object (e.g., object 810) that has been rasterized in one of the specific regions or sub-buffers. Therefore, the present disclosure can determine which objects are visible by utilizing visual information from each region or sub-buffer.
[0079] As noted above, a mesh shader can be used to instantiate geometric primitives rendered into each of the subbuffers or views. A mesh shader can generate instances of primitives. For example, a single instance can be sufficient for primitives far from a camera or viewpoint. The present disclosure can utilize different structures (e.g., an octree structure) to reduce the number of images that are far from the camera viewpoint. An octree is a data structure for arranging objects in space. For example, an octree can subdivide space into multiple eighths (e.g., eight eighths) in three dimensions. An octree structure can determine the number of copies of a primitive in a node of each octree. This can result in efficient creation of data.
[0080] Aspects of the present disclosure may also include fast region rendering. In some aspects, aspects of the present disclosure may utilize octree forward and backward traversal, rather than discarding instances. In addition, aspects of the present disclosure may include one rendering call per region, for example, using an octree node located in the region or multiple instances for the region.
[0081] Fig. 9 Scenario 900 according to one or more techniques of the present disclosure is shown. Fig. 9 As shown in , scene 900 includes a plurality of regions (eg, region 901 , region 902 , region 903 , and region 904 ), a viewpoint or camera 920 , a view frustum 930 , and an octree 940 . Fig. 9 940 can be used to reduce the number of images far from the viewpoint 920. The octree 930 also includes a plurality of eighths, each of which can include a plurality of instances. For example, an eighth in the octree 940 can include K 2 / 16 instances, while the other eighth can include K 2 / 64 instances. In addition, some eighths (eg, smaller eighths) in octree 940 may be used to cull data.
[0082] Aspects of the present disclosure may also utilize approximate spherical projection. For example, for a large field of view (FOV) (e.g., 150°), conventional perspective projection may be inefficient because there may be oversampling along the periphery. Therefore, rasterization may become inefficient at the periphery of the image. The present disclosure may subdivide a frustum into sub-frustums (e.g., 2x2 or 3x3 sub-frustums). Therefore, the frustum to be rendered may be subdivided. This may be similar to lens matching shading, but includes different targets and / or different projection matrices. In some aspects, the increased number of sub-frustums may result in an improved approximation of an ideal spherical projection. In addition, primitives may be rendered into related frustums. Some primitives may overlap with multiple frustums. Similar to the above-mentioned regions, aspects of the present disclosure may use octree bounding boxes to pre-classify primitives.
[0083] Fig.10 An image 1000 is shown in accordance with one or more techniques of this disclosure. Fig.10 As shown in , image 1000 includes image plane 1010 , sub-image plane 1012 , sub-image plane 1014 , and viewpoint or camera 1020 . Fig.10 The above spherical projection according to the present disclosure is shown. For example, the frustum for image plane 1010 can be subdivided into sub-frustums for sub-image planes 1012 and 1014. This increased number of sub-frustums (e.g., sub-frustums for sub-image planes 101 and 1014) can result in an improved approximation of the ideal spherical projection.
[0084] As noted herein, aspects of the present disclosure may include a rendering system that uses rasterization to generate multiple views of a scene. For example, the present disclosure may generate multiple views without having to perform a full rasterization pipeline separately for each view. In some aspects, shading may be determined in object space, for example, to decouple shading from geometric rasterization of multiple views. In addition, an id buffer may be generated per view so that the union of the id buffers may produce a potentially visible set of geometric primitives. In addition, the scene may be subdivided into multiple regions, and each region may be rendered separately as multiple views, depending on the distance to the viewpoint. Each region may be selected so that the difference between views is below a constant threshold. This may reduce the number of necessary views. In addition, the view cone may be subdivided into multiple frustums having smaller subtending angles, and a separate view may be rendered for each frustum.
[0085] Figure 7-10 An example of the above process for efficient multi-view rasterization is shown. Figure 7-10 As shown in , aspects of the present disclosure (e.g., a GPU herein) may perform a number of different steps or processes to reduce the number of viewpoints generated for multi-view rasterization. For example, a GPU herein may determine at least one scene (e.g., scenes 700 and 800) that includes one or more viewpoints (e.g., viewpoints 720 and 820).
[0086] In addition, the GPU herein may divide at least one scene (e.g., scenes 700 and 800) into a plurality of regions (e.g., regions 701-704 and 801-804) based on each of one or more viewpoints (e.g., viewpoints 720 and 820). In addition, the GPU herein may also determine whether a region (e.g., region 704) based on one of the one or more viewpoints (e.g., viewpoint 720) is substantially similar to a region (e.g., region 804) based on another of the one or more viewpoints (e.g., viewpoint 820).
[0087] The GPU herein may also generate a geometry buffer (e.g., G-buffer 504) for each of the plurality of regions (e.g., regions 701-704 and 801-804) based on one or more viewpoints (e.g., viewpoints 720 and 820). Furthermore, the GPU herein may combine the geometry buffers (e.g., G-buffer 504) for each of the plurality of regions (e.g., regions 701-704 and 801-804) based on one or more viewpoints (e.g., viewpoints 720 and 820). In some aspects, the combined geometry buffer (e.g., G-buffer 504) may correspond to a set of potentially visible primitives (e.g., including primitive 710).
[0088] The GPU herein may also determine shading information for at least some of the primitives in the set of potentially visible primitives (e.g., primitive 710). In addition, the GPU herein may store at least some of the primitives in the set of potentially visible primitives (e.g., primitive 710). For example, the set of potentially visible primitives may be stored in a memory (e.g., system memory 124 and / or internal memory 121). In some aspects, the geometry buffer for each of the plurality of regions (e.g., regions 701-704 and 801-804) may include an identification buffer and a depth buffer. In addition, the identification buffer may correspond to the set of visible primitives (e.g., including primitive 710).
[0089] In some cases, at least one scene may be divided into a plurality of regions based on one or more division criteria (e.g., frustum 730 and frustum 830). The one or more division criteria may include at least one of the following: a distance to each of the one or more viewpoints, or an angle of an optical axis of each of the one or more viewpoints (e.g., frustum 730 and frustum 830). In addition, a region based on one viewpoint (e.g., region 704) may be determined to be substantially similar to a region based on another viewpoint (e.g., region 804) based on one or more division criteria (e.g., frustum 730 and frustum 830).
[0090] The GPU herein may also render at least one image based on a geometry buffer for each of a plurality of regions (e.g., regions 701-704 and 801-804) for one or more viewpoints (e.g., viewpoints 720 and 820). In some aspects, at least the one image may be rendered based on shading information for a set of potentially visible primitives (e.g., including primitive 710). In addition, the at least one image may include a plurality of pixels, wherein each of the plurality of pixels of the at least one image may be rendered based on an intersection of a viewing ray (e.g., viewing ray 840) and a pixel (e.g., object 810). In some cases, the viewing ray (e.g., viewing ray 840) may pass through each of the plurality of regions (e.g., regions 801-804).
[0091] The GPU herein may also generate at least one scene (e.g., scene 800) including one or more viewpoints (e.g., viewpoint 820). In some aspects, the determination of whether a region (e.g., region 704) based on one of the one or more viewpoints (e.g., viewpoint 720) is substantially similar to a region (e.g., region 804) based on another of the one or more viewpoints (e.g., viewpoint 820) may be performed by a graphics processing unit (GPU) or a central processing unit (CPU).
[0092] Fig.11 1100 is a flowchart of an example method according to one or more techniques of the present disclosure. The method may be performed by a device such as a GPU, a CPU, or a device for graphics processing. At 1102, the device may determine at least one scene including one or more viewpoints, such as in combination with Figure 5-Figure 10 At 1104, the device may divide at least one scene into a plurality of regions based on each of the one or more viewpoints, such as in combination with Figure 5-Figure 10 The examples in are described.
[0093] At 1106, the device may determine whether a region based on one of the one or more viewpoints is substantially similar to a region based on another of the one or more viewpoints, such as in combination with Figure 5-Figure 10 At 1108, the device may generate a geometric buffer for each of the plurality of regions based on one or more viewpoints, such as in combination with Figure 5-Figure 10 At 1110, the device may combine the geometric buffers for each of the multiple regions based on one or more viewpoints, such as combining Figure 5-Figure 10 In some aspects, the combined geometry buffer may correspond to a set of potentially visible primitives, such as a combination of Figure 5-Figure 10 The examples in are described.
[0094] At 1112, the device may determine shading information for at least some of the primitives in the set of potentially visible primitives, such as in combination with Figure 5-Figure 10 At 1114, the device may also store at least some of the potentially visible primitives in the set, such as in combination with Figure 5-Figure 10 In some aspects, the geometry buffer for each of the plurality of regions may include an identification buffer and a depth buffer, such as in combination with Figure 5-Figure 10 In addition, the identification buffer can correspond to a set of visible primitives, such as in combination with Figure 5-Figure 10 The examples in are described.
[0095] In some aspects, at least one scene may be divided into a plurality of regions based on one or more division criteria, such as in combination with Figure 5-Figure 10 The one or more partitioning criteria may include at least one of the following: a distance to each of the one or more viewpoints, or an angle of an optical axis of each of the one or more viewpoints, such as in combination with Figure 5-Figure 10 In addition, the region based on one viewpoint is determined to be substantially similar to the region based on another viewpoint may be based on one or more segmentation criteria, such as in combination with Figure 5-Figure 10 The examples in are described.
[0096] At 1116, the device may render at least one image based on the geometry buffer for each of the plurality of regions for one or more viewpoints, such as in combination with Figure 5-Figure 10 In some aspects, at least one image may be rendered based on shading information for a set of potentially visible primitives, such as in combination with Figure 5-Figure 10 In addition, at least one image may include a plurality of pixels, wherein each of the plurality of pixels of the at least one image may be rendered based on an intersection of a viewing ray and the pixel, such as in combination with Figure 5-Figure 10 In some cases, the viewing ray may pass through each of the multiple regions, such as in combination with Figure 5-Figure 10 The examples in are described.
[0097] The device can also generate at least one scene including one or more viewpoints, such as combining Figure 5-Figure 10 In some aspects, the determination of whether a region based on one of the one or more viewpoints is substantially similar to a region based on another of the one or more viewpoints may be performed by a GPU or a CPU, such as in conjunction with Figure 5-Figure 10 The examples in are described.
[0098] In one configuration, a method or apparatus for graphics processing is provided. The apparatus may be a CPU, a GPU, or some other processor that can perform graphics processing. In one aspect, the apparatus may be a processing unit 120 within a device 104, or may be some other hardware within the device 104 or another device. The apparatus may include a unit for determining at least one scene including one or more viewpoints. The apparatus may also include a unit for dividing the at least one scene into a plurality of regions based on each of the one or more viewpoints. The apparatus may also include a unit for determining whether a region based on one of the one or more viewpoints is substantially similar to a region based on another of the one or more viewpoints. The apparatus may also include a unit for generating a geometric buffer for each of the plurality of regions based on one or more viewpoints. The apparatus may also include a unit for combining geometric buffers for each of the plurality of regions based on one or more viewpoints. The apparatus may also include a unit for determining shading information for at least some of the primitives in a set of potentially visible primitives. The apparatus may also include a unit for storing at least some of the primitives in a set of potentially visible primitives. The apparatus may also include a unit for rendering at least one image based on a geometric buffer for each of the plurality of regions for one or more viewpoints. The apparatus may also include means for generating at least one scene including one or more viewpoints.
[0099] The subject matter described herein can be implemented to achieve one or more benefits or advantages. For example, the described graphics processing techniques can be used by a GPU, a CPU, or some other processor that can perform graphics processing to implement the multi-view rasterization techniques described herein. This can also be achieved at a low cost compared to other graphics processing techniques. In addition, the graphics processing techniques herein can improve or accelerate data processing or execution. Further, the graphics processing techniques herein can improve resource or data utilization and / or resource efficiency. In addition, aspects of the present disclosure can reduce the number of viewpoints generated in multi-view rasterization (e.g., for objects at a long distance from a viewpoint or camera).
[0100] According to the present disclosure, the term "or" may be interpreted as "and / or" where the context does not dictate otherwise. In addition, while phrases such as "one or more" or "at least one" may have been used for some features disclosed herein but not for other features, features that do not use such language may be interpreted as having such implied meanings where the context does not dictate otherwise.
[0101] In one or more examples, the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. For example, although the term "processing unit" has been used throughout this disclosure, such a processing unit may be implemented in hardware, software, firmware, or any combination thereof. If any function, processing unit, technology described herein, or other module is implemented in software, the function, processing unit, technology described herein, or other module may be stored on a computer-readable medium or sent via a computer-readable medium as one or more instructions or codes. A computer-readable medium may include a computer data storage medium or a communication medium, wherein the communication medium includes any medium that facilitates the transfer of a computer program from one place to another. In this manner, a computer-readable medium may generally correspond to: (1) a tangible computer-readable storage medium that is non-transitory; or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementing the technology described in this disclosure. By way of example and not limitation, such a computer-readable medium may include a RAM, a ROM, an EEPROM, a CD-ROM, or other optical disk storage, a magnetic disk storage, or other magnetic storage device. As used herein, disks and optical disks include compact disks (CDs), laser disks, optical disks, digital versatile disks (DVDs), floppy disks, and Blu-ray disks, where disks typically reproduce data magnetically, while optical disks reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media. A computer program product may include a computer-readable medium.
[0102] The code may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), arithmetic logic units (ALUs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Thus, the term "processor" as used herein may refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Furthermore, the techniques may be fully implemented in one or more circuits or logic elements.
[0103] The techniques of the present disclosure may be implemented in a variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in the present disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily need to be implemented by different hardware units. Specifically, as described above, the various units may be combined in any hardware unit, or provided by a batch of interoperable hardware units (including one or more processors as described above) in combination with appropriate software and / or firmware.
[0104] Various examples have been described. These and other examples are within the scope of the following claims.
Claims
1. A method for graphics processing, comprising: receiving content of at least one scene, the content comprising graphical data; determining a plurality of viewpoints for multi-view rasterization of the content of the at least one scene; dividing the content of the at least one scene into a plurality of regions; determining whether an area for one of the plurality of viewpoints is similar or identical to an area for one or more other viewpoints of the plurality of viewpoints; When the area for one viewpoint is similar or identical to an area for one or more other viewpoints, selecting a representative viewpoint, and using the selected viewpoint for the area for the similar or identical one or more viewpoints; as well as A geometry buffer is generated for each region of the plurality of regions for one or more selected viewpoints.
2. The method according to claim 1, further comprising: The geometric buffers for each region of the plurality of regions are combined.
3. The method according to claim 2, wherein: The combined geometry buffer corresponds to a set of potentially visible primitives.
4. The method according to claim 3, further comprising: Shading information for at least some of the set of potentially visible primitives is determined.
5. The method according to claim 3, further comprising: At least some of the set of potentially visible primitives are stored.
6. The method according to claim 1, wherein: The geometry buffer for each region of the plurality of regions includes an identification buffer and a depth buffer.
7. The method according to claim 6, wherein: The identification buffer corresponds to a set of potentially visible primitives.
8. The method according to claim 1, wherein: The at least one scene is divided into the plurality of regions based on one or more division criteria.
9. The method according to claim 8, wherein: The one or more division criteria include at least one of the following: a distance to each of the plurality of viewpoints, or an angle of an optical axis of each of the plurality of viewpoints.
10. The method according to claim 8, wherein: The region for the one viewpoint is determined to be similar or identical to the regions for the one or more other viewpoints based on the one or more partitioning criteria.
11. The method according to claim 1, further comprising: At least one image is rendered based on the geometry buffer for each of the plurality of regions for the plurality of viewpoints.
12. The method according to claim 11, wherein: The at least one image is rendered based on shading information for the set of potentially visible primitives.
13. The method according to claim 11, wherein: The at least one image includes a plurality of pixels, wherein each pixel of the plurality of pixels of the at least one image is rendered based on an intersection of a viewing ray and the pixel.
14. The method according to claim 13, wherein: The viewing ray passes through each of the plurality of regions.
15. The method according to claim 1, wherein: The determination as to whether a region for one of the plurality of viewpoints is similar or identical to regions for one or more other of the plurality of viewpoints is performed by a graphics processing unit (GPU) or a central processing unit (CPU).
16. A device for graphics processing, comprising: Memory; as well as at least one processor coupled to the memory and configured to: receiving content of at least one scene, the content comprising graphical data; determining a plurality of viewpoints for multi-view rasterization of the content of the at least one scene; dividing the content of the at least one scene into a plurality of regions; determining whether an area for one of the plurality of viewpoints is similar or identical to an area for one or more other viewpoints of the plurality of viewpoints; When the area for one viewpoint is similar or identical to an area for one or more other viewpoints, selecting a representative viewpoint, and using the selected viewpoint for the area for the similar or identical one or more viewpoints; as well as A geometry buffer is generated for each region of the plurality of regions for one or more selected viewpoints.
17. The device according to claim 16, wherein: The at least one processor is further configured to: The geometric buffers for each region of the plurality of regions are combined.
18. The device according to claim 17, wherein: The combined geometry buffer corresponds to a set of potentially visible primitives.
19. The device according to claim 18, wherein The at least one processor is further configured to: Shading information for at least some of the set of potentially visible primitives is determined.
20. The device according to claim 18, wherein The at least one processor is further configured to: At least some of the set of potentially visible primitives are stored.
21. The device according to claim 16, wherein: The geometry buffer for each region of the plurality of regions includes an identification buffer and a depth buffer.
22. The device according to claim 21, wherein The identification buffer corresponds to a set of potentially visible primitives.
23. The device according to claim 16, wherein: The at least one scene is divided into the plurality of regions based on one or more division criteria.
24. The device according to claim 23, wherein: The one or more division criteria include at least one of the following: a distance to each of the plurality of viewpoints, or an angle of an optical axis of each of the plurality of viewpoints.
25. The device according to claim 23, wherein The region for the one viewpoint is determined to be similar or identical to the regions for the one or more other viewpoints based on the one or more partitioning criteria.
26. The device according to claim 16, wherein: The at least one processor is further configured to: At least one image is rendered based on the geometry buffer for each of the plurality of regions for the plurality of viewpoints.
27. The device according to claim 26, wherein The at least one image is rendered based on shading information for the set of potentially visible primitives.
28. The device according to claim 26, wherein The at least one image includes a plurality of pixels, wherein each pixel of the plurality of pixels of the at least one image is rendered based on an intersection of a viewing ray and the pixel.
29. The device according to claim 28, wherein The viewing ray passes through each of the plurality of regions.
30. The device according to claim 16, wherein: The determination as to whether a region for one of the plurality of viewpoints is similar or identical to regions for one or more other of the plurality of viewpoints is performed by a graphics processing unit (GPU) or a central processing unit (CPU).
31. A device for graphics processing, comprising: means for receiving content of at least one scene, the content comprising graphical data; means for determining a plurality of viewpoints for multi-view rasterization of said content of said at least one scene; means for dividing the content of the at least one scene into a plurality of regions; means for determining whether a region for one of the plurality of viewpoints is similar or identical to a region for one or more other viewpoints of the plurality of viewpoints; means for selecting a representative viewpoint in response to determining that a region for a viewpoint is similar or identical to a region for one or more other viewpoints, and using the selected viewpoint for the region for the similar or identical one or more viewpoints; as well as Means for generating a geometry buffer for each region of the plurality of regions for one or more selected viewpoints.
32. The apparatus of claim 31 , further comprising: Means for combining the geometry buffer for each region of the plurality of regions.
33. The device according to claim 32, wherein: The combined geometry buffer corresponds to a set of potentially visible primitives.
34. The apparatus of claim 33, further comprising: Means for determining shading information for at least some primitives in the set of potentially visible primitives.
35. The apparatus of claim 33, further comprising: Unit for storing at least some of the set of potentially visible primitives.
36. The device according to claim 31, wherein The geometry buffer for each region of the plurality of regions includes an identification buffer and a depth buffer.
37. The device according to claim 36, wherein The identification buffer corresponds to a set of potentially visible primitives.
38. The apparatus of claim 31, wherein: The at least one scene is divided into the plurality of regions based on one or more division criteria.
39. The device according to claim 38, wherein The one or more division criteria include at least one of the following: a distance to each of the plurality of viewpoints, or an angle of an optical axis of each of the plurality of viewpoints.
40. The apparatus of claim 38, wherein: The region for the one viewpoint is determined to be similar or identical to the regions for the one or more other viewpoints based on the one or more partitioning criteria.
41. The apparatus of claim 31 , further comprising: Means for rendering at least one image based on the geometry buffer for each of the plurality of regions for the plurality of viewpoints.
42. The device according to claim 41, wherein The at least one image is rendered based on shading information for the set of potentially visible primitives.
43. The device according to claim 41, wherein The at least one image includes a plurality of pixels, wherein each pixel of the plurality of pixels of the at least one image is rendered based on an intersection of a viewing ray and the pixel.
44. The device according to claim 43, wherein The viewing ray passes through each of the plurality of regions.
45. The apparatus of claim 31, wherein: The determination as to whether a region for one of the plurality of viewpoints is similar or identical to regions for one or more other of the plurality of viewpoints is performed by a graphics processing unit (GPU) or a central processing unit (CPU).
46. A computer readable medium storing computer executable code for graphics processing, comprising code for: receiving content of at least one scene, the content comprising graphical data; determining a plurality of viewpoints for multi-view rasterization of the content of the at least one scene; dividing the content of the at least one scene into a plurality of regions; determining whether an area for one of the plurality of viewpoints is similar or identical to an area for one or more other viewpoints of the plurality of viewpoints; When the area for one viewpoint is similar or identical to an area for one or more other viewpoints, selecting a representative viewpoint, and using the selected viewpoint for the area for the similar or identical one or more viewpoints; as well as A geometry buffer is generated for each region of the plurality of regions for one or more selected viewpoints.
Citation Information
Patent Citations
Methods and apparatus for efficient multi-view rasterization
US11132831B1
Title-based rendering method and apparatus
US20160260241A1
Visibility information modification
US20170263039A1
Graphics processing systems
US20170330372A1
Information processing device, information processing method, and program
WO2019021569A1
