Texture-based Pixel Count Determination

By performing a two-pass rendering process in the rendering pipeline, combining depth information comparison and shader processing, the efficiency and accuracy problems of pixel counting in a multi-dimensional environment are solved, and accurate pixel counting is achieved.

CN113313800BActive Publication Date: 2025-07-08TRIVVER INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202010123728.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-02-27
Publication Date
2025-07-08
Estimated Expiration
2040-02-27

AI Technical Summary

Technical Problem

The prior art is inefficient or inaccurate when determining the number of pixels of an object of interest in a multidimensional computer-generating environment.

Method used

By performing a two-pass rendering process in the rendering pipeline, the first pass determines the depth information of the object of interest and renders the depth mask, the second pass renders the entire scene and compares the depth information, uses shaders and post-processing filters to identify the pixels of the object of interest, and finally counts the number of pixels with unique colors.

Benefits of technology

It realizes accurate and efficient determination of the number of pixels of the object of interest in a multi-dimensional environment, and improves the accuracy and efficiency of the rendering process.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113313800B_ABST
    Figure CN113313800B_ABST
Patent Text Reader

Abstract

Methods, systems, and techniques for determining the number of pixels of an object of interest in a multi-dimensional digital environment based on the texture of a multi-dimensional object considered to be the object of interest are disclosed. In one embodiment, a first pass in a rendering pipeline is performed to render the object of interest. Depth information for each pixel of the object of interest is determined. A second pass is performed in the rendering pipeline to render the entire scene. Each object of interest is rendered in a first predetermined color, and second depth information for each pixel within the scene is determined. The first depth information and the second depth information for each pixel are compared. When the depth information is different, the pixel is rendered in a second predetermined color. The total number of pixels having the first predetermined color is determined to be the number of pixels of the object of interest.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present invention generally relate to determining the number of pixels of a virtual object. More specifically, embodiments of the present invention relate to determining the number of pixels of a virtual object of interest in a computer-generated multi-dimensional environment using the texture of the virtual object of interest. Background Art

[0002] Multi-dimensional computer-generated or simulated environments are utilized in many different fields that use computer-aided visualization techniques. Determining the number of pixels of a multi-dimensional object can be used to determine the size of the object being displayed, and the viewport space can be used for data collection and / or analysis. A texture is typically an image applied to a surface in a multi-dimensional (e.g., three-dimensional) environment.

[0003] However, when rendering an object with a texture, currently known embodiments are inefficient or inaccurate in determining the number of pixels on the object of interest. Accordingly, there is a need for systems, methods, and techniques that can overcome the limitations identified above and accurately determine the number of pixels of a multi-dimensional digital object of interest in a multi-dimensional environment. Summary of the Invention

[0004] A system of one or more computers can be configured to perform particular operations or actions by virtue of software, firmware, hardware, or a combination thereof installed on the system, the software, firmware, hardware, or a combination thereof in operation causing or resulting in the system performing the actions. One or more computer programs can be configured to perform particular operations or actions by including instructions that, when executed by a data processing apparatus, cause the apparatus to perform the actions. One general aspect includes a method that includes: performing a first pass in a rendering pipeline by a graphics processor, wherein the first pass renders a multi-dimensional object to determine first depth information for each pixel of the multi-dimensional object within a scene of an electronically generated multi-dimensional digital environment, and the multi-dimensional object is determined to be an object of interest. The method further includes performing a second pass in the rendering pipeline, wherein the second pass includes rendering the entire scene, and wherein the multi-dimensional object is rendered in a first predetermined color, and wherein the second pass includes determining second depth information for each pixel within the scene. The method further includes comparing the first depth information and the second depth information for each corresponding pixel within the scene. The method further includes changing the color of each pixel in the scene to a second predetermined color when the corresponding first depth information and second depth information for each pixel of the scene are different. The method further includes determining the total number of pixels having the first predetermined color to determine the number of pixels of the object of interest in a viewport of the electronically generated multi-dimensional environment. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each computer storage device configured to perform the actions of the method.

[0005] Embodiments may include one or more of the following features. In any embodiment, a scene may include a set of multi-dimensional objects, where each multi-dimensional object in the set of multi-dimensional objects is determined as an object of interest, and where a first predetermined color is unique to each corresponding multi-dimensional object in the set of multi-dimensional objects, and the first predetermined color for each corresponding multi-dimensional object is selected from a set of colors. Other embodiments may include using a first shader function or program to implement a first pass, and using a second shader function or program to implement a second pass. In other embodiments, comparing first depth information and second depth information for each pixel within a scene includes applying a post-processing filter to the second pass, where the post-processing filter includes the first depth information. In one embodiment, the first pass results in a scene having a first texture based on the first depth information, where the first depth information is stored in a memory associated with a graphics processor.

[0006] In one embodiment, the first depth information for each pixel is stored in at least one of the red, green, blue, or alpha components associated with each corresponding pixel. In another embodiment, the second depth information is determined by a z-buffer of the graphics processor during the second pass. In one embodiment, the depth information may also be determined by a z-buffer of the graphics processor during the first pass. In yet another embodiment, the first pass and the second pass of the rendering pipeline are executed at a low resolution. In one embodiment, objects that are lit, transparent, or semi-transparent in the scene are not considered during the rendering pipeline. In one embodiment, the first depth information or the second depth information includes information related to the distance of a pixel from a camera rendering the scene. In one embodiment, the rendering is performed in a non-illuminated mode. In yet another embodiment, the second predetermined color is black. In yet another embodiment, the first pass only renders objects of interest.

[0007] In yet another embodiment, a method of determining the number of pixels may include: executing a shader program by a graphics processor to render an object in a predetermined color when the predetermined color is passed as an input parameter, where the shader program is configured to render the object in another predetermined color when no input parameter is provided. The method further includes passing the first predetermined color as an input parameter to the shader program during the rendering of a multi-dimensional object to be rendered in a scene in a multi-dimensional digital environment, the multi-dimensional object being determined as an object of interest. The method further includes not providing an input parameter to the shader program during the rendering of an object not considered to be an object of interest. The method further includes performing a count of the number of pixels rendered in the predetermined color.

[0008] Implementations of the described techniques may include hardware, methods, or programs, or computer software on a computer-accessible medium. BRIEF DESCRIPTION OF THE DRAWINGS

[0009] The present invention is illustrated in the views of the accompanying drawings by way of example and not limitation, in which like reference numerals indicate like elements.

[0010] Figure 1 Shown is a system 100 according to an embodiment of the present invention, which is configured to determine the number of pixels of a multi-dimensional object in a multi-dimensional digital environment based on a rendered texture;

[0011] Figure 2 Shown is a scene 200 according to an aspect of the present invention, which describes an exemplary multi-dimensional object in a multi-dimensional digital environment;

[0012] Figure 3 Shown is a rendered scene 300 according to an aspect of the present invention, which renders in color the multi-dimensional object shown in scene 200 based on a texture to determine the number of pixels of the multi-dimensional object in the multi-dimensional digital environment;

[0013] Figure 4 Shown is a flowchart 400 according to an embodiment of the present invention, which describes operations for determining the number of pixels of a multi-dimensional object based on the texture of the rendered object;

[0014] Figure 5 Is a block diagram of a data processing system such as a processing system 500 according to an embodiment of the present invention. Detailed Description

[0015] The various embodiments and aspects of the present invention will be described in detail with reference to the details discussed below, and the accompanying drawings will illustrate the various embodiments. The following description and drawings are illustrative of the present invention and should not be construed as limiting the present invention. Many specific details are described to provide a thorough understanding of the various embodiments of the present invention. However, in some instances, well-known or conventional details are not described in order to provide a brief discussion of the embodiments of the present invention.

[0016] References in the specification to "one embodiment" or "an embodiment" or "another embodiment" mean that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one embodiment of the present invention. The phrase "in one embodiment" appearing in various places in the specification does not necessarily all refer to the same embodiment. The processes depicted in the following drawings are executed by processing logic that includes hardware (e.g., circuits, dedicated logic, etc.), software, or a combination of both. Although the processes are described below in terms of some sequential operations, it should be understood that some of the operations described can be executed in a different order. In addition, some operations can be executed in parallel rather than sequentially.

[0017] Although the exemplary embodiments have been explained in a screen coordinate system, the scope of the present invention is not intended to be limited to a conventional rendering device (e.g., a screen), but may include a multi-dimensional rendering device, including the interfaces required for virtual and augmented reality systems.

[0018] In one embodiment, visible texture pixels related to an object of interest in a multi-dimensional digital environment may be determined. The object of interest may be any multi-dimensional object in the multi-dimensional digital environment for which the number of pixels within its viewport needs to be determined. In one embodiment, a multi-dimensional object associated with a bounding box surrounding / enclosing the multi-dimensional object may be identified. In this embodiment, the object of interest may include the bounding box that encloses the multi-dimensional object.

[0019] As referred to herein, materials generally define how objects in a multi-dimensional environment are rendered. A shader is a program, function, or script that can use the optical flow input and material configuration to determine the processing related to each pixel in the rendered scene. This may include determining color information or depth information related to each pixel. The pixels referred to herein may be conventional pixels, Texels (i.e., pixels with texture elements), or any other image / frame element known to those of ordinary skill in the art. A texture is an image applied to the surface of any object in a multi-dimensional digital environment.

[0020] In various embodiments, the object of interest may be colored with a unique color. This allows the calculation of the number of pixels or the area of a given color. Since in a multi-dimensional digital environment, from the perspective of a camera, multiple objects may appear to overlap, the texture obtains the final representation of the scene, including object occlusion and overlap. Thus, if the user directly gazes in the direction of the object of interest placed behind an obstacle (e.g., an opaque wall), the texture will not include any pixels of the object of interest.

[0021] Figure 1 A system 100 for determining the pixel count of an object of interest in a viewport of an electronically generated multi-dimensional environment displayed on a graphical user interface is shown, according to one embodiment. In some embodiments, the system 100 may include one or more servers 102. The server 102 may be configured to communicate with one or more client computing platforms 104 according to a client / server architecture and / or other architectures. The client computing platform 104 may be configured to communicate with other client computing platforms via the server 102 and / or according to a peer-to-peer architecture and / or other architectures. A user may access the system 100 through the client computing platform 104.

[0022] Server 102 can be configured by machine-readable instructions 106. The machine-readable instructions 106 can include one or more instruction modules. The instruction modules can include computer program modules. The instruction modules can include one or more of a first-pass rendering module 108, a second-pass rendering module 110, a post-processing module 112, a pixel count determination module 113, and / or other instruction modules. In one embodiment, the rendering pipeline includes at least two passes (i.e., the scene is rendered twice).

[0023] In this embodiment, the first-pass rendering module 108 can be configured to render the objects of interest in the scene to determine the depth mask of the objects of interest during the first pass. A depth mask is a texture that includes information about the placement distance of an object from the camera instead of the scene color. This information can be stored in a depth map that provides depth information related to each pixel presented on the scene in a multi-dimensional digital environment. In one embodiment, during the first pass, only the objects of interest are rendered (i.e., the rest of the scene is not rendered). Thus, the resulting texture includes a depth map of the scene with only the objects of interest. Thus, in the first pass, the scene does not have any color information. In one embodiment, after the first pass, the distance of each pixel of the scene is stored (or encoded) in any one of the red, green, blue, alpha (RGBA) components associated with each pixel. In one embodiment, the depth information is stored within the R component of the RGBA color information associated with each pixel.

[0024] In one embodiment, the first pass involves using a shader that determines a depth map of the scene with only the objects of interest. In one embodiment, the shader can use the z-buffer / depth buffer information of the graphics engine during the first-pass rendering to determine the depth map of the scene. As a non-limiting example, when the depth information is stored in the R component of the RGBA color information, the RGBA value of each pixel will be (depth texture, 0, 0, 0).

[0025] The second-pass rendering module 110 can be configured to render the entire scene. In the "second pass", the entire scene will be rendered using other shaders and materials to render the objects of interest. In one embodiment, the shader can be temporary. In one embodiment, the shader can draw each object of interest in a unique color in a non-illuminated mode. In one embodiment, a unique color associated with the object of interest can be predetermined. In one embodiment, a unique color is assigned during the initialization phase when the object of interest is loaded onto the scene. Since the second pass renders the entire image, the depth texture of each pixel in the scene is determined. In one embodiment, the depth information / texture of the rendered scene is at least partially determined by the z-buffer (depth buffer) maintained by the graphics engine during rendering.

[0026] In one embodiment, a column of assigned colors (i.e., colors that have been assigned to the objects of interest) is maintained in memory. When an object of interest to which a unique color has been assigned is unloaded (e.g., when the scene of the multi-dimensional environment changes), the assigned color is removed from the column of assigned colors so that it can be reused when other objects of interest require it.

[0027] The post-processing module 112 can be configured to apply a post-processing filter to determine the unique color assigned to each object of interest. In one embodiment, the post-processing filter can be implemented using a shader program that can accept a texture as a parameter and return another texture as its output. The shader can be a separate shader or the same shader used for the second pass of rendering. The filter can include depth mask information determined from the first pass.

[0028] If the depth of a pixel at the second-pass depth texture is equal to the depth texture determined in the first pass, it is assumed that the pixel is a pixel of the object of interest; the pixel color is the same as the second-pass texture color of the object. However, if the second-pass depth texture is not equal to the first-pass depth texture, it is assumed that the pixel belongs to the rest of the scene and the pixel color is replaced with a predetermined color (e.g., black) that is used to identify the scene but can be used for the object of interest. Thus, the object of interest can be determined based on the unique color of the object of interest on the rendered texture.

[0029] The pixel counting module 113 can be configured to count the number of pixels associated with each unique color to determine the pixel count of each object of interest. The number of pixels of each color determines the number of pixels of each object of interest.

[0030] In any embodiment, the capabilities of an "Application Programming Interface (API)" associated with the graphics processor can be used to render an image to a target texture as described above. In any embodiment, textures with low resolution and very low graphics settings can be used for optimization purposes. In one embodiment, for optimization purposes, objects that are scene lights, transparent, or semi-transparent are not considered.

[0031] In some embodiments, the server 102, the client computing platform 104, and / or the external resource 114 can be operably linked via one or more electronic communication links. For example, such electronic communication links can be established at least in part via a network such as the Internet and / or other networks. It will be understood that this is not intended to be limiting, and the scope of the present disclosure includes embodiments in which the server 102, the client computing platform 104, and / or the external resource 114 can be operably linked via some other communication medium.

[0032] A given client computing platform 104 may include one or more processors configured to execute computer program modules. The computer program modules may be configured to enable an expert or user associated with the given client computing platform 104 to interface with the system 100 and / or external resources 114, and / or to provide other functions attributed to the client computing platform 104 herein. As a non-limiting example, a given client computing platform 104 may include one or more of a desktop computer, a laptop computer, a handheld computer, a tablet computing platform, a netbook, a smart phone, a gaming console, and / or other computing platforms. External resources 114 may include information sources outside of the system 100, external entities participating in the system 100, and / or other resources. In some embodiments, some or all of the functions attributed to external resources 114 herein may be provided by resources included in the system 100.

[0033] The server 102 may include an electronic memory 116, one or more processors 118, and / or other components. The server 102 may include communication lines or ports to enable the exchange of information with a network and / or other computing platforms. Figure 1 The illustration of the server 102 in [the figure] is not intended to be restrictive. The server 102 may include a plurality of hardware, software, and / or firmware components that operate together to provide the functions ascribed to the server 102 herein. For example, the server 102 may be executed by a cloud of computing platforms operating together as the server 102.

[0034] The electronic storage device 116 may include a non-transitory storage medium for electronically storing information. The electronic storage medium of the electronic storage device 116 may include one or both of system storage provided integrally (i.e., substantially immovably) with the server 102 and removable storage removably connected to the server 102 via the server. For example, a port (e.g., a USB port, a FireWire port, etc.) or a drive (e.g., a disk drive, etc.). The electronic storage device 116 may include one or more of an optically readable storage medium (e.g., an optical disc, etc.), a magnetically readable storage medium (e.g., a magnetic tape, a magnetic hard disk drive, a floppy disk drive, etc.), a charge-based storage medium (e.g., an EEPROM, a RAM, etc.), a solid-state storage medium (e.g., a flash drive, etc.), and / or other electronically readable storage media. The electronic storage device 116 may include one or more virtual storage resources (e.g., cloud storage, a virtual private network, and / or other virtual storage resources). The electronic memory 116 may store software algorithms, information determined by the processor 118, information received from the server 102, information received from the client computing platform 104, and / or other information enabling the server 102 to perform the functions described herein.

[0035] Processor 118 may be configured to provide information processing capabilities in server 102. Thus, processor 118 may include one or more of a digital processor, an analog processor, digital circuitry designed to process information, analog circuitry designed to process information, a state machine, and / or other mechanisms for electronically processing information. Although processor 118 is shown as a single entity in Figure 1 for illustrative purposes only. In some embodiments, processor 118 may include multiple processing units. These processing units may be physically located within the same device, or processor 118 may represent the processing functionality of multiple devices operating in cooperation. Processor 118 may be configured to execute modules 108, 110, 112, 113, and / or other modules.

[0036] Processor 118 may be configured to execute modules 108, 110, 112, 113, and / or other modules by software; hardware; firmware; some combination of software, hardware, and / or firmware; and / or other mechanisms for configuring the processing capabilities on processor 118. As used herein, the term "module" may refer to any component or set of components that performs the functions attributed to the module. This may include one or more physical processors during the execution of processor-readable instructions, processor-readable instructions, circuitry, hardware, storage media, or any other component.

[0037] It should be understood that although modules 108, 110, 112, and / or 113 are shown as being implemented within a single processing unit in Figure 1 in embodiments where processor 118 includes multiple processing units, one or more of modules 108, 110, 112, and / or 113 may be implemented remotely from other modules. The descriptions of the functions provided by the different modules 108, 110, 112, and / or 113 described below are for illustrative purposes and are not intended to be limiting, as any one of modules 108, 110, 112, and / or 113 may provide more or fewer functions than described. For example, one or more of modules 108, 110, 112, and / or 113 may be removed, and some or all of their functions may be provided by other modules among modules 108, 110, 112, and / or 113. For example, processor 118 may be configured to execute one or more additional modules that may perform some or all of the functions attributed to one of modules 108, 110, 112, and / or 113.

[0038] Figure 2Scenario 200 according to one aspect of the present invention is shown. Scenario 200 depicts exemplary multi-dimensional objects in a multi-dimensional digital environment. As shown, in one embodiment, the viewport space 202 includes the objects of interest 204 and 216. Each of the objects of interest 204 and 214 can be a multi-dimensional digital object / asset displayed in the multi-dimensional digital environment. In yet another embodiment, the object of interest 204 can include the multi-dimensional object 206 and can also optionally include a bounding box 208 that encloses the asset 206. Similarly, the object of interest 216 can include the multi-dimensional object 212 and optionally includes a bounding box 214 that encloses the multi-dimensional object / asset 212. As shown, scenario 200 can also include other multi-dimensional objects 210 that are not considered objects of interest (also referred to herein as non-objects of interest).

[0039] Figure 3 Rendering scenario 300 according to one aspect of the present invention is shown. The rendering scenario 300 is based on textures to present a color rendering of the multi-dimensional objects shown in scenario 200 to determine the number of pixels of the multi-dimensional objects in the multi-dimensional digital environment. As shown, scenario 300 shows a rendered version of scenario 200 according to the techniques described herein. Once scenario 300 is rendered, the objects of interest 204 and 216 in the viewport 202 can be displayed without displaying the non-objects of interest 210. In one embodiment, a unique color can be assigned to each object of interest (e.g., 204 and 216) from a color pool that includes a set of unique colors such as (65536). Each color can be encoded with 8 bits, 16 bits, 32 bits, etc. In a preferred embodiment, for optimization purposes, each color in the color set is encoded with 16 bits. As mentioned herein, the unique colors are indented to represent unique shades of the colors (which can generally be represented by unique hexadecimal (hex) color codes and / or red, blue, green (RGB) values).

[0040] Thus, the object of interest 204 can be rendered with a specific / unique color (e.g., light gray as shown) to identify the object from the rest of the objects in the viewport 202. Similarly, the object of interest 216 can be rendered with a different unique color (e.g., black as shown) so that it can be identified from the rest of scenario 300 and the object of interest 204. As shown in the viewport 202, scenario 300 and all other non-objects of interest 210 can be rendered with another color (e.g., white as shown) that is different from the specific / unique colors used to render the objects of interest 204 and 216. As shown, the rendering of the object of interest 204 can be projected onto the viewport 202 of the multi-dimensional digital environment.

[0041] In one embodiment, scene 300 is rendered by an additional camera, which has a lower resolution than the main camera that renders scene 200. In this embodiment, scene 300 displayed by the additional camera remains hidden from the user / viewer. In one embodiment, the additional camera can be used to implement the invention described herein. The additional camera overlaps with the main camera used by the user / viewer to render scene 200.

[0042] Figure 4 A flowchart 400 according to an embodiment of the present invention is shown, and the flowchart 400 describes an operation of determining the number of pixels of a multi-dimensional object according to the texture of the rendered object. As shown, at 402, a first pass in the rendering pipeline is executed by a graphics processor, where in the first pass, the multi-dimensional object is rendered to determine the first depth information of each pixel of the multi-dimensional object in the scene in the multi-dimensional environment, and the multi-dimensional object is determined as the object of interest. At 404, a second pass in the rendering pipeline is executed, where the second pass includes rendering the scene, and where the multi-dimensional object is rendered with a first predetermined color, and where the second pass includes determining the second depth information of each pixel in the scene. At 406, the first depth information and the second depth information of each pixel in the scene are compared. At 408, when the corresponding first depth information and the second depth information of each pixel in the scene are different, it is changed to a second predetermined color. When the depth information is the same, it is assumed that the pixel is associated with / belongs to the object of interest, and the color of the pixel remains unchanged. At 410, the total number of pixels having the first predetermined color is determined.

[0043] In different embodiments, the pixel count can be determined by a single pass in the rendering pipeline. In this embodiment, a shader is implemented with a texture to render the scene in a multi-dimensional digital environment during runtime. This can provide a non-intrusive temporary shader for all objects in the scene. Such a configuration can be applied to a special camera that does not affect the main rendering pipeline, so the user still does not notice the rendering performed by the special camera. In one embodiment, the shader can render each object of interest with a unique predetermined color passed to it as an input parameter. Each surface or multi-dimensional setting not considered as an object of interest can be rendered with another predetermined color (e.g., black). In another embodiment, the shader can also be implemented to set each pixel of the scene to another predetermined color (e.g., black) when no input parameter is passed. Any area of the object of interest that is occluded from the camera's line of sight is rendered with the specified color, and each surface not considered as an object of interest (i.e., the rest of the scene, e.g., black as above) is rendered. Since each object of interest can be identified with a unique color, the rendered scene can have the desired color texture to divide or identify each object of interest for which the number of pixels needs to be determined. In Figures 1 to 4 any of the above-described techniques described can also be implemented in other embodiments.

[0044] Figure 5 is a block diagram illustrating a data processing system, such as computing system 500, that can be used in conjunction with an embodiment of the present invention. For example, system 500 can be implemented as part of a system for determining visibility metrics of multi-dimensional objects in a multi-dimensional environment. It should be apparent from this description that aspects of the present invention can be embodied, at least in part, in software. That is, the techniques can be performed in a computer system or other computer system in response to execution of the techniques by its processor, such as a microprocessor, to execute a sequence of instructions contained in a memory such as ROM, DRAM, mass storage, or a remote storage device. In various embodiments, hardware circuitry can be used in combination with software instructions to implement the present invention. Thus, the techniques are not limited to any particular combination of hardware circuitry and software, nor to any particular source of the instructions executed by the computer system. Additionally, throughout the specification, various functions and operations are described as being performed by or caused by software code to simplify the description. However, those skilled in the art will recognize that such an expression means that the functions are produced by a processor executing the code.

[0045] In one embodiment, system 500 can represent server 52. System 500 can have a distributed architecture that has multiple nodes coupled by a network, or all of its components can be integrated into one unit. Computing system 500 can represent any of the above data processing systems that execute any of the above processes or methods. In one embodiment, computer system 500 can be implemented as integrated circuits (ICs), discrete electronic devices, modules suitable for a circuit board such as a motherboard, add-on cards for a computer system, and / or components that can be incorporated into a rack / chassis of any computing device. System 500 is intended to show a high-level view of many components of any data processing unit or computer system. However, it should be understood that in some embodiments there may be more or fewer components, and in addition, different arrangements of the shown components may occur in other embodiments. System 500 can represent a desktop computer, a laptop computer, a tablet computer, a server, a mobile phone, a programmable logic controller, a personal digital assistant (PDA), a personal communicator, a network router or hub, a wireless access point (AP) or repeater, a set-top box, or a combination thereof.

[0046] In one embodiment, system 500 includes a processor 501, a memory 503, and devices 505 - 508 via a bus or interconnect 522. The processor 501 may represent a single processor or multiple processors, including a single processor core or multiple processor cores. The processor 501 may represent one or more general-purpose processors such as a microprocessor, a central processing unit (CPU), a microcontroller unit (MCU), etc. The processor 501 may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, or a processor implementing a combination of instruction sets. The processor 501 may also be one or more special-purpose processors such as an application-specific integrated circuit (ASIC), a cellular or baseband processor, a field-programmable gate array (FPGA), a digital signal processor (DSP), a network processor, a graphics processor, a network processor, a communication processor, a cryptographic processor, a coprocessor, an embedded processor, or any other type of logic capable of processing instructions. The processor 501 may also be a low-power multi-core processor socket, such as an ultra-low voltage processor, which can act as the main processing unit and the central hub for communicating with various components of the system. Such a processor may be implemented as a system-on-chip (SoC).

[0047] The processor 501 is configured to execute instructions for performing the operations and methods discussed herein. The system 500 further includes a graphics interface that communicates with a graphics subsystem 504, which may include a display controller and / or a display device. The processor 501 may communicate with the memory 503, which in one embodiment may be implemented via multiple memory devices to provide a given amount of system memory. In various embodiments, the individual storage devices may have different package types, such as single-die package (SDP), dual-die package (DDP), or quad-die package (QDP). In some embodiments, these devices may be directly soldered to the motherboard to provide a lower-profile solution, while in other embodiments, these devices may be configured as one or more memory modules, which in turn may be coupled to the motherboard via a given connector. The memory 503 may be a machine-readable non-transitory storage medium, such as one or more volatile storage (or memory) devices, such as random access memory (RAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), or other types of storage devices such as hard disk drives and flash memory. The memory 503 may store information including a sequence of executable program instructions to be executed by the processor 501 or any other device. The system 500 may further include I / O devices such as devices 505 - 508, which include a wireless transceiver 505, an input device 506, an audio I / O device 507, and other I / O devices 508.

[0048] The wireless transceiver 505 can be a WiFi transceiver, an infrared transceiver, a Bluetooth transceiver, a WiMax transceiver, a wireless cellular phone transceiver, a satellite transceiver (such as a Global Positioning System (GPS) transceiver), or other radio frequency (RF) transceivers, a network interface (such as an Ethernet interface), or a combination thereof. The input device 506 can include a mouse, a touchpad, a touch-sensitive screen (which can be integrated with the display device 504), an indicator device such as a stylus, and / or a keyboard (such as a physical keyboard or a virtual keyboard displayed as part of a touchscreen). Other optional devices 508 can include a storage device (such as a hard disk drive, a flash memory device), a Universal Serial Bus (USB) port, a parallel port, a serial port, a printer, a network interface, a bus bridge (such as a PCI-PCI bridge), sensors (such as motion sensors such as accelerometers, gyroscopes, magnetometers, optical sensors, compasses, proximity sensors, etc.), or a combination thereof. The optional device 508 can further include an imaging processing subsystem (such as a camera), which can include an optical sensor such as a charge-coupled device (CCD) or a complementary metal oxide semiconductor (CMOS) optical sensor, and the optical sensor can be used to facilitate camera functions such as recording photos and video clips. Depending on the specific configuration or design of the system 500, some sensors can be coupled to the interconnect 522 via a sensor hub (not shown), while other devices such as a keyboard or a thermal sensor can be controlled by an embedded controller (not shown).

[0049] To provide persistent storage of information such as data, applications, one or more operating systems, etc., in one embodiment, a mass storage device (not shown) can also be coupled to the processor 501. In multiple embodiments, to achieve a thinner, lighter system design and improve the system's responsiveness, such mass storage can be implemented by a solid-state device (SSD). However, in other embodiments, a hard disk drive (HDD) with a smaller number of SSD memories can be mainly used to implement mass storage to be used as an SSD cache to achieve non-volatile storage of context states and other such information during a power outage incident, so that the system activity can be quickly restarted when the power is turned on again. A flash memory device can also be coupled to the processor 501, for example, via a Serial Peripheral Interface (SPI). The flash memory device can provide non-volatile storage of system software, including basic input / output software (BIOS) and other firmware of the system.

[0050] Note that although system 500 is shown as having various components of a data processing system, it is not intended to represent any particular architecture or manner of interconnecting these components; for such details are irrelevant to embodiments of the present invention. It should also be understood that network computers, handheld computers, mobile phones, and other data processing systems with fewer components or perhaps more components may also be used with embodiments of the present invention.

[0051] Accordingly, methods, apparatus, and computer-readable media for determining the number of pixels of a multi-dimensional object based on texture in a multi-dimensional environment are described herein. Although the present invention has been described with reference to specific exemplary embodiments, it will be apparent that various modifications and changes can be made to these embodiments without departing from the broader spirit and scope of the invention as set forth in the claims. Accordingly, the specification and drawings are to be regarded as illustrative rather than restrictive.

Claims

1. A method for determining the number of pixels of a multi-dimensional object in a multi-dimensional digital environment based on a rendered texture, comprising: Performing a first pass by a graphics processor in a rendering pipeline, wherein the first pass renders the multi-dimensional object to determine first depth information for each pixel of the multi-dimensional object within a scene of an electronically generated multi-dimensional digital environment, wherein the multi-dimensional object is determined as an object of interest; Performing a second pass in the rendering pipeline, wherein the second pass includes rendering its scene completely, and wherein the multi-dimensional object is rendered in a first predetermined color, and wherein the second pass includes determining second depth information for each pixel within the scene; Comparing the first depth information and the second depth information for each pixel within the scene; Changing the color of the corresponding pixel to a second predetermined color when the first depth information and the second depth information for the corresponding pixel within the scene are different; And Determining the total number of pixels having the first predetermined color to determine the number of pixels of the object of interest within a viewport of the electronically generated multi-dimensional environment.

2. The method according to claim 1, wherein, The scene includes a set of multi-dimensional objects, wherein each multi-dimensional object within the set of multi-dimensional objects is determined as an object of interest, and wherein the first predetermined color is unique for each corresponding multi-dimensional object, and wherein the first predetermined color for each corresponding multi-dimensional object is selected from a set of colors.

3. The method according to claim 1, wherein Implementing the first pass using a first shader function or program, and wherein the second pass is implemented using a second shader function or program.

4. The method according to claim 1, wherein Comparing the first depth information and the second depth information for each corresponding pixel within the scene includes applying a post-processing filter to the second pass, wherein the post-processing filter includes the first depth information.

5. The method according to claim 1, wherein, The first pass generates a scene having a first texture based on the first depth information, and wherein the first depth information is stored in a memory associated with the graphics processor.

6. The method according to claim 1, wherein, The first depth information for each pixel is stored in at least one of the red, green, blue, or alpha components associated with each corresponding pixel.

7. The method according to claim 1, wherein, Performing the first pass and the second pass of the rendering pipeline at a low resolution.

8. A non-transitory computer-readable medium containing instructions that, when executed by a graphics processor having at least one core, implement a method, comprising: Performing a first pass in a rendering pipeline, wherein the first pass renders a multi-dimensional object to determine first depth information for each pixel of the multi-dimensional object within a scene of an electronically generated multi-dimensional digital environment, and wherein the multi-dimensional object is determined as an object of interest; Performing a second pass in the rendering pipeline, wherein the second pass includes rendering its scene completely, and wherein the multi-dimensional object is rendered in a first predetermined color, and wherein the second pass includes determining second depth information for each pixel within the scene; Comparing the first depth information and the second depth information for each pixel within the scene; Changing the color of the corresponding pixel to a second predetermined color when the first depth information and the second depth information for the corresponding pixel within the scene are different; and Determining the total number of pixels having the first predetermined color to determine the number of pixels of the object of interest within a viewport of the electronically generated multi-dimensional environment.

9. The non-transitory computer-readable medium according to claim 8, wherein, The scene includes a set of multi-dimensional objects, where each multi-dimensional object in the set of multi-dimensional objects is determined as an object of interest, and where the first predetermined color is unique for each respective multi-dimensional object, and where the first predetermined color of each respective multi-dimensional object is selected from a set of colors.

10. The non-transitory computer-readable medium according to claim 8, wherein, The first pass is implemented using a first shader function or program, and where the second pass is implemented using a second shader function or program.

11. The non-transitory computer-readable medium according to claim 8, wherein, Comparing the first depth information and the second depth information of each respective pixel within the scene includes applying a post-processing filter to the second pass, where the post-processing filter includes the first depth information.

12. The non-transitory computer-readable medium according to claim 8, wherein, The first pass generates a scene with a first texture based on the first depth information, and where the first depth information is stored in a memory associated with the graphics processor.

13. The non-transitory computer-readable medium according to claim 8, wherein, The first depth information of each pixel is stored in at least one of the red, green, blue, or alpha components associated with each respective pixel.

14. The non-transitory computer-readable medium according to claim 8, wherein, The first pass and the second pass of the rendering pipeline are executed at a low resolution.

Citation Information

Patent Citations

  • Techniques for multiple pass rendering

    CN103999044A

  • Apparatus and method performing rendering on viewpoint disparity image

    CN106127848A