Cloud assisted client rendering pipeline using environment surface light

WO2024254727A1PCT designated stage expired Publication Date: 2024-12-19HUAWEI TECH CO LTD
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2023/099609
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-06-12
Publication Date
2024-12-19

Smart Images

  • Figure CN2023099609_19122024_PF_FP_ABST
    Figure CN2023099609_19122024_PF_FP_ABST
Patent Text Reader

Abstract

A method and a system for rendering a 3D scene on a screen of a client device. The method comprising: in response to a rendering request to the client device to render a given 3D scene, the given 3D scene including a plurality of objects: identifying, an object of interest in the given 3D scene; transmitting data representative of the object of interest to the cloud server for determining, for the object of interest, light information associated therewith; transmitting the light information to the client device; receiving, from the cloud server, the light information associated with the object of interest; and rendering on the screen of the client device, an image of the given 3D scene, by: in response to a given pixel of the image being representative of the object of interest in the given 3D scene, shading the given pixel in accordance with the light information.
Need to check novelty before this filing date? Find Prior Art

Description

CLOUD ASSISTED CLIENT RENDERING PIPELINE USING ENVIRONMENT SURFACE LIGHTFIELD

[0001] The present technology relates to image rendering; and in particular, to systems and methods for applying light information to objects of 3D scenes during rendering thereof.BACKGROUND

[0002] A gaming application is a software program that provides users with the ability to play games on electronic devices such as smartphones, tablets, and personal computers. “Game apps” often include features such as leaderboards, social networking integration, and in-app purchases and include a user interface allowing the user to play and interact with rendered visual content.

[0003] Rendering of visual content refers to the process of creating and displaying graphics on a screen in real-time. This process involves generating and rendering 3D models, textures, lighting, and other effects to create a realistic and immersive gaming experience for the user. Rendering can involve the use of a graphics engine, which is a software framework that provides the tools and algorithms needed to render the visual content. For example, the engine can take input data such as 3D models and textures and transform it into a format that can be displayed on the user's screen. There are several techniques used in rendering visual content in game apps, including rasterization and ray tracing. Rasterization involves rendering 3D models as a series of flat 2D images, while ray tracing involves simulating the way that light interacts with objects in a scene to create more realistic lighting and shadows. In addition to these techniques, other factors such as frame rate, resolution, and anti-aliasing can also impact the quality of the rendered visuals.

[0004] Factors that impact user gaming experience in gaming apps include latency and rendering quality. First, latency refers to a time delay between (i) when a user applies a control command (by keyboard, mouse, or touch screen) and (ii) when the rendering graphics are shown on the screen. Second, the rendered quality varies depending on inter alia a specific rendering technique. For example, advanced ray tracing techniques can provide photo-realistic lighting effects.

[0005] Game apps can be executed locally on a client device, where a user is able to play a game using local computational resources, without any cloud or network computing assistance. Advantages of locally executed game apps include low latency since rendering algorithms are executed locally, and the game app is not reliant on a network / server connection. However, computational capability of local GPUs are comparatively low to capabilities enabled via a cloud or network.

[0006] Game apps can also be executed via cloud or network computing with full server rendering. In full server rendering solutions, the client device collects control commands and sends them to a server as input. The cloud server then provides game rending and encoding to the client device, which in turn decodes the video stream and displays it to the user. Advantages of full server rendering solutions include high quality rendering due to comparatively high computational capability of cloud GPUs. However, full server rendering solutions suffer from high latency, and are dependent from network connection.

[0007] There is therefore a desire to ameliorate conventional rendering solutions.SUMMARY

[0008] Developers have devised methods and devices for overcoming at least some drawbacks present in prior art solutions.

[0009] Light Texture technique

[0010] Developers have appreciated that rendering solutions may perform scene reconstruction using a light texture technique. With reference to FIG. 2, given a 3D scene with a plurality of elements (3D scene geometry, materials, light sources, etc. ) as input, a server-side captures incoming direct and indirect light from different locations in the scene and saves the captured information in a data structure referred to as a “Light Texture” (LT) . On the client-side, for a given point of view, the pre-computed light information (from LT) and 3D scene elements may be used to generate, in real-time, a globally illuminated rendering of the scene. Advantages of the light texture technique include high rendering quality, pre-computed light data being generated once and being able to be employed for a large number of clients, which is beneficial for reducing the computational cost per client attributed to the rendering process.

[0011] Developers have realized that the light texture technique is not well suited for gaming applications. For example, all surfaces of all objects need to be processed on a server. In another example, the light texture technique is used to capture an entire scene in a single texture, which introduces scalability constraints for use with dynamic and / or large scenes.

[0012] Light Probe technique

[0013] Developers have appreciated that rending solutions may perform scene reconstruction using a light probe technique in which server resources are used to assist client rendering. For example, a client may first send user control input to a server, and the server can use a light probe and captures light info on the probes for the scene. The data on the probes are compressed and sent back to the client. The client renders a view point dependent frame with the information captured in the probes. Advantages of the light probe technique include a high quality diffused global illumination and low latency.

[0014] Developers have realized that the light probe technique requires deployment of the game app on the server, cannot handle smooth / mirror glossy reflection, causes leaking artifacts from ‘zero’ thin walls, biasing parameter needs to be tuned to scene scale, and light probe placement and count needs to be tuned on a scene-by-scene basis.

[0015] Developers of the present technology have realized that there is a need for a rendering solution that can provide a high rendering quality, low latency, use a cloud or network resources as an optional rendering service (no need to install / deploy game on a server) , does not rely on network connection to play, can handle dynamic scenes, support reflections and shadows, mitigates light leaks and light probe placement constraints.

[0016] Cloud-assisted Environment Surface Light technique

[0017] In the context of the present technology, developers have devised a computer-implemented method of executing cloud-assisted client rendering by using environment surface light. Broadly, the game app is installed on a client device, while deployment of the game app on the server is not required. Depending on the availability and computational capability of the cloud server, the client device can optionally send at least one object to the server, and the server utilizes comparatively more powerful GPUs to capture light information on the surface of the at least one object. This surface light information is then compressed and sent back to the client device. After receiving the surface light information generated on the server-side, the client device is configured to perform a hybrid rendering procedure 310 to generate photo-realistic graphics on the thin device.

[0018] More specifically, in accordance with a first broad aspect of the present technology, there is provided a system for rendering a 3D scene on a screen of a client device. The system comprises a cloud server communicatively coupled to the client device over a communication network. The client device comprises a first processor and a first non-transitory computer-readable medium storing first instructions. The first processor, upon executing the first instructions, is configured to: in response to a rendering request to render a given 3D scene, the given 3D scene including a plurality of objects: identify, based on a predetermined rule, at least one object of interest in the given 3D scene; and in response to identifying the at least one object of interest in the given 3D scene, transmit, via the communication network, data representative of the at least one object of interest to the cloud server. Further, the cloud server comprises a second processor and a second non-transitory computer-readable medium storing second instructions, upon executing which, the second processor is configured to: receive, from the client device, the data representative of the at least one object of interest in given 3D scene; determine, for the at least one object of interest, light information associated therewith, the light information being indicative of light interaction with a surface of the at least one object of interest in the given 3D scene; and transmit, via the communication network, the light information associated with the at least one object of interest to the client device; and the first processor of the client device being further configured to: receive, from the cloud server, the light information associated with the at least one object of interest; and render, on the screen of the client device, an image of the given 3D scene, by: in response to a given pixel of the image being representative of the at least one object of interest in the given 3D scene, shading the given pixel in accordance with the light information.

[0019] In some implementations of the system, the predetermined rule for identifying the at least one object of interest comprises identifying, in the plurality of objects, an object as being an object of interest if a respective frequency of a rendering update thereof, during a predetermined monitoring period, in the given 3D scene is less than a predetermined frequency threshold.

[0020] In some implementations of the system, the respective frequency of the rendering update of each one of the plurality of objects has been predetermined; and prior to identifying the at least one object of interest, the first processor is further configured to receive data of the respective frequency of the rendering update of each one of the plurality of objects.

[0021] In some implementations of the system, the given 3D scene is one of a sequence of 3D scenes; and prior to identifying the at least one object of interest, the first processor is further configured to: determine the respective frequency of the rendering update for each one of the plurality of objects in the given 3D scene by monitoring at least a portion of 3D scenes in the sequence of 3D scenes prior to the given 3D scene during the predetermined monitoring period; and in response to the respective frequency of the rendering update of a given object of the plurality of objects being less than the predetermined frequency threshold, identify the given object as being the at least one object of interest.

[0022] In some implementations of the system, prior to determining the light information, the second processor is configured to: organize the at least one object of interest within the given 3D scene into groups, such that: a given group of objects includes those of the at least one object of interest that are located therein within a predetermined threshold distance; generate, for the given group of objects, a respective plurality of 2D layouts, a given 2D layout of the respective plurality of 2D layouts including respective surface regions of the given group of objects having a respective reflectance value; and determine, for the given 2D layout of the respective plurality of 2D layouts, based on the respective reflectance value, a respective light texture map for the given group of objects, the respective light texture  map including Red Green Blue (RGB) values indicative of light intensity values of the respective surface regions of the given group of objects; aggregate respective light texture maps over each respective plurality of 2D layouts associated with each group of objects of the at least one object of interest in the given 3D scene, thereby generating an aggregate light texture map associated with the at least one object of interest; and determine the light information associated with the at least one objects of interest as being the aggregate light texture map; and to shade the given pixel according to the light information, the first processor is configured to apply to the given pixel a respective light intensity value from the aggregate light texture map, the respective light intensity value corresponding to the respective surface region of the at least one object of interest.

[0023] In some implementations of the system, the first processor is configured to transmit the data representative of the at least one object of interest to the cloud server in response to determining that the at least one object of interest has never been transmitted to the cloud server for determining the light information thereof.

[0024] In some implementations of the system, the first processor is configured to transmit the data representative of the at least one object of interest to the cloud server in response to an instance of a rendering update of the at least one object of interest during a predetermined monitoring period in the given 3D scene.

[0025] In some implementations of the system, the rendering update comprises an update of a geometry of the at least one object of interest.

[0026] In some implementations of the system, the rendering update comprises an update in at least one of:(i) a location of a light source in the given 3D scene relative to the at least one object of interest and (ii) a color of the at least one object of interest; the second processor has previously determined prior light information for the at least one object of interest; and instead of transmitting the data representative of the at least one object of interest, the first processor is configured to cause the second processor of the cloud server to re-determine the light information for the at least one object of interest.

[0027] In some implementations of the system, prior to transmitting the light information to the client device, the second processor of the cloud server is further configured to: (i) post-process the light information and (ii) compress the light information; and prior to rendering the image of the given 3D scene, the first processor of the client device is further configured to decompress the light information.

[0028] In some implementations of the system, the second processor is configured to post-process the light information by applying to the light information at least one of: denoising and super-sampling.

[0029] Further, in accordance with a second broad aspect of the present technology, there is provided a client device for rendering a 3D scene on a screen thereof. The client device comprises a processor and a non-transitory computer-readable medium storing instructions. The processor, upon executing the instructions, is configured to: in response to a rendering request to render a given 3D scene of a sequence of 3D scenes on the screen, the given 3D scene including a plurality of objects: monitor at least a portion of 3D scenes in the sequence of 3D scenes prior to the given 3D scene, during a predetermined monitoring period, to identify at least one object of interest in the given 3D scene, a respective frequency of a rendering update of which is less than a predetermined frequency threshold in the predetermined monitoring period; and in response to identifying the at least one object of interest in the given 3D scene,  transmit data representative thereof to a cloud server, communicatively coupled to the client device, thereby causing the cloud server to determine light information associated with the at least one object of interest in the given 3D scene, the light information being indicative of light interaction with a surface of the at least one object of interest in the given 3D scene; and receive, from the cloud server, the light information for the at least one object of interest; and render, on the screen of the client device, an image of the given 3D scene, by: in response to a given pixel of the image being representative of the at least one object of interest in the given 3D scene, shading the given pixel according to the light information.

[0030] In some implementations of the client device, the processor is configured to transmit the data representative of the at least one object of interest to the cloud server in response to determining that the at least one object of interest has never been transmitted to the cloud server for determining the light information thereof.

[0031] In some implementations of the client device, the processor is configured to transmit the data representative of the at least one object of interest to the cloud server in response to an instance of the rendering update of the at least one object of interest during the predetermined monitoring period in the given 3D scene.

[0032] In some implementations of the client device, the rendering update comprises an update of a geometry of the at least one object of interest.

[0033] In some implementations of the client device, the rendering update comprises an update of at least one of: (i) a location of a light source in the given 3D scene relative to the at least one object of interest and (ii) a color of the at least one object of interest; the cloud server has previously determined prior light information for the at least one object of interest; and instead of transmitting the data representative of the at least one object of interest, the processor is configured to cause the cloud server to re-determine the light information for the at least one object of interest.

[0034] In some implementations of the client device, the light information determined by the cloud server comprises a light texture map including Red Green Blue (RGB) values indicative of light intensity values of respective surface regions of the at least one object of interest; and to shade the given pixel according to the light information, the processor is configured to apply to the given pixel a respective light intensity value from the light texture map corresponding to the respective surface region of the at least one object of interest.

[0035] Further, in accordance with a third broad aspect of the present technology, there is provided a cloud server for rendering a 3D scene on a screen of a client device communicatively coupled to the cloud server. The cloud server comprises a processor and a non-transitory computer-readable medium storing instructions, upon executing which, the processor is configured to: receive, from the client device, data representative of at least one object in a given 3D scene to be rendered on a screen of the client device, organize the at least one object within the given 3D scene into groups, such that: a given group of objects includes those of the at least one object that are located therein within a predetermined threshold distance; generate, for the given group of objects, a respective plurality of 2D layouts, a given 2D layout of the respective plurality of 2D layouts including respective surface regions of the given group of objects having a respective reflectance value; and determine, for the given 2D layout of the respective plurality of 2D layouts, based on the respective reflectance value, a respective light texture map for the given group of objects, the respective light texture map including Red Green Blue (RGB) values indicative of light  intensity values of the respective surface regions of the given group of objects; aggregate respective light texture maps over each respective plurality of 2D layouts associated with each group of objects of the at least one object in the given 3D scene, thereby generating an aggregate light texture map associated with the at least one object; and transmit, via the communication network, the aggregate light texture map to the client device for further using the aggregate light texture map in rendering an image of the given 3D scene on the screen of the client device.

[0036] In some implementations of the cloud server, prior to transmitting the aggregate light texture map to the client device, the processor is further configured to: (i) post-process the aggregate light texture map and (ii) compress the aggregate light texture map.

[0037] In some implementations of the cloud server, the processor is configured to post-process the aggregate light texture map by applying thereto at least one of: denoising and super-sampling.

[0038] Further, in accordance with a fourth broad aspect of the present technology, there is provided a method of rendering a 3D scene on a screen of a client device. The method is implemented by a system comprising a cloud server communicatively coupled to the client device over a communication network. The method comprises: in response to a rendering request to the client device to render a given 3D scene, the given 3D scene including a plurality of objects: identifying, by the client device, based on a predetermined rule, at least one object of interest in the given 3D scene; in response to identifying the at least one object of interest in the given 3D scene, transmitting, by the client device, via the communication network, data representative of the at least one object of interest to the cloud server; receiving, by the cloud server, from the client device, the data representative of the at least one object of interest in given 3D scene; determining, by the cloud server, for the at least one object of interest, light information associated therewith, the light information being indicative of light interaction with a surface of the at least one object of interest in the given 3D scene; transmitting, by the cloud server, via the communication network, the light information associated with the at least one object of interest to the client device; receiving, by the client device, from the cloud server, the light information associated with the at least one object of interest; and rendering, by the client device, on the screen thereof, an image of the given 3D scene, by: in response to a given pixel of the image being representative of the at least one object of interest in the given 3D scene, shading the given pixel in accordance with the light information.

[0039] In the context of the present specification, a “server” is a computer program that is running on appropriate hardware and is capable of receiving requests (e.g., from devices) over a network, and carrying out those requests, or causing those requests to be carried out. The hardware may be one physical computer or one physical computer system, but neither is required to be the case with respect to the present technology. In the present context, the use of the expression a “server” is not intended to mean that every task (e.g., received instructions or requests) or any particular task will have been received, carried out, or caused to be carried out, by the same server (i.e., the same software and / or hardware) ; it is intended to mean that any number of software elements or hardware devices may be involved in receiving / sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request; and all of this software and hardware may be one server or multiple servers, both of which are included within the expression “at least one server” .

[0040] In the context of the present specification, “device” is any computer hardware that is capable of running software appropriate to the relevant task at hand. Thus, some (non-limiting) examples of devices include personal computers (desktops, laptops, netbooks, etc. ) , smartphones, and tablets, as well as  network equipment such as routers, switches, and gateways. It should be noted that a device acting as a device in the present context is not precluded from acting as a server to other devices. The use of the expression “adevice” does not preclude multiple devices being used in receiving / sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request, or steps of any method described herein.

[0041] In the context of the present specification, a “database” is any structured collection of data, irrespective of its particular structure, the database management software, or the computer hardware on which the data is stored, implemented or otherwise rendered available for use. A database may reside on the same hardware as the process that stores or makes use of the information stored in the database or it may reside on separate hardware, such as a dedicated server or plurality of servers. It can be said that a database is a logically ordered collection of structured data kept electronically in a computer system

[0042] In the context of the present specification, the expression “information” includes information of any nature or kind whatsoever capable of being stored in a database. Thus information includes, but is not limited to audiovisual works (images, movies, sound records, presentations etc. ) , data (location data, numerical data, etc. ) , text (opinions, comments, questions, messages, etc. ) , documents, spreadsheets, lists of words, etc.

[0043] In the context of the present specification, the expression “component” is meant to include software (appropriate to a particular hardware context) that is both necessary and sufficient to achieve the specific function (s) being referenced.

[0044] In the context of the present specification, the expression “computer usable information storage medium” is intended to include media of any nature and kind whatsoever, including RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc. ) , USB keys, solid state-drives, tape drives, etc.

[0045] In the context of the present specification, the words “first” , “second” , “third” , etc. have been used as adjectives only for the purpose of allowing for distinction between the nouns that they modify from one another, and not for the purpose of describing any particular relationship between those nouns. Thus, for example, it should be understood that, the use of the terms “first server” and “third server” is not intended to imply any particular order, type, chronology, hierarchy or ranking (for example) of / between the server, nor is their use (by itself) intended imply that any “second server” must necessarily exist in any given situation. Further, as is discussed herein in other contexts, reference to a “first” element and a “second” element does not preclude the two elements from being the same actual real-world element. Thus, for example, in some instances, a “first” server and a “second” server may be the same software and / or hardware, in other cases they may be different software and / or hardware.

[0046] Implementations of the present technology each have at least one of the above-mentioned object and / or aspects, but do not necessarily have all of them. It should be understood that some aspects of the present technology that have resulted from attempting to attain the above-mentioned object may not satisfy this object and / or may satisfy other objects not specifically recited herein.

[0047] Additional and / or alternative features, aspects and advantages of implementations of the present technology will become apparent from the following description, the accompanying drawings and the appended claims.BRIEF DESCRIPTION OF THE DRAWINGS

[0048] For a better understanding of the present technology, as well as other aspects and further features thereof, reference is made to the following description which is to be used in conjunction with the accompanying drawings, where:

[0049] FIG. 1 illustrates an example of a computing device that may be used to implement any of the methods described herein;

[0050] FIG. 2 shows a conventional Light Texture technique used for scene rendering, in accordance with certain non-limiting embodiments of the present technology;

[0051] FIG. 3 shows a schematic diagram of a rendering system, in accordance with certain non-limiting embodiments of the present technology;

[0052] FIG. 4 shows a schematic diagram of a scene monitoring procedure executed by a client device of the rendering system of FIG. 3, in accordance with certain non-limiting embodiments of the present technology;

[0053] FIG. 5 shows a schematic diagram of a given 3D scene to be rendered by the client device of FIG. 3, in accordance with certain non-limiting embodiments of the present technology;

[0054] FIG. 6 shows a schematic diagram of executing, by a server of the rendering system of FIG. 3, a scene splitting procedure and a surface layout procedure for the given 3D scene of FIG. 5, in accordance with certain non-limiting embodiments of the present technology;

[0055] FIG. 7 shows a schematic diagram of executing, by the server of the rendering system of FIG. 3, a surface light post-processing procedure and a compression procedure for an aggregate light texture map generated for the given 3D scene of FIG. 5, in accordance with certain non-limiting embodiments of the present technology; and

[0056] FIG. 8 depicts a flowchart diagram of a method for rendering images of 3D scenes, in accordance with certain non-limiting embodiments of the present technology.DETAILED DESCRIPTION

[0057] The examples and conditional language recited herein are principally intended to aid the reader in understanding the principles of the present technology and not to limit its scope to such specifically recited examples and conditions. It will be appreciated that those skilled in the art may devise various arrangements which, although not explicitly described or shown herein, nonetheless embody the principles of the present technology and are included within its spirit and scope.

[0058] Furthermore, as an aid to understanding, the following description may describe relatively simplified implementations of the present technology. As persons skilled in the art would understand, various implementations of the present technology may be of a greater complexity.

[0059] In some cases, what are believed to be helpful examples of modifications to the present technology may also be set forth. This is done merely as an aid to understanding, and, again, not to define the scope or set forth the bounds of the present technology. These modifications are not an exhaustive list, and a person skilled in the art may make other modifications while nonetheless remaining within the scope of the present technology. Further, where no examples of modifications have been set forth, it should not be  interpreted that no modifications are possible and / or that what is described is the sole manner of implementing that element of the present technology.

[0060] Moreover, all statements herein reciting principles, aspects, and implementations of the present technology, as well as specific examples thereof, are intended to encompass both structural and functional equivalents thereof, whether they are currently known or developed in the future. Thus, for example, it will be appreciated by those skilled in the art that any block diagrams herein represent conceptual views of illustrative circuitry embodying the principles of the present technology. Similarly, it will be appreciated that any flowcharts, flow diagrams, state transition diagrams, pseudo-code, and the like represent various processes which may be substantially represented in computer-readable media and so executed by a computer or processor, whether or not such computer or processor is explicitly shown.

[0061] The functions of the various elements shown in the figures, including any functional block labeled as a "processor" , may be provided through the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software. When provided by a processor, the functions may be provided by a single dedicated processor, by a single shared processor, or by a plurality of individual processors, some of which may be shared. In some embodiments of the present technology, the processor may be a general-purpose processor, such as a central processing unit (CPU) or a processor dedicated to a specific purpose, such as a digital signal processor (DSP) . Moreover, explicit use of the term a "processor" should not be construed to refer exclusively to hardware capable of executing software, and may implicitly include, without limitation, application specific integrated circuit (ASIC) , field programmable gate array (FPGA) , read-only memory (ROM) for storing software, random access memory (RAM) , and non-volatile storage. Other hardware, conventional and / or custom, may also be included.

[0062] Software modules, or simply modules which are implied to be software, may be represented herein as any combination of flowchart elements or other elements indicating performance of process steps and / or textual description. Such modules may be executed by hardware that is expressly or implicitly shown. Moreover, it should be understood that module may include for example, but without being limitative, computer program logic, computer program instructions, software, stack, firmware, hardware circuitry or a combination thereof which provides the required capabilities.

[0063] With these fundamentals in place, we will now consider some non-limiting examples to illustrate various implementations of aspects of the present technology.

[0064] Computing environment

[0065] FIG. 1 illustrates a diagram of a computing environment 100 in accordance with an embodiment of the present technology is shown. In some embodiments, the computing environment 100 may be implemented by any of a conventional personal computer, a computer dedicated to operating and / or monitoring systems relating to a data center, a controller and / or an electronic device (such as, but not limited to, a mobile device, a tablet device, a server, a controller unit, a control device, a monitoring device etc. ) and / or any combination thereof appropriate to the relevant task at hand. In some embodiments, the computing environment 100 comprises various hardware components including one or more single or multi-core processors collectively represented by a processor 110, a solid-state drive 120, a random-access memory 130 and an input / output interface 150.

[0066] In some embodiments, the computing environment 100 may also be a sub-system of one of the above-listed systems. In some other embodiments, the computing environment 100 may be an “off the  shelf” generic computer system. In some embodiments, the computing environment 100 may also be distributed amongst multiple systems. The computing environment 100 may also be specifically dedicated to the implementation of the present technology. As a person in the art of the present technology may appreciate, multiple variations as to how the computing environment 100 is implemented may be envisioned without departing from the scope of the present technology.

[0067] Communication between the various components of the computing environment 100 may be enabled by one or more internal and / or external buses 160 (e.g., a PCI bus, universal serial bus, IEEE 1394 “Firewire” bus, SCSI bus, Serial-ATA bus, ARINC bus, etc. ) , to which the various hardware components are electronically coupled.

[0068] The input / output interface 150 may allow enabling networking capabilities such as wire or wireless access. As an example, the input / output interface 150 may comprise a networking interface such as, but not limited to, a network port, a network socket, a network interface controller and the like. Multiple examples of how the networking interface may be implemented will become apparent to the person skilled in the art of the present technology. For example, but without being limitative, the networking interface may implement specific physical layer and data link layer standard such as Ethernet, Fibre Channel, Wi-Fi or Token Ring. The specific physical layer and the data link layer may provide a base for a full network protocol stack, allowing communication among small groups of computers on the same local area network (LAN) and large-scale network communications through routable protocols, such as Internet Protocol (IP) .

[0069] According to implementations of the present technology, the solid-state drive 120 stores program instructions suitable for being loaded into the random-access memory 130 and executed by the processor 110 for executing operating data centers based on a generated machine learning pipeline. For example, the program instructions may be part of a library or an application.

[0070] In some embodiments of the present technology, the computing environment 100 may be implemented as part of a cloud computing environment. Broadly, a cloud computing environment is a type of computing that relies on a network of remote servers hosted on the internet, for example, to store, manage, and process data, rather than a local server or personal computer. This type of computing allows users to access data and applications from remote locations, and provides a scalable, flexible, and cost-effective solution for data storage and computing. Cloud computing environments can be divided into three main categories: Infrastructure as a Service (IaaS) , Platform as a Service (PaaS) , and Software as a Service (SaaS) . In an IaaS environment, users can rent virtual servers, storage, and other computing resources from a third-party provider, for example. In a PaaS environment, users have access to a platform for developing, running, and managing applications without having to manage the underlying infrastructure. In a SaaS environment, users can access pre-built software applications that are hosted by a third-party provider, for example. In summary, cloud computing environments offer a range of benefits, including cost savings, scalability, increased agility, and the ability to quickly deploy and manage applications.

[0071] Rendering system

[0072] With reference to FIG. 3, there is depicted a rendering system 300 comprising a client device 302 and a server 304 communicatively coupled over a network 306. The client device 302 may comprise one or more components of the computing environment 100 described above. Similarly, the server 304 may comprise one or more components of the computing environment 100 described above.

[0073] In some embodiments, the client device 302 may be a “thin client” , which is a computer system that relies on the server 304 for considerably increased processing power, storage, and other resources. In contrast, the server 304 may be a “cloud server” , which is a remote computer system that provides a range of services and resources over the communication network 306, such as the internet for example.

[0074] It should be noted that processing resources of a thin client are typically limited, as its only local processing power is used to run its operating system and applications. It can be said that the thin client relies on the cloud server to perform a bulk of computations, such as running applications and processing data. On the other hand, the server 304 has significantly more processing resources than a thin client. This allows it to provide a wide range of services, including virtual machines, cloud storage, and application hosting. Cloud servers can scale up or down based on demand, making them highly flexible and cost-effective.

[0075] As it will be described in greater details herein further below, the rendering system 300 may enable high quality rendering (e.g., raytracing quality rendering) without requiring raytracing accelerated hardware. As a result, the rendering system 300 may be employed for a variety of applications with high quality rendering requirements, such as gaming applications.

[0076] For example, the raytracing accelerated hardware can include a Graphics Processing Unit (GPU) with a raytracing core. In a specific non-limiting example, the GPU with the raytracing core can be of a GPU of an RTX type available from NVIDIA Corporate of 2788 San Tomas Expressway Santa Clara, CA 95051, the United States of America.

[0077] Broadly speaking, the rendering system 300 is configured to perform a list of processing steps. First, the client is configured to monitor the scene, and provide at least some environment objects to the server 304. For example, the client may provide one or more background objects that are updated less frequently than other objects. Second, the server 304 is configured to split the scene, layout 2D surface based on materials, and capture surface light of the environment objects. Third, server 304 is configured to perform post-processing and compression operations on the surface light and send the enhanced and / or compressed data to client. Fourth, the client is configured to perform a hybrid rendering procedure 310 with local dynamic objects and environment surface light.

[0078] In at least some embodiments of the present technology, the client device 302 of the rendering system 300 is configured to perform a scene monitoring procedure 308. Broadly speaking, as will be described below in greater detail, according to certain non-limiting embodiments of the present technology, the scene monitoring procedure 308 is for identifying, in the a given 3D scene, objects of interest for further determining, by the server 304, light information therefor.

[0079] In at least some embodiments of the present technology, the client device 302 of the rendering system 300 is configured to perform a hybrid rendering procedure 310. Broadly speaking, as will be described below in greater detail, according to certain non-limiting embodiments of the present technology, the hybrid rendering procedure 310 is configured to apply the light information determined by the server 304 to the object of interest determined during the execution of the scene monitoring procedure 308.

[0080] In at least some embodiments of the present technology, the server 304 of the rendering system 300 is configured to perform a scene splitting procedure 312 and a surface layout procedure 314. Broadly speaking, as will be described below in greater detail, according to certain non-limiting embodiments of  the present technology, the scene splitting procedure 312 is configured for identifying, in a plurality of objects in the given 3D scene, portions of objects based on location thereof. Further, in accordance with certain non-limiting embodiments of the present technology, the surface layout procedure 314 is configured to identify, surface regions of each one of the portions of objects in the given 3D scene having similar light reflecting properties, such as reflectance values.

[0081] In at least some embodiments of the present technology, the server 304 of the rendering system 300 is configured to perform a surface light capturing procedure 316. Broadly speaking, as will be described below in greater detail, according to certain non-limiting embodiments of the present technology, the surface light capturing procedure 316 is configured to determine the light information for the objects of interest identified during the execution of the scene monitoring procedure 308.

[0082] In at least some embodiments of the present technology, the server 304 of the rendering system 300 is configured to perform a surface light post-processing procedure 318 and a compression procedure 320. Briefly, by executing the surface light post-processing procedure 318, the server 304 is configure to denoise and / or super-sample the light information determined during the execution of the surface light capturing procedure 316. Also, by executing the compression procedure 320, the server 304 is configured to compress the light information for further transmission thereof, via the network 306, to the client device 302.

[0083] Developers of the present technology have realized that the rendering system 300 of FIG. 3 may be used for gaming applications executed on a thin client with optional cloud service to enhance the rendering quality of rendering 3D scenes. Optionally, at least one object can be selected and sent from the client to the cloud service, and benefit from a more advanced and / or powerful GPU to capture light info of the scene onto the surface of at least one object. The thin client will perform the hybrid rendering procedure 310 with this optional cloud-assisted surface light information to achieve performance similar to raytracing like global illumination techniques. In contrast, traditional cloud-assisted rendering systems render the images on the cloud and the images are streamed as video to the client which then decodes the video bit-stream and displays it on local screen.

[0084] It should be noted that using the rendering system 300 for gaming applications is only one non-limiting example of how the rendering system 300 can be applied in the context of the present technology. Alternatively, the rendering system 300 may be used in the context of any other computationally expensive application that demands high rendering quality. Such applications include virtual / augmented reality applications, film making applications, 3D digital design applications, etc.

[0085] Scene Monitor Procedure

[0086] The scene monitor procedure 308 is configured to analyze the given 3D scene and select one or more objects of interest that are suitable for cloud surface light capture. Object selection may be executed during the scene monitor procedure 308 based on one or more criteria including: (i) update of a frequency of a rendering of a candidate object, and (ii) rendering quality requirements of a candidate object, such as whether the candidate object requires high quality visual effects, for example.

[0087] In some embodiments, once, by executing the scene monitoring procedure 308, the client device 302 has selected one or more objects and sent object data to the server 304 for processing, further execution of the scene monitoring procedure 308 is not required to re-send said data to the server 304, unless there is a geometry update of the one or more objects. For example, if there is only a location update  for the one or more objects in the scene, or there is any light source color / intensity update relative to the one or more objects, the client device 302 may send a signal to the server 304 to perform re-capture of the light information associated with the one or more objects, instead of re-sending object data. Developers of the present technology have realized that such an approach can significantly reduce the processing bandwidth from the client to the server 304, and / or reduce the computational cost on the server 304 for performing redundant 2D layout operations.

[0088] With reference to FIG. 4, there is depicted a schematic diagram of the scene monitoring procedure 308 executed by the client device 302, in accordance with certain non-limiting embodiments of the present technology. It should be noted that by executing the scene monitoring procedure 308, the client device 302 may be configured to conditionally send updated objects to the server 304. The update can occur at a lower frequency than a rendering frame rate of the given 3D scene. This means that the scene monitoring procedure 308 may be initiated by a cloud service request based on one or more conditions.

[0089] With reference to FIG. 5, there is depicted a schematic diagram of a 3D scene 500 to be rendered by the client device 302 illustrating an example of executing the scene monitoring procedure 308, in accordance with certain non-limiting embodiments of the present technology.

[0090] In the embodiments depicted in Figure 5, by executing the scene monitoring procedure 308, based on the respective frequencies of the rendering update of objects present in the 3D scene 500 over a predetermined monitoring period, the client device 302 can be configured to determine a wall 502, a ceiling 504, a floor 506, and light source 508 as being background environment (or otherwise less mobile or static) objects. Further, the client device 302 can be configured to determine a helmet 510 as being a dynamic object. For example, in some non-limiting embodiments of the present technology, the client device 302 can be configured to determine that a given object in the 3D scene 500 as being an environmental object if the respective frequency of rendering update thereof is less than a predetermined frequency threshold, which can be, for example, 30 rendering frames per second. In some non-limiting embodiments of the present technology, the client device 302 can be configured to receive, for example, from an external electronic device (not depicted) , data of average respective frequencies of the rendering update associated with each one of the objects present in the 3D scene 500. In other non-limiting embodiments of the present technology, the client device 302 can be configured to determine the respective frequencies of the rendering update for each one of the objects present in the 3D scene 500 by monitoring how frequently the objects are updated in a sequence of 3D scenes preceding the 3D scene 500 during the predetermined frequency threshold.

[0091] Further, in some non-limiting embodiments of the present technology, the client device 302 can be configured to send data of the environmental objects to the server 304 for further processing. More specifically, in some non-limiting embodiments of the present technology, over the predetermined monitoring period, geometry of the given object can be updated in the 3D scene 500, such as a height of the wall 502, for example, and the client device 302 will be configured to send data indicative the 3D scene 500 (or only that of the wall 502) to the server 304 for capturing the light information of the updated geometry of the wall 502.

[0092] However, if the geometry of the given object (such as the wall 502) in the 3D scene 500 has not changed over the predetermined monitoring period, but there is a change in at least one of: a color of the light source 508 (such as from white to yellow, for example) , a location of the light source 508 relative to the wall 502, such as from the ceiling 504 to one of side walls (object location update) , then instead of  sending data indicative of the objects in the 3D scene 500, the client device 302 can be configured to cause the server 304 to re-capture the light information associated with the wall 502, as will be described in greater details below.

[0093] Scene Split and Material Based Surface Layout

[0094] With reference to FIG. 6, there is depicted a schematic diagram of executing, by the server 304, the scene splitting procedure 312 and the surface layout procedure 314 for the 3D scene 500, in accordance with certain non-limiting embodiments of the present technology.

[0095] According to certain non-limiting embodiments of the present technology, by executing the scene splitting procedure 312, the server 304 can be configured to split the objects in the 3D scene 500 into groups based on location of the objects within the 3D scene 500. For example, the server 304 can be configured to identify the groups such that a given group includes a portion of objects of the 3D scene 500 that are located within a predetermined distance from each other. In some examples, the given group can contain only a single object.

[0096] Further, the server 304 can be configured to execute the surface layout procedure 314 including generating, for each group of objects, a respective plurality of 2D surface layouts, each of which includes respective surface regions of the given group of objects having a similar reflectance value. For example, the server 304 can be configured to generate the respective plurality 2D surface layouts for the given group of objects based on material of the respective surface regions.

[0097] Thus, the given object of the 3D scene 500 can have multiple instances defined by different 2D layouts. Different mesh instances of the given object may share same texture coordinates (UVs) . In some non-limiting embodiments of the present technology, a size of a given 2D layout could be proportional to a surface area of mesh.

[0098] Surface Light Capture

[0099] After executing the scene splitting and surface layout procedures 312, 314, the server 304 can be configured to execute the surface light capturing procedure 316 to capture the light information of one or more environmental objects selected by the scene monitoring procedure 308, such as the wall 502. To do so, in some non-limiting embodiments of the present technology, the server 304 can be configured to determine, in each 2D layout of the respective plurality of 2D layouts associated with the given portion of objects in the 3D scene 500, based on reflectance values associated with the respective surface regions of the given portion of objects, a respective light texture map.

[0100] It is not limited how the server 304 can be configured to determine the respective light texture map. In some non-limiting embodiments of the present technology, the server 304 can be configured to apply one of the approaches described in a co-owned PCT Patent Application No. : PCT / CN2022 / 083633, filed on March 29, 2022, an entitled “METHODS AND SYSTEMS FOR RENDERING THREE-DIMENSIONAL SCENES” , the content of which is incorporated herein by reference in its entirety. This approach is described above with reference to Figure 2.

[0101] Also, in other non-limiting embodiments of the present technology, to determine the respective light texture map for the given 2D layout, the server 304 can be configured to apply other apply other approaches, including, without limitation, lightmap baking, Surfels, and others.

[0102] Thus, the server 304 can be configured to generate, for the given 2D layout, the respective light texture map including light intensity values of the respective surface regions of the given group of objects in the 3D scene 500. In some non-limiting embodiments of the present technology, the respective light texture map can include Red Green Blue (RGB) values of all points defining the respective surface regions of the given group of objects in the 3D scene 500. However, in other non-limiting embodiments of the present technology, the respective light texture map can include viewing angles of spheres surrounding the points defining the respective surface regions of the given group of objects in the 3D scene 500.

[0103] Further, the server 304 can be configured to aggregate respective light texture maps associated with each group of objects of the 3D scene 500, thereby generating an aggregate light texture map (such as an aggregate light texture map 702 depicted in Figure 7) for further use in applying the light information to the one or more environmental objects selected by the scene monitoring procedure 308.

[0104] However, with back reference to FIG. 5, as noted hereinabove, if the data indicative of the wall 502 has already been sent to the server 304 and the geometry of the wall 502 has not changed, but there is a change in at least one of: the color of the light source 508 (such as from white to yellow, for example) , the location of the light source 508 relative to the wall 502, such as from the ceiling 504 to one of side walls (object location update) , rather than sending the data indicative thereof to the server 304 to execute the scene splitting and surface layout procedures 312, 314 again, the client device 302 can be configured to cause the server 304 only to execute the surface light capturing procedure 316 to update the light information of the wall 502. More specifically, in these embodiments, the client device 302 can be configured to cause the server 304 to re-determine the RGB values of the points defining the respective surface regions of the given group of objects in the 3D scene 500 in each 2D layout of the respective plurality of 2D layouts associated therewith that have been previously determined by the server 304 via executing the scene splitting and surface layout procedures 312, 314, and as such, further execution of which in case where the geometry of the wall 502 has not changed can be omitted. By doing so, computational resources of the server 304 on re-determining the light information of the objects of interest can be saved.

[0105] Surface Light Post-Processing and Compression

[0106] With reference to FIG. 7, there is depicted a schematic diagram of executing, by the server 304, the surface light post-processing procedure 318 and the compression procedure 320 for the aggregate light texture map 702 generated by the surface light capturing procedure 316 for the 3D scene 500, in accordance with certain non-limiting embodiments of the present technology.

[0107] According to certain non-limiting embodiments of the present technology, the surface light post-processing procedure 318 includes denoising and super-sampling of the aggregate light texture map 702. In some non-limiting embodiments of the present technology, the denoising may include at least one of filter-based denoising and an AI-based denoising. In some non-limiting embodiments of the present technology, the server 304 can be configured to perform the AI-based denoising using an AI denoiser, as described, for example, in a co-owned US Patent Application No. : 18 / 309, 283, filed on March 28, 2023, an entitled “METHODS AND SYSTEMS FOR GENERATING ENHANCED LIGHT TEXTURE DATA” , the content of which is incorporated herein by reference in its entirety. More specifically, the AI denoiser can be a fully convolutional, encoder-decoder style U-Net with 4 levels at both an encoder side and a decoder side. On the encoder side, a spatial dimension gets contracted, and the features gradually become deeper representing higher level abstractions. The decoder side includes a set of operations that mirror those of the encoder side, however feature maps from the encoder side are combined with the corresponding feature  maps at the decoder side through a skip connection. This skip connection is added at each corresponding encoder-decoder level to ensure the recovery of details that could have been lost during the downsampling operations 324. Thus, by applying the surface light post-processing procedure 318, the server 304 can be configured to generate a denoised aggregate light texture map 704.

[0108] Further, according to certain non-limiting embodiments of the present technology, the super-sampling of the denoised aggregate light texture map 704 can include at least one of a filter-based super-sampling and a deep-learning-based super-sampling. In some non-limiting embodiments of the present technology, applying the deep-learning-based super-sampling may include an AI super-sampler, which can be implemented as described, for example, in the PCT Application Publication ‘633 mentioned above. More specifically, the AI super-sampler can be implemented based on a Deep Residual Neural Network as described in Lim, B., Son, S., Kim, H., Nah, S., &Lee, K. (2017) . Enhanced Deep Residual Networks for Single Image Super-Resolution. IEEE Conference on Computer Vision and Pattern Recognition (CVPR) Workshops.

[0109] Thus, by applying to the denoised aggregate light texture map 704 the super-sampling, the server 304 can be configured to generate an enhanced aggregate light texture map 706 of higher spatial resolution., e.g., a factor of 2 super resolution.

[0110] Further, after applying the surface light post-processing procedure 318, in some non-limiting embodiments of the present technology, the server 304 can be configured to apply, to the enhance aggregate light feature map 706, the compression procedure 320. According to certain non-limiting embodiments of the present technology, the compression procedure 320 can comprise various compression techniques suitable for transmission of the enhance aggregate light texture map 706 via the network 306 to the client device 302. In this regard, the compression procedure 320 can include applying at least one of: image compression standard (JPEG, JPEG2000, and the like) ; video compression standard (H264, H265, H266, and the like) ; and texture compression standard (DXT, and the like) .

[0111] Thus, after applying the compression procedure 320 to the enhanced aggregate light texture map 706, the server 304 can further be configured to transmit to the client device 302 for further use in applying the light information to the one or more environmental objects, such as the wall 502, when rendering an image of the 3D scene 500 on a display (not separately numbered) of the client device 302.

[0112] A hybrid rendering procedure

[0113] After receiving the enhanced aggregate light texture map 706, the client device 302 can be configured to apply thereto the hybrid rendering procedure 310. In some non-limiting embodiments of the present technology, where before transmitting to the client device 302, the enhanced aggregate light texture map 706 has been compressed, by the server 304 by executing the compression procedure 320, the client device 302 can be configured to apply a decompression procedure 322.

[0114] Further, the client device 310 can be configured to render, on the display of the client device 302, the image (such as a raster image) of the 3D scene 500 executing the hybrid rendering procedure 310. More specifically, in response to a given pixel being indicative of the one or more environmental object, such as the wall 502, the client device 302 can be configured to shade the given pixel according to the received light information about the wall 502. In other words, the client device 302 can be configured to apply to the given pixel a respective RGB value from the enhanced aggregate light texture map 706, corresponding to a respective surface region of the wall 502.

[0115] However, if the given pixel is representative of a dynamic object, such as the helmet 510, the client device 302 can be configured to use standard rasterization and / or raytracing techniques mentioned above.

[0116] Thus, certain embodiments of the present rendering system 300 may allow for more quality rendering of the 3D scene 500. At the same time, certain embodiments of the rendering system 300 may allow decreasing latency of rendering the 3D scene 500 as only a portion of the objects therein are shaded based on the light information determined by the server 304.

[0117] Computer-implemented method

[0118] With reference to FIG. 8, there is depicted a scheme-block representation of a method 800 for rendering 3D scenes. The method 800 can be executed by the rendering system comprising the client device 302 communicatively coupled, over the network 306, to the server 304, described above.

[0119] STEP 802: IN RESPONSE TO A RENDERING REQUEST TO THE CLIENT DEVICE TO RENDER A GIVEN 3D SCENE, THE GIVEN 3D SCENE INCLUDING A PLURALITY OF OBJECTS: IDENTIFYING, BY THE CLIENT DEVICE, BASED ON A PREDETERMINED RULE, AT LEAST ONE OBJECT OF INTEREST IN THE GIVEN 3D SCENE

[0120] The method 800 commences at step 802 with the client device 302 of the rendering system 300, in response to a rendering request to render a given 3D scene, such as the 3D scene 500, on the display of the client device 302, being configured to identify at least one object of interest, for which the light information is to be captured by the server 304.

[0121] As mentioned hereinabove, according to certain non-limiting embodiments of the present technology, the object of interest is an environmental object, that is that the frequency of the rendering update of which during the predetermined monitoring period is less than the predetermined frequency threshold.

[0122] To that end, in some non-limiting embodiments of the present technology, the client device 302 can be configured to execute the scene monitoring procedure 308, described above with reference to Figure 4, thereby identifying the at least one object of interest in the 3D scene 500 being, for example, the wall 502, as described above with reference to Figure 5.

[0123] The method 800 hence advances to step 804.

[0124] STEP 804: IN RESPONSE TO IDENTIFYING THE AT LEAST ONE OBJECT OF INTEREST IN THE GIVEN 3D SCENE, TRANSMITTING, BY THE CLIENT DEVICE, VIA THE COMMUNICATION NETWORK, DATA REPRESENTATIVE OF THE AT LEAST ONE OBJECT OF INTEREST TO THE CLOUD SERVER

[0125] At step 804, according to certain non-limiting embodiments of the present technology, upon identifying the wall 502 in the 3D scene 500 for capturing the light information thereof, the client device 302 can be configured to transmit, via the network 306, the data representative of the wall 502 to the server 304, as mentioned above.

[0126] In some non-limiting embodiments of the present technology, for determining the light information for the wall 502, the client device 302 can be configured to transmit to the server 304 data representative of the entirety of the 3D scene 500.

[0127] The method 800 hence advances to step 806.

[0128] STEP 806: RECEIVING, BY THE CLOUD SERVER, FROM THE CLIENT DEVICE, THE DATA REPRESENTATIVE OF THE AT LEAST ONE OBJECT OF INTEREST IN GIVEN 3D SCENE

[0129] At step 806, the server 304 can be configured to receive, from the client device 302, the data representative of at least one of the wall 502 and the entirety of the 3D scene 500.

[0130] The method 800 hence advances to step 808.

[0131] STEP 808: DETERMINING, BY THE CLOUD SERVER, FOR THE AT LEAST ONE OBJECT OF INTEREST, LIGHT INFORMATION ASSOCIATED THEREWITH, THE LIGHT INFORMATION BEING INDICATIVE OF LIGHT INTERACTION WITH A SURFACE OF THE AT LEAST ONE OBJECT OF INTEREST IN THE GIVEN 3D SCENE

[0132] At step 808, according to certain non-limiting embodiments of the present technology, based on the data representative at least of the wall 502, the server 304 can be configured to determine the light information associated therewith.

[0133] In some non-limiting embodiments of the present technology, where the rendering update of the wall 502 determined at step 802 by the client device 302 was an update in the geometry of the wall 502, such height, width, and the like, to determine the light information thereof, the server 304 can be configured to: (i) execute each one of the scene splitting and surface layout procedures 312, 314, described above with reference to Figure 6, to determine the respective plurality of 2D layouts associated with the wall 502; and (ii) execute, for each one of the plurality of 2D layouts, the surface light capturing procedure 316, as described further above. By executing the surface light capturing procedure 316, the server 304 can be configured to determine the aggregate light texture map 702 associated with the 3D scene 500, which will further be used for applying the light information to the objects of interest selected by the scene monitoring procedure 308, that is, the wall 502, as an example.

[0134] In some non-limiting embodiments of the present technology, the aggregate light texture map 702 can include Red Green Blue (RGB) values of all points defining the respective surface regions of the objects in the 3D scene 500. However, in other non-limiting embodiments of the present technology, the aggregate light texture map can include viewing angles of spheres surrounding the points defining the respective surface regions of the objects in the 3D scene 500.

[0135] However, as mentioned further above, in other non-limiting embodiments of the present technology, in cases where (i) the server 304 has already received data of the wall 502 and applied thereto the scene splitting and surface layout procedures 312, 314 to determine the respective plurality of 2D layouts associated with the wall 502; and (ii) the rendering update determined at step 802 by the client device 302 included at least one of the color of the light source 508 and the location of the light source 508 relative to the wall 502, for example, the server 304 can be configured to execute only the surface light capturing procedure 316 to update the light information in the aggregate light texture map 702, without executing the scene splitting and surface layout procedures 312, 314.

[0136] In some non-limiting embodiments of the present technology, after generating the aggregate light texture map 702 associated with the 3D scene 500, the server 304 can be configured to execute the surface light post-processing procedure 318 to generate the denoised aggregate light texture map 704, as described above with reference to Figure 7.

[0137] Also, as described further above with reference to Figure 7, in some non-limiting embodiments of the present technology, the server 304 can be configured to apply, to the denoised aggregate light texture map 704, the super-sampling to generate the enhanced aggregate light texture map 706.

[0138] Further, after applying the surface light post-processing procedure 318, in some non-limiting embodiments of the present technology, the server 304 can be configured to apply, to the enhance aggregate light feature map 706, the compression procedure 320 for further transmission of the enhance aggregate light feature map 706 via the network 306.

[0139] The method 800 thus proceeds to step 810.

[0140] STEP 810: TRANSMITTING, BY THE CLOUD SERVER, VIA THE COMMUNICATION NETWORK, THE LIGHT INFORMATION ASSOCIATED WITH THE AT LEAST ONE OBJECT OF INTEREST TO THE CLIENT DEVICE

[0141] Thus, after applying the compression procedure 320, at step 810, the server 304 can be configured to transmit the light information associated with the 3D scene 500 including the enhanced aggregate light texture map 706 to the client device 302 for further application the light information to the wall 502 when rendering the 3D scene 500.

[0142] The method 800 hence advances to step 812.

[0143] STEP 812: RENDERING, BY THE CLIENT DEVICE, ON THE SCREEN THEREOF, AN IMAGE OF THE GIVEN 3D SCENE, BY: IN RESPONSE TO A GIVEN PIXEL OF THE IMAGE BEING REPRESENTATIVE OF THE AT LEAST ONE OBJECT OF INTEREST IN THE GIVEN 3D SCENE, SHADING THE GIVEN PIXEL IN ACCORDANCE WITH THE LIGHT INFORMATION

[0144] At step 812, according to certain non-limiting embodiments of the present technology, after receiving, from the server 304, the enhanced aggregate light texture map 706, the client device 302 can be configured to execute the hybrid rendering procedure 310. In some non-limiting embodiments of the present technology, where before transmitting to the client device 302, the enhanced aggregate light texture map 706 has been compressed, by the server 304 by executing the compression procedure 320, the client device 302 can be configured to apply the decompression procedure 322.

[0145] Further, the client device 310 can be configured to render, on the display of the client device 302, the image (such as a raster image) of the 3D scene 500 executing the hybrid rendering procedure 310. More specifically, in response to the given pixel being indicative of the at least one object of interest, such as the wall 502, the client device 302 can be configured to shade the given pixel according to the received light information about the wall 502. In other words, the client device 302 can be configured to apply to the given pixel the respective RGB value from the enhanced aggregate light texture map 706, corresponding to a respective surface region of the wall 502.

[0146] However, if the given pixel is representative of a dynamic object, such as the helmet 510, the client device 302 can be configured to use standard rasterization and / or raytracing techniques mentioned above.

[0147] The method 800 hence terminates.

[0148] Thus, certain embodiments of the method 800 may allow for more quality rendering of the 3D scene 500. At the same time, certain embodiments of the method 800 may allow decreasing latency of rendering the 3D scene 500 as only a portion of the objects (that is, the objects of interest) therein are shaded based on the light information determined by the server 304.

[0149] It is contemplated that in some embodiments and depending on the network condition and / or the server computational power, the objects that the client device 302 selects and sends to the server 304 may not be fully processed by the server 304 at once. For example, the server 304 could send back to client device 302 the light information in a scalable manner, where the server 304 can initially process and send only the most important light information as early as possible, and then progressively complete the early-delivered information with additional data.

[0150] Furthermore, it is contemplated that different users may play in the same 3D scene in the gaming application. The client device 302 can request information from the server 304 indicative of whether the light information for one or more objects (having been selected by the client device 302 for server 304 to process) is already stored on the server side. If such light information is available due to processing associated with an other user, the client device 302 may be configured not to send the one or more objects.

[0151] Modifications and improvements to the above-described implementations of the present technology may become apparent to those skilled in the art. The foregoing description is intended to be exemplary rather than limiting. The scope of the present technology is therefore intended to be limited solely by the scope of the appended claims.

Claims

1.A system for rendering a 3D scene on a screen of a client device, the system comprising a cloud server communicatively coupled to the client device over a communication network,the client device comprising a first processor and a first non-transitory computer-readable medium storing first instructions, and the first processor, upon executing the first instructions, being configured to:in response to a rendering request to render a given 3D scene, the given 3D scene including a plurality of objects:identify, based on a predetermined rule, at least one object of interest in the given 3D scene; andin response to identifying the at least one object of interest in the given 3D scene, transmit, via the communication network, data representative of the at least one object of interest to the cloud server;the cloud server comprising a second processor and a second non-transitory computer-readable medium storing second instructions, upon executing which, the second processor is configured to:receive, from the client device, the data representative of the at least one object of interest in given 3D scene;determine, for the at least one object of interest, light information associated therewith, the light information being indicative of light interaction with a surface of the at least one object of interest in the given 3D scene; andtransmit, via the communication network, the light information associated with the at least one object of interest to the client device; andthe first processor of the client device being further configured to:receive, from the cloud server, the light information associated with the at least one object of interest; andrender, on the screen of the client device, an image of the given 3D scene, by:in response to a given pixel of the image being representative of the at least one object of interest in the given 3D scene, shading the given pixel in accordance with the light information.2.The system of claim 1, wherein the predetermined rule for identifying the at least one object of interest comprises identifying, in the plurality of objects, an object as being an object of interest if a respective frequency of a rendering update thereof, during a predetermined monitoring period, in the given 3D scene is less than a predetermined frequency threshold.3.The system of claim 2, wherein:the respective frequency of the rendering update of each one of the plurality of objects has been predetermined; andprior to identifying the at least one object of interest, the first processor is further configured to receive data of the respective frequency of the rendering update of each one of the plurality of objects.4.The system of claim 2, wherein:the given 3D scene is one of a sequence of 3D scenes; andprior to identifying the at least one object of interest, the first processor is further configured to:determine the respective frequency of the rendering update for each one of the plurality of objects in the given 3D scene by monitoring at least a portion of 3D scenes in the sequence of 3D scenes prior to the given 3D scene during the predetermined monitoring period; andin response to the respective frequency of the rendering update of a given object of the plurality of objects being less than the predetermined frequency threshold, identify the given object as being the at least one object of interest.5.The system of claim 1, wherein:prior to determining the light information, the second processor is configured to:organize the at least one object of interest within the given 3D scene into groups, such that:a given group of objects includes those of the at least one object of interest that are located therein within a predetermined threshold distance;generate, for the given group of objects, a respective plurality of 2D layouts,a given 2D layout of the respective plurality of 2D layouts including respective surface regions of the given group of objects having a respective reflectance value; anddetermine, for the given 2D layout of the respective plurality of 2D layouts, based on the respective reflectance value, a respective light texture map for the given group of objects,the respective light texture map including Red Green Blue (RGB) values indicative of light intensity values of the respective surface regions of the given group of objects;aggregate respective light texture maps over each respective plurality of 2D layouts associated with each group of objects of the at least one object of interest in the given 3D scene, thereby generating an aggregate light texture map associated with the at least one object of interest; anddetermine the light information associated with the at least one objects of interest as being the aggregate light texture map; andto shade the given pixel according to the light information, the first processor is configured to apply to the given pixel a respective light intensity value from the aggregate light texture map, the respective light intensity value corresponding to the respective surface region of the at least one object of interest.6.The system of claim 5, wherein the first processor is configured to transmit the data representative of the at least one object of interest to the cloud server in response to determining that the at least one object of interest has never been transmitted to the cloud server for determining the light information thereof.7.The system of claim 5, wherein the first processor is configured to transmit the data representative of the at least one object of interest to the cloud server in response to an instance of a rendering update of the at least one object of interest during a predetermined monitoring period in the given 3D scene.8.The system of claim 7, wherein the rendering update comprises an update of a geometry of the at least one object of interest.9.The system of claim 8, wherein:the rendering update comprises an update in at least one of: (i) a location of a light source in the given 3D scene relative to the at least one object of interest and (ii) a color of the at least one object of interest;the second processor has previously determined prior light information for the at least one object of interest; andinstead of transmitting the data representative of the at least one object of interest, the first processor is configured to cause the second processor of the cloud server to re-determine the light information for the at least one object of interest.10.The system of claim 1, wherein:prior to transmitting the light information to the client device, the second processor of the cloud server is further configured to: (i) post-process the light information and (ii) compress the light information; andprior to rendering the image of the given 3D scene, the first processor of the client device is further configured to decompress the light information.11.The system of claim 10, wherein the second processor is configured to post-process the light information by applying to the light information at least one of: denoising and super-sampling.12.A client device for rendering a 3D scene on a screen thereof, the client device comprising a processor and a non-transitory computer-readable medium storing instructions; and the processor, upon executing the instructions, being configured to:in response to a rendering request to render a given 3D scene of a sequence of 3D scenes on the screen, the given 3D scene including a plurality of objects:monitor at least a portion of 3D scenes in the sequence of 3D scenes prior to the given 3D scene, during a predetermined monitoring period, to identify at least one object of interest in the given 3D scene, a respective frequency of a rendering update of which is less than a predetermined frequency threshold in the predetermined monitoring period; andin response to identifying the at least one object of interest in the given 3D scene, transmit data representative thereof to a cloud server, communicatively coupled to the client device, thereby causing the cloud server to determine light information associated with the at least one object of interest in the given 3D scene,the light information being indicative of light interaction with a surface of the at least one object of interest in the given 3D scene; andreceive, from the cloud server, the light information for the at least one object of interest; andrender, on the screen of the client device, an image of the given 3D scene, by:in response to a given pixel of the image being representative of the at least one object of interest in the given 3D scene, shading the given pixel according to the light information.13.The client device of claim 12, wherein the processor is configured to transmit the data representative of the at least one object of interest to the cloud server in response to determining that the at least one object of interest has never been transmitted to the cloud server for determining the light information thereof.14.The client device of claim 12, wherein the processor is configured to transmit the data representative of the at least one object of interest to the cloud server in response to an instance of the rendering update of the at least one object of interest during the predetermined monitoring period in the given 3D scene.15.The client device of claim 12, wherein the rendering update comprises an update of a geometry of the at least one object of interest.16.The client device of claim 15, wherein:the rendering update comprises an update of at least one of: (i) a location of a light source in the given 3D scene relative to the at least one object of interest and (ii) a color of the at least one object of interest;the cloud server has previously determined prior light information for the at least one object of interest; andinstead of transmitting the data representative of the at least one object of interest, the processor is configured to cause the cloud server to re-determine the light information for the at least one object of interest.17.The client device of claim 12, wherein:the light information determined by the cloud server comprises a light texture map including Red Green Blue (RGB) values indicative of light intensity values of respective surface regions of the at least one object of interest; andto shade the given pixel according to the light information, the processor is configured to apply to the given pixel a respective light intensity value from the light texture map corresponding to the respective surface region of the at least one object of interest.18.A cloud server for rendering a 3D scene on a screen of a client device communicatively coupled to the cloud server, the cloud server comprising a processor and a non-transitory computer-readable medium storing instructions, upon executing which, the processor is configured to:receive, from the client device, data representative of at least one object in a given 3D scene to be rendered on a screen of the client device,organize the at least one object within the given 3D scene into groups, such that:a given group of objects includes those of the at least one object that are located therein within a predetermined threshold distance;generate, for the given group of objects, a respective plurality of 2D layouts,a given 2D layout of the respective plurality of 2D layouts including respective surface regions of the given group of objects having a respective reflectance value; anddetermine, for the given 2D layout of the respective plurality of 2D layouts, based on the respective reflectance value, a respective light texture map for the given group of objects,the respective light texture map including Red Green Blue (RGB) values indicative of light intensity values of the respective surface regions of the given group of objects;aggregate respective light texture maps over each respective plurality of 2D layouts associated with each group of objects of the at least one object in the given 3D scene, thereby generating an aggregate light texture map associated with the at least one object; andtransmit, via the communication network, the aggregate light texture map to the client device for further using the aggregate light texture map in rendering an image of the given 3D scene on the screen of the client device.19.The cloud server of claim 18, wherein:prior to transmitting the aggregate light texture map to the client device, the processor is further configured to: (i) post-process the aggregate light texture map and (ii) compress the aggregate light texture map.20.The cloud server of claim 19, wherein the processor is configured to post-process the aggregate light texture map by applying thereto at least one of: denoising and super-sampling.21.A method of rendering a 3D scene on a screen of a client device, the method being implemented by a system comprising a cloud server communicatively coupled to the client device over a communication network, the method comprising:in response to a rendering request to the client device to render a given 3D scene, the given 3D scene including a plurality of objects:identifying, by the client device, based on a predetermined rule, at least one object of interest in the given 3D scene;in response to identifying the at least one object of interest in the given 3D scene, transmitting, by the client device, via the communication network, data representative of the at least one object of interest to the cloud server;receiving, by the cloud server, from the client device, the data representative of the at least one object of interest in given 3D scene;determining, by the cloud server, for the at least one object of interest, light information associated therewith, the light information being indicative of light interaction with a surface of the at least one object of interest in the given 3D scene;transmitting, by the cloud server, via the communication network, the light information associated with the at least one object of interest to the client device;receiving, by the client device, from the cloud server, the light information associated with the at least one object of interest; andrendering, by the client device, on the screen thereof, an image of the given 3D scene, by:in response to a given pixel of the image being representative of the at least one object of interest in the given 3D scene, shading the given pixel in accordance with the light information.

Citation Information

Patent Citations

  • Online game system and method based on server real-time rendering

    CN104796393A

  • A rendering method and device

    CN109448089A

  • Game scene generation system and method based on CG real-time rendering

    CN110244988A

  • Cloud game service method, device and equipment and storage medium

    CN111084983A

  • Cloud rendering method and device and computer readable storage medium

    CN113727142A