Picture rendering method and device and storage medium
By dividing the rendering pipeline into rendering parts with dependencies below a threshold and utilizing multiple rendering devices for parallel rendering, the problem of low rendering quality in existing technologies is solved, achieving efficient and high-quality image rendering.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-09-30
- Publication Date
- 2026-03-31
AI Technical Summary
Existing image rendering methods result in low rendering quality, especially when there are dependencies between frames, pixels, and object models. This makes it impossible to effectively utilize multiple GPUs for parallel rendering, leading to poor image quality.
By acquiring the rendering pipeline of the scene data to be rendered, the dependencies are determined and divided into multiple rendering parts, so that the dependency strength between the parts is lower than the strength threshold. These parts are rendered in parallel using multiple rendering devices, and rendering efficiency and quality are improved by using frame-by-frame, screen-by-screen, scene-by-scene, or sub-process grouping rendering methods.
It enables efficient parallel rendering across multiple rendering devices, improving the quality and efficiency of rendered images, ensuring that the dependencies between each rendering part are below a threshold, and avoiding rendering quality degradation caused by dependencies.
Smart Images

Figure CN121767523A_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of communications, and in particular to a method, apparatus and storage medium for rendering images. Background Technology
[0002] Image rendering refers to the process of using computer calculations to output a realistic image that simulates real-world models and lighting conditions based on scene data. Scene data includes object models and / or lighting data, meaning that when displaying an image, the scene data needs to be rendered to obtain a displayable image, which is then displayed using a display device.
[0003] To improve image rendering efficiency, related technologies can employ various methods. One approach is frame-by-frame rendering, where multiple frames of scene data are allocated to multiple graphics processing units (GPUs), with each GPU rendering different frames to obtain a single image. Another approach is screen-by-screen rendering, where a single frame of scene data is divided into multiple image blocks, which are then allocated to multiple GPUs, each rendering a different block to obtain a single image. Finally, a scene-by-scene rendering approach can be used, where multiple object models within a single frame of scene data are allocated to multiple GPUs, each rendering a different object model to obtain a single image.
[0004] The relevant technologies offer three rendering methods for images, but each method has its drawbacks, resulting in low-quality images when rendering certain scene data. Summary of the Invention
[0005] This application provides a method, apparatus, and storage medium for rendering images to improve the quality of rendered images. The technical solution is as follows:
[0006] Firstly, this application provides a method for rendering an image, applied to a cloud service platform. In this method, at least one frame of scene data corresponding to at least one frame of an image to be rendered is obtained; at least one image rendering method is determined based on the rendering pipeline of the at least one frame of scene data, the rendering pipeline describing the rendering process of the at least one frame of scene data; based on the at least one image rendering method, the at least one frame of scene data is divided into multiple rendering parts, the dependency strength between the multiple rendering parts being lower than a strength threshold; the multiple rendering parts are rendered using multiple rendering devices to obtain the at least one frame of image.
[0007] A rendering pipeline describes the rendering process for at least one frame of scene data. Since at least one image rendering method is derived from the rendering pipeline of the at least one frame of scene data to be rendered, this method divides the at least one frame of scene data into multiple rendering parts. The dependency strength between these rendering parts is below a certain threshold. Multiple rendering devices then render these multiple rendering parts to obtain the at least one frame of image. Because the dependency strength between the multiple rendering parts is below the threshold, each rendering device can render its own part without needing the rendering results of other parts. This allows multiple rendering devices to render multiple parts in parallel, improving the quality of the resulting at least one frame of image.
[0008] In one possible implementation, a rendering pipeline is determined based on at least one frame of scene data. Dependencies existing in the at least one frame of scene data are determined based on the rendering pipeline. These dependencies include one or more of the following: inter-frame dependencies between at least one frame of scene data, pixel dependencies between multiple pixels included in the at least one frame of scene data, or object dependencies between multiple object models included in the at least one frame of scene data. At least one image rendering method is determined based on these dependencies. This at least one image rendering method includes image rendering methods other than those corresponding to the dependencies. Thus, when the at least one frame of scene data is partitioned using at least one image rendering method, multiple rendering portions with dependency strengths below a certain threshold can be obtained.
[0009] In another possible implementation, the rendering process includes multiple sub-processes, each of which is used to render different image features of at least one frame of scene data. At least one image rendering method includes one or more of the following: frame-by-frame rendering method, screen-by-screen rendering method, scene-by-scene rendering method, or sub-process grouping rendering method, which is used to group multiple sub-processes.
[0010] In another possible implementation, the image rendering method corresponding to the dependency relationship includes one or more of the following: frame-by-frame rendering method corresponding to inter-frame dependency relationship, screen-by-screen rendering method corresponding to pixel dependency relationship, or scene-by-scene rendering method corresponding to object dependency relationship.
[0011] In another possible implementation, target information is obtained, which includes one or more of the following: information to be rendered included in at least one frame of scene data, or state information of multiple rendering devices. At least one candidate image rendering method is determined based on dependencies, including image rendering methods other than those corresponding to the dependencies. Based on the target information, at least one image rendering method is selected from the at least one candidate image rendering method. Thus, when dividing at least one frame of scene data using at least one image rendering method, multiple rendering parts with dependency strength below a strength threshold can be obtained.
[0012] In another possible implementation, based on the target information, detailed information on the partitioning of at least one image rendering method is obtained. Based on the detailed partitioning information and the at least one image rendering method, at least one frame of scene data is divided into multiple rendering parts. This makes the multiple rendering parts more suitable for rendering on multiple rendering devices.
[0013] In another possible implementation, at least one image rendering method is received from the user's terminal device; or, at least one image rendering method is received from a third-party service device, wherein the at least one image rendering method is obtained by the third-party service device based on the rendering pipeline. This improves the flexibility of obtaining image rendering methods.
[0014] In another possible implementation, the rendering process includes multiple sub-processes, and at least one image rendering method includes a sub-process grouping rendering method. Based on the sub-process grouping rendering method, multiple sub-processes are divided into multiple groups, each group including at least one sub-process, and the dependency strength between the multiple groups is below a strength threshold. Based on the multiple groups, at least one frame of scene data is divided into multiple rendering parts. The sub-process grouping rendering method can divide the image into multiple rendering parts with a dependency strength below the strength threshold; that is, the sub-process grouping rendering method can be selected to render the image in any situation to ensure the quality of the rendered image.
[0015] In another possible implementation, the dependency strength between at least one subprocess is not less than a strength threshold. This groups image features with high dependency strength into a single rendering part, resulting in low dependency strength between different rendering parts and improving the quality of the rendered image.
[0016] In another possible implementation, based on the computational complexity of multiple rendering parts and the state information of multiple rendering devices, at least one rendering part is allocated to each rendering device. Using each rendering device, at least one rendering part of each device is rendered to obtain at least one frame. This allows for the allocation of appropriate rendering parts to each rendering device based on state information, and by rendering multiple rendering parts in parallel using multiple rendering devices, the efficiency of rendering multiple rendering parts can be improved.
[0017] Secondly, this application provides an apparatus for rendering an image, used to perform the method in the first aspect or any possible implementation thereof. Specifically, the apparatus includes units for performing the method in the first aspect or any possible implementation thereof.
[0018] Thirdly, this application provides a computing device cluster, the computing device cluster including at least one computing device, each computing device including a processor and a memory;
[0019] The processor of the at least one computing device is configured to execute instructions stored in the memory of the at least one computing device to cause the cluster of computing devices to perform the method of the first aspect or any possible implementation thereof.
[0020] Fourthly, this application provides a computer program product containing instructions that, when executed by a cluster of computing devices, cause the cluster of computing devices to perform the method of the first aspect or any possible implementation thereof.
[0021] Fifthly, this application provides a computer-readable storage medium including computer program instructions that, when executed by a cluster of computing devices, perform the method of the first aspect or any possible implementation thereof.
[0022] In a sixth aspect, this application provides a chip including a memory and a processor, wherein the memory is used to store computer instructions, and the processor is used to call and execute the computer instructions from the memory to perform the method in the first aspect or any possible implementation thereof. Attached Figure Description
[0023] Figure 1 This is a schematic diagram of the structure of a cloud service platform provided in an embodiment of this application;
[0024] Figure 2 This is a schematic diagram of a network architecture provided in an embodiment of this application;
[0025] Figure 3This is a schematic diagram of another network architecture provided in an embodiment of this application;
[0026] Figure 4 This is a schematic diagram of another network architecture provided in an embodiment of this application;
[0027] Figure 5 This is a flowchart of a method for rendering an image provided in an embodiment of this application;
[0028] Figure 6 This is a schematic diagram of another network architecture provided in an embodiment of this application;
[0029] Figure 7 This is a schematic diagram of a device structure for rendering images provided in an embodiment of this application;
[0030] Figure 8 This is a schematic diagram of the structure of a computing device provided in an embodiment of this application;
[0031] Figure 9 This is a schematic diagram of a cluster structure for rendering images provided in an embodiment of this application;
[0032] Figure 10 This is a schematic diagram of another cluster structure for rendering images provided in an embodiment of this application. Detailed Implementation
[0033] Scene data for an image can include object models and / or lighting data, and can be 3D scene data. To obtain a displayable image, the scene data can be rendered to obtain the image, which is then displayed. For the scene data of at least one frame of an image to be rendered, i.e., for at least one frame of scene data, based on the image rendering method, this at least one frame of scene data can be divided into multiple rendering parts, and then multiple rendering devices can be used to render these multiple rendering parts to obtain the at least one frame of image.
[0034] In some embodiments, the number of at least one frame of scene data is multiple, and the image rendering method can be a frame-by-frame rendering method. Based on the frame-by-frame rendering method, multiple frames of scene data can be divided into multiple groups, and each group of scene data includes one or more frames of scene data. These multiple groups of scene data are the multiple rendering parts. For multiple rendering devices, a set of scene data is allocated to each rendering device, and each rendering device is used to render the set of scene data of each rendering device to obtain multiple frames of images.
[0035] There may or may not be inter-frame dependencies between multi-frame scene data. An inter-frame dependency means that there is a dependency between any two consecutive frames of scene data, and rendering the later frame may require the rendering result of the previous frame.
[0036] When there are inter-frame dependencies between multiple frames of scene data, if a frame-by-frame rendering method is used to render this multi-frame scene data, the scene data of two consecutive frames may be assigned to two different rendering devices. Rendering the two frames of scene data in parallel on two different rendering devices can result in a lower quality image when rendering the later frame, as the rendering result of the previous frame may not be available.
[0037] For example, multi-frame scene data includes first scene data and second scene data, where the first scene data is the scene data of the frame preceding the second scene data. During rendering, the first scene data can be rendered first to obtain the rendering result, and then the second scene data can be rendered based on the rendering result. Therefore, there is an inter-frame dependency between the first scene data and the second scene data.
[0038] If a frame-by-frame rendering method is used to render the first scene data and the second scene data, the first scene data is assigned to the first rendering device, and the second scene data is assigned to the second rendering device. The first rendering device renders the first scene data, while the second rendering device renders the second scene data. Because the second rendering device does not yet have the rendering result of the first scene data when it renders the second scene data, the quality of the second image obtained from rendering the second scene data is low, and the image effect of the second image is poor.
[0039] In some embodiments, the image rendering method can be a screen-block rendering method. Based on the screen-block rendering method, a frame of scene data can be divided into multiple image blocks, which are multiple rendering parts. For multiple rendering devices, an image block is allocated to each rendering device, and each rendering device renders the image block of each rendering device to obtain a frame of image.
[0040] The scene data in this frame may or may not contain pixel dependencies. A pixel dependency means that two adjacent pixels in a frame of scene data depend on each other; rendering one pixel may require the rendering result of the other pixel. For example, if a frame of scene data includes a first pixel and a second pixel, and the first pixel is adjacent to the second pixel, during rendering, the first pixel can be rendered first to obtain the rendering result, and then the second pixel can be rendered based on the rendering result. Therefore, there is a pixel dependency between the first pixel and the second pixel.
[0041] When there are pixel dependencies among multiple pixels in a scene data frame, if a screen-tiled rendering method is used to render a scene data frame, the scene data frame is divided into multiple image blocks. These image blocks are assigned to multiple rendering devices, which then render the image blocks in parallel to obtain a single frame. Because there are pixel dependencies between adjacent pixels in the scene data frame, when the scene data frame is divided into multiple image blocks, the edge pixels of one image block are adjacent to the edge pixels of another image block. This results in each rendering device being unable to obtain the rendering results of the neighboring pixels adjacent to the edge pixels when rendering the edge pixels of an image block, leading to lower image quality and a poor visual effect.
[0042] In some embodiments, the image rendering method can be a scene-block rendering method. A frame of scene data may include multiple object models, optionally, these multiple object models can be three-dimensional object models. Based on the scene-block rendering method, the frame of scene data can be divided into multiple object models, which are multiple rendering parts. For multiple rendering devices, at least one object model is assigned to each rendering device. Using each rendering device, the object model of each rendering device is rendered separately to obtain a frame of image.
[0043] The object models included in this frame of scene data may or may not have object dependencies. An object dependency means that multiple object models in a frame of scene data depend on each other; rendering one object model may require the rendering result of another object model. For example, if a frame of scene data includes a first object model and a second object model, during rendering, the first object model might be rendered first to obtain the rendering result, and then the second object model might be rendered based on that result. Therefore, there is an object dependency between the first and second object models.
[0044] When there are object dependencies among the object models included in a scene frame, if scene chunking rendering is used to render a frame of scene data, the scene frame is divided into multiple object models, which are then assigned to multiple rendering devices. These devices then render the multiple object models in parallel to obtain a single image frame. Because there are object dependencies among the multiple object models in this scene frame, if two object modules with object dependencies are rendered in parallel using two rendering devices, one rendering device cannot obtain the rendering result of the other device rendering the other object model. This results in a lower quality image of the rendered scene frame, leading to a poor visual effect.
[0045] In some embodiments, to improve the quality of the rendered image, see [reference needed]. Figure 1 This application provides a cloud service platform 100, which includes a rendering queue 101 and multiple rendering devices 102. The rendering queue 101 is used to store at least one frame of scene data to be rendered, wherein the at least one frame of scene data is scene data of at least one image.
[0046] The cloud service platform 100 obtains a rendering pipeline based on at least one frame of scene data stored in the rendering queue 101. The rendering pipeline describes the rendering process of rendering at least one frame of scene data. Based on the rendering pipeline, the platform determines the dependencies existing in the at least one frame of scene data. These dependencies include one or more of the following relationships: inter-frame dependencies between at least one frame of scene data, pixel dependencies between multiple pixels included in at least one frame of scene data, or object dependencies between multiple object models included in at least one frame of scene data.
[0047] The cloud service platform 100 determines at least one candidate image rendering method based on this dependency relationship. This candidate image rendering method does not include the image rendering method corresponding to this dependency relationship. At least one image rendering method is selected from the at least one candidate image rendering method. Based on this at least one image rendering method, at least one frame of scene data is divided into multiple rendering parts.
[0048] Since at least one image rendering method does not include the image rendering method corresponding to the dependency relationship, the dependency strength between the multiple rendering parts obtained is lower than the strength threshold. In this way, the cloud service platform 100 renders the multiple rendering parts in parallel through multiple rendering devices 102, which not only improves rendering efficiency, but also obtains at least one frame of image with high image quality, thereby improving the quality of the rendered image.
[0049] The rendering process comprises multiple sub-processes, each used to render different image features of at least one frame of scene data. For example, the rendering process for a frame of scene data including a person image might include the following sub-processes: the first sub-process renders the depth of the scene data in that frame; the second sub-process calculates the skinning of the scene data in that frame (such as the skin or clothing of the person image); the third sub-process calculates the shading and lighting of the scene data in that frame; and the fourth sub-process renders the image effects in the scene data in that frame (such as adding a fog effect to the image).
[0050] In some embodiments, a new image rendering method can be configured in the cloud service platform 100. The new image rendering method is a sub-process grouping rendering method. The sub-process grouping rendering method is used to group multiple sub-processes included in the rendering process to obtain multiple groups. Each group includes at least one sub-process, and the dependency strength between multiple groups is lower than a strength threshold.
[0051] The rendering process may or may not have dependencies between its multiple sub-processes. When dependencies exist, some sub-processes have stronger dependencies than others. Optionally, for each group, the dependency strength between at least one sub-process within that group may be no less than a strength threshold, ensuring strong dependencies between the image features to be rendered by each sub-process within that group. This allows a single rendering device to render the image features of each sub-process, thereby improving the quality of the rendered image.
[0052] For each frame of scene data, and for the rendering process used to render that frame of scene data, the cloud service platform 100 divides the multiple sub-processes included in the rendering process into multiple groups based on a sub-process grouping rendering method. Then, the frame of scene data can be divided into multiple rendering parts based on these multiple groups, with each rendering part corresponding one-to-one with one of the multiple groups.
[0053] For each group, the group includes at least one sub-process, each sub-process is used to process a portion of the image features in the scene data of that frame, and the rendering part corresponding to the group includes the image features that each sub-process needs to render. That is, a rendering part includes image features with high dependency intensity, while the dependency intensity between multiple rendering parts is low, below the intensity threshold.
[0054] For example, assuming the rendering process for this frame of scene data includes the first, second, third, and fourth sub-processes listed above, the cloud service platform 100, based on a sub-process grouping rendering method, divides the four sub-processes into a first group and a second group. The first group includes the first and second sub-processes, and the second group includes the third and fourth sub-processes. Based on the first and second groups, the frame of scene data is divided into a first rendering part and a second rendering part. The first rendering part includes the depth to be rendered by the first sub-process and the skinning to be calculated by the second sub-process; the second rendering part includes the shading and lighting to be calculated by the third sub-process and the image effects to be rendered by the fourth sub-process.
[0055] Because the sub-process grouping rendering method is configured, the cloud service platform 100 determines at least one candidate image rendering method, including one or more of the following: frame-by-frame rendering method, screen-by-screen block rendering method, scene-by-scene block rendering method, or sub-process grouping rendering method, etc.
[0056] In some embodiments, the image rendering method corresponding to the above-described dependency relationship includes:
[0057] The image rendering method corresponding to inter-frame dependency is frame-by-frame rendering, the image rendering method corresponding to pixel dependency is screen-by-screen rendering, and / or, the image rendering method corresponding to object dependency is scene-by-scene rendering.
[0058] In some embodiments, the plurality of rendering devices 102 may include one or more of the following: graphics processing unit (GPU) or heterogeneous hardware devices. Optionally, the heterogeneous hardware devices may include one or more of the following: field programmable gate array (FPGA), central processing unit (CPU), neural network processing unit (NPU), or tensor processing unit (TPU).
[0059] In some embodiments, to improve the quality of the rendered image, see [reference needed]. Figure 2 This application provides a network architecture 200, which includes a cloud service platform 201 and a target device 202, the target device 202 being able to communicate with the cloud service platform 201. The cloud service platform 201 includes a rendering queue 2011 and multiple rendering devices 2012. The rendering queue 2011 is used to store at least one frame of scene data to be rendered, the at least one frame of scene data being the scene data of at least one image.
[0060] The target device 202 can obtain at least one image rendering method, which is obtained based on the rendering pipeline of at least one frame of scene data to be rendered, and send the at least one image rendering method to the cloud service platform 201.
[0061] The cloud service platform 201 can receive at least one image rendering method. Based on the at least one image rendering method, it divides at least one frame of scene data stored in the rendering queue 2011 into multiple rendering parts, where the dependency strength between the multiple rendering parts is lower than a strength threshold. Multiple rendering devices 2012 render the multiple rendering parts in parallel, thus not only improving rendering efficiency but also obtaining at least one frame of image with higher quality, thereby improving the quality of the rendered image.
[0062] In some embodiments, at least one frame of scene data stored in the rendering queue 2011 of the cloud service platform 201 may be sent by the target device 202. That is, the cloud service platform 201 can receive at least one frame of scene data sent by the target device 202 and store the at least one frame of scene data in the rendering queue 2011.
[0063] In some embodiments, at least one candidate image rendering method includes one or more of the following: frame-by-frame rendering, screen-by-screen rendering, scene-by-scene rendering, or sub-process grouping rendering, etc.
[0064] In some embodiments, see Figure 3 The target device 202 can be a user's terminal device. The terminal device can acquire at least one frame of scene data, obtain the rendering pipeline based on the at least one frame of scene data, and display the rendering pipeline to the user.
[0065] Based on the rendering pipeline, the user can determine the dependencies existing in at least one frame of scene data, and configure at least one image rendering method in the terminal device. The at least one image rendering method does not include the image rendering method corresponding to the dependency.
[0066] The terminal device can obtain at least one image rendering method configured by the user and send the at least one frame of scene data and the at least one image rendering method to the cloud service platform 201.
[0067] The cloud service platform 201 receives the at least one frame of scene data and the at least one image rendering method, and caches the at least one frame of scene data in a rendering queue 2011. Based on the at least one image rendering method, the at least one frame of scene data stored in the rendering queue 2011 is divided into multiple rendering parts, and the dependency strength between the multiple rendering parts is lower than a strength threshold. The multiple rendering parts are rendered in parallel by multiple rendering devices 2012 to obtain at least one frame of image with high image quality.
[0068] In some embodiments, see Figure 4 The target device 202 can be a third-party service device. This third-party service device can acquire at least one frame of scene data and obtain a rendering pipeline based on this frame. Dependencies existing in the at least one frame of scene data are determined based on the rendering pipeline. At least one candidate image rendering method is determined based on this dependency, where the at least one candidate image rendering method does not include the image rendering method corresponding to the dependency. At least one image rendering method is selected from the at least one candidate image rendering method, and the at least one frame of scene data and the at least one image rendering method are sent to the cloud service platform 201.
[0069] The cloud service platform 201 receives the at least one frame of scene data and the at least one image rendering method, and caches the at least one frame of scene data in a rendering queue 2011. Based on the at least one image rendering method, the at least one frame of scene data stored in the rendering queue 2011 is divided into multiple rendering parts, and the dependency strength between the multiple rendering parts is lower than a strength threshold. Multiple rendering devices 2012 render the multiple rendering parts to obtain at least one frame of image with high image quality.
[0070] Alternatively, the third-party service equipment and cloud service platform 201 belong to different companies or organizations.
[0071] Alternatively, the third-party service device may also be a cloud service platform, but this cloud service platform is different from the cloud service platform 201 mentioned above, as the two belong to different enterprises or organizations.
[0072] See Figure 5 This application provides a method 500 for rendering images, which can be applied to... Figure 1 The cloud service platform 100 shown, or, can be applied to Figure 2 , Figure 3 or Figure 4 The cloud service platform 201 in the network architecture 200 shown. The method 500 includes the following process.
[0073] Step 501: The cloud service platform obtains at least one image rendering method. The at least one image rendering method is obtained based on the rendering pipeline of at least one frame of scene data to be rendered. The rendering pipeline is used to describe the rendering process of rendering at least one frame of scene data.
[0074] In step 501, the cloud service platform can obtain at least one image rendering method through the following three methods.
[0075] Method 1: The cloud service platform acquires at least one frame of scene data, and based on this at least one frame of scene data, the cloud service platform obtains at least one image rendering method.
[0076] Optionally, the cloud service platform may have at least one frame of scene data stored locally, and the cloud service platform may retrieve this locally stored frame of scene data. Alternatively, the cloud service platform may receive at least one frame of scene data to be rendered.
[0077] See Figure 6 The cloud service platform includes microservices, which are services for obtaining image rendering methods. Through microservices, at least one image rendering method is obtained based on at least one frame of scene data.
[0078] Optionally, during implementation, at least one image rendering method can be obtained through the following operations 5011 to 5014.
[0079] 5011: Determine the rendering pipeline based on at least one frame of scene data.
[0080] The cloud service platform includes a rendering queue, which stores at least one frame of scene data. The cloud service platform can retrieve at least one frame of scene data from the rendering queue and, based on this at least one frame of scene data, obtain the rendering pipeline.
[0081] Optionally, the rendering pipeline is the rendering process that renders at least one frame of scene data.
[0082] 5012: Determine dependencies existing in at least one frame of scene data based on the rendering pipeline. These dependencies include one or more of the following relationships: inter-frame dependencies between at least one frame of scene data, pixel dependencies between multiple pixels included in at least one frame of scene data, or object dependencies between multiple object models included in at least one frame of scene data.
[0083] 5013: Based on the dependency relationship, at least one candidate image rendering method is determined, and the at least one candidate image rendering method includes image rendering methods other than the image rendering method corresponding to the dependency relationship.
[0084] The image rendering methods corresponding to the so-called dependency relationship include one or more of the following:
[0085] The image rendering method corresponding to inter-frame dependency is frame-by-frame rendering, the image rendering method corresponding to pixel dependency is screen-by-screen rendering, and / or, the image rendering method corresponding to object dependency is scene-by-scene rendering.
[0086] In some embodiments, the dependency relationship includes inter-frame dependency relationships, and the at least one candidate image rendering method does not include the frame-by-frame rendering method corresponding to the inter-frame dependency relationship. Wherein, inter-frame dependency relationships exist between multiple frames of scene data, meaning that each frame of scene data within the multi-frame scene data is dependent on the others. If a frame-by-frame rendering method is used, where consecutive frames of scene data are assigned to two different rendering devices and rendered in parallel by these two different devices, then when rendering the subsequent frame of scene data, the rendering result may be poor-quality because the rendering result of the previous frame of scene data is not available. To improve the quality of the rendered image, it is necessary to ensure that the selected at least one image rendering method does not include the frame-by-frame rendering method.
[0087] In some embodiments, the dependency relationship includes pixel dependency relationships, and the at least one candidate image rendering method does not include the screen tile rendering method corresponding to the pixel dependency relationship. Here, a pixel dependency relationship exists between multiple pixels in the scene data, indicating that there is a dependency between two adjacent pixels in the scene data, and rendering one pixel may require the rendering result of another pixel. If a screen tile rendering method is used to render a frame of scene data, the frame of scene data is divided into multiple image blocks. These multiple image blocks are assigned to multiple rendering devices, which render the multiple image blocks in parallel to obtain a frame of image. Because there is a pixel dependency relationship between two adjacent pixels in the frame of scene data, when the frame of scene data is divided into multiple image blocks, the edge pixels of one image block are adjacent to the edge pixels of another image block. This results in each rendering device being unable to obtain the rendering result of the neighboring pixels adjacent to the edge pixels when rendering the edge pixels of an image block, leading to low quality and poor image effect of the rendered frame of scene data. To improve the quality of the rendered image, it is necessary to ensure that the selected at least one image rendering method does not include the screen tile rendering method.
[0088] In some embodiments, the dependency relationship includes object dependency relationships, and the at least one candidate image rendering method does not include scene chunking rendering methods corresponding to object dependencies. Here, the scene data includes multiple object models that have object dependencies, meaning that multiple object models in a frame of scene data are dependent on each other; rendering one object model may require the rendering result of another object model. If scene chunking rendering is used to render a frame of scene data, the frame of scene data is divided into multiple object models, and these multiple object models are assigned to multiple rendering devices, which then render the multiple object models in parallel to obtain a single image frame. Because there are object dependencies between the multiple object models in this frame of scene data, for two object modules with object dependencies, two rendering devices are used to render the two object models in parallel. When one rendering device is rendering an object model, it cannot obtain the rendering result of the other rendering device rendering the other object model, resulting in low-quality images and poor image effects. To improve the quality of the rendered images, it is necessary to ensure that the selected at least one image rendering method does not include scene chunking rendering methods.
[0089] 5014: Select at least one image rendering method from the at least one candidate image rendering method.
[0090] In some embodiments, the cloud service platform may select some or all of the at least one candidate image rendering method to obtain at least one image rendering method.
[0091] In some embodiments, the cloud service platform may acquire target information, which includes one or more of the following: information to be rendered included in at least one frame of scene data, or status information of multiple rendering devices. Based on the target information, at least one image rendering method is selected from at least one candidate image rendering method.
[0092] Optionally, the information to be rendered included in the at least one frame of scene data may include one or more of the following:
[0093] The at least one frame of scene data includes the number of pixels in each frame, the computational complexity of the object models in each frame, the number of object models in each frame, the number of faces in each frame, the resolution of each frame, the number of sub-processes that can be executed in parallel in the rendering process for rendering the at least one frame, or the computational complexity of each sub-process in the rendering process. The number of pixels in each frame may be equal, and the resolution of each frame may be equal.
[0094] For each frame of scene data, which includes at least one object model, an image of at least one object can be obtained by rendering the at least one object model.
[0095] For each object model included in the scene data of this frame, the object model is composed of multiple facets, which are triangular faces or quadrilateral faces, etc.
[0096] Optionally, the operation of selecting at least one image rendering method from at least one candidate image rendering method based on the target information can be as follows:
[0097] At least one candidate image rendering method includes a screen-block rendering method. For each frame of scene data, if the number of pixels in the frame exceeds a pixel count threshold, and / or the resolution of the frame exceeds a resolution threshold, then a screen-block rendering method can be selected from the at least one candidate image rendering method. In other words, the at least one image rendering method includes a screen-block rendering method.
[0098] At least one candidate image rendering method includes scene-block rendering. If the number of object models included in the at least one frame of scene data exceeds a first threshold and / or the number of faces exceeds a second threshold, then scene-block rendering can be selected from the at least one candidate image rendering method. In other words, the at least one image rendering method includes scene-block rendering.
[0099] At least one candidate image rendering method includes a sub-process grouping rendering method. If the rendering process includes a large number of sub-process groups that can be executed in parallel, the sub-process grouping rendering method is selected from the at least one candidate image rendering method. In other words, the at least one image rendering method includes a sub-process grouping rendering method. This means that the multiple sub-processes included in the rendering process can be divided into multiple groups, and the sub-processes included in these multiple groups can be executed in parallel.
[0100] Optionally, at least one candidate image rendering method includes a frame-based rendering method. If there is no inter-frame dependency between the at least one frame of scene data, then a frame-based rendering method can be selected from the at least one candidate image rendering method. In other words, the at least one image rendering method includes a frame-based rendering method.
[0101] Optionally, the status information of the plurality of rendering devices may include one or more of the following: the number of tasks being executed by each of the plurality of rendering devices, the remaining video memory size of each rendering device, or the remaining computing resources of each rendering device, etc.
[0102] Optionally, the operation of selecting at least one image rendering method from at least one candidate image rendering method based on the target information can be as follows:
[0103] At least one candidate image rendering method includes a sub-process grouping rendering method. If the remaining video memory size of each rendering device exceeds a size threshold, and / or the remaining computing resources of each rendering device exceed a quantity threshold, then the sub-process grouping rendering method can be selected from the at least one candidate image rendering method. In other words, the at least one image rendering method includes a sub-process grouping rendering method.
[0104] Method Two: The user's terminal device obtains at least one image rendering method, which is configured by the user to the terminal device based on the rendering pipeline of at least one frame of scene data, and sends at least one image rendering method to the cloud service platform. The cloud service platform receives the at least one image rendering method sent by the terminal device.
[0105] See Figure 6 In Method 2, the user's terminal device acquires at least one frame of scene data to be rendered, obtains the rendering pipeline based on the at least one frame of scene data, and displays the user interface, which includes the rendering pipeline, so as to show the rendering pipeline to the user.
[0106] Optionally, the terminal device may have at least one frame of scene data stored locally, and the terminal device may be able to obtain the at least one frame of scene data stored locally.
[0107] Based on the rendering pipeline, the user can determine the dependencies existing in at least one frame of scene data. Based on these dependencies, the user can configure at least one image rendering method in the user interface displayed on the terminal device. The at least one image rendering method does not include the image rendering method corresponding to the dependency.
[0108] The terminal device obtains at least one image rendering method from the user interface and sends the at least one image rendering method to the cloud service platform. The cloud service platform receives the at least one image rendering method.
[0109] Optionally, the terminal device can also send at least one frame of scene data to the cloud service platform, and the cloud service platform receives the at least one frame of scene data and saves the at least one frame of scene data in the rendering queue.
[0110] In some embodiments, the terminal device may first send at least one frame of scene data to the cloud service platform. The cloud service platform can obtain the aforementioned target information and send the target information to the terminal device. The terminal device receives the target information and can also display the target information in the user interface. In this way, the user can configure at least one image rendering method in the user interface displayed on the terminal device based on the aforementioned dependencies and target information, and send the at least one image rendering method to the cloud service platform.
[0111] Alternatively, the user interface can be a webpage, or it can be an interface provided by an application (APP), program, or control panel software.
[0112] In some embodiments, the user can also configure at least one image rendering method segmentation detail in the user interface. The terminal device can obtain this segmentation detail information from the user interface and send it to the cloud service platform.
[0113] Optionally, at least one image rendering method includes a screen-block rendering method, wherein the block division details include at least one screen block division ratio, which can divide a frame of scene data into multiple image blocks. For example, if at least one screen block division ratio is 0.4, a frame of scene data can be divided into two image blocks, with the first image block occupying 40% of the frame of scene data and the second image block occupying 60% of the frame of scene data. As another example, if at least one screen block division ratio is 0.3 or 0.5, a frame of scene data can be divided into three image blocks, with the first image block occupying 30% of the frame of scene data, the second image block occupying 50% of the frame of scene data, and the third image block occupying 20% of the frame of scene data.
[0114] Optionally, at least one image rendering method includes a frame-by-frame rendering method, wherein the segmentation details include the number of frames in each group of scene data, that is, indicating which frames can be grouped together.
[0115] Optionally, at least one image rendering method includes a scene segmentation rendering method, the segmentation details of which include the number of object models that a rendering segment can contain.
[0116] Optionally, at least one image rendering method includes a subprocess grouping rendering method, wherein the division details include the number of subprocesses contained in a subprocess group.
[0117] Method 3: The third-party service device obtains at least one image rendering method, which is obtained by the third-party service device based on the rendering pipeline of at least one frame of scene data, and sends the at least one image rendering method to the cloud service platform. The cloud service platform receives the at least one image rendering method sent by the third-party service device.
[0118] See Figure 6 The third-party service device includes third-party microservices, which are services provided by third parties to obtain image rendering methods. The third-party service device acquires at least one frame of scene data and, through the third-party microservices, obtains at least one image rendering method based on this frame of scene data.
[0119] A third-party service device stores at least one frame of scene data to be rendered. The third-party service device can obtain the locally stored at least one frame of scene data and derive a rendering pipeline based on this data. Dependencies existing in the at least one frame of scene data are determined based on the rendering pipeline. At least one candidate image rendering method is determined based on these dependencies, excluding the image rendering method corresponding to the dependency. At least one image rendering method is selected from these candidate methods. The at least one image rendering method is then sent to the cloud service platform.
[0120] Optionally, the third-party service device can also send at least one frame of scene data to the cloud service platform, and the cloud service platform can cache the at least one frame of scene data in the rendering queue.
[0121] In some embodiments, the third-party service device may first send at least one frame of scene data to the cloud service platform. The cloud service platform may also obtain the aforementioned target information and send the target information to the third-party service device. After obtaining at least one candidate image rendering method, the third-party service device selects at least one image rendering method from the at least one candidate image rendering method based on the target information. Then, it sends the at least one image rendering method to the cloud service platform.
[0122] In some embodiments, a third-party service device may also obtain at least one image rendering method partitioning details and send the partitioning details to the cloud service platform.
[0123] Optionally, a third-party service device can obtain detailed information on the division of at least one image rendering method based on the target information.
[0124] For example, the status information in the target information includes the number of tasks being executed by each rendering device, the remaining video memory size of each rendering device, or the remaining computing resources of each rendering device. A third-party service device can obtain at least one screen partition ratio based on the computational complexity of the pixels included in at least one frame of scene data and this status information (the number of tasks, the remaining video memory size, and / or the remaining computing resources).
[0125] For example, a third-party service device can obtain the number of frames in each set of scene data based on this status information (the number of tasks, the remaining video memory size, and / or the remaining computing resources).
[0126] For example, a third-party service device may obtain the number of object models included in a rendering portion based on the computational complexity of the object models included in at least one frame of scene data and the state information (the number of tasks, the remaining video memory size, and / or the amount of remaining computing resources).
[0127] For example, a third-party service device may determine the number of subprocesses in a subprocess group based on the computational complexity of the subprocesses included in the rendering process and the state information (the number of tasks, the remaining video memory size, and / or the amount of remaining computing resources).
[0128] In some embodiments, the cloud service platform provides a calling interface through which third-party service devices send information to the cloud service platform. For example, the third-party service device sends one or more of the following to the cloud service platform through the calling interface: at least one image rendering method, at least one image rendering method's partitioning details, or at least one frame of scene data.
[0129] Optionally, the API call can be in the form of JavaScript object notation (JSON) or Extensible Markup Language (XML), etc.
[0130] Step 502: The cloud service platform divides at least one frame of scene data into multiple rendering parts based on at least one image rendering method, and the dependency strength between the multiple rendering parts is lower than the strength threshold.
[0131] In some embodiments, at least one image rendering method includes a frame-by-frame rendering method, in which the cloud service platform divides at least one frame of scene data into multiple groups based on the frame-by-frame rendering method, and each group of scene data includes one or more frames of scene data, and the multiple groups of scene data are multiple rendering parts.
[0132] In some embodiments, at least one image rendering method includes a scene segmentation rendering method, in which the cloud service platform divides at least one frame of scene data into multiple object models based on the scene segmentation rendering method, and the multiple object models are multiple rendering parts.
[0133] In some embodiments, at least one image rendering method includes a screen-block rendering method, in which the cloud service platform divides at least one frame of scene data into multiple image blocks based on the screen-block rendering method, and the multiple image blocks are multiple rendering parts.
[0134] In some embodiments, at least one image rendering method includes a sub-process grouping rendering method, in which the cloud service platform divides multiple sub-processes into multiple groups based on the sub-process grouping rendering method. Each group includes at least one sub-process, and the dependency strength between the multiple groups is lower than the strength threshold. Based on the multiple groups, at least one frame of scene data is divided into multiple rendering parts.
[0135] Multiple groups correspond one-to-one with multiple rendering parts. For each group, the rendering part corresponding to the group includes the image features that each subprocess in the group needs to render. The image features that need to be rendered are features in at least one frame of scene data.
[0136] In some embodiments, at least one image rendering method may include multiple image rendering methods. The cloud service platform may obtain the rendering order of the multiple image rendering methods and, based on the multiple image rendering methods and the rendering order, divide at least one frame of scene data into multiple rendering parts.
[0137] For example, at least one image rendering method includes frame-by-frame rendering and screen-by-screen rendering, with frame-by-frame rendering taking place before screen-by-screen rendering. The cloud service platform divides at least one frame of scene data into multiple groups based on the frame-by-frame rendering method. Each group of scene data includes at least one frame of scene data. For each frame of scene data within that group, based on the screen-by-screen rendering method, each frame of scene data within that group is divided into multiple rendering parts. Each rendering part includes at least one image block, which is an image block from the at least one frame of scene data.
[0138] For example, at least one image rendering method includes frame-by-frame rendering and scene-by-scene rendering, with frame-by-frame rendering taking place before scene-by-scene rendering. The cloud service platform divides at least one frame of scene data into multiple groups based on frame-by-frame rendering. Each group of scene data includes at least one frame of scene data. For each frame of scene data within that group, based on the scene-by-scene rendering method, each frame of scene data is divided into multiple rendering parts. Each rendering part includes at least one object model, which is the object model from the at least one frame of scene data.
[0139] For example, at least one image rendering method includes a frame-by-frame rendering method and a sub-process grouping rendering method, with the frame-by-frame rendering method rendering in a higher order than the sub-process grouping rendering method. The cloud service platform divides at least one frame of scene data into multiple groups based on the frame-by-frame rendering method. For any group of scene data containing at least one frame of scene data, based on the sub-process grouping rendering method, a rendering process for rendering that group of scene data is determined. The multiple sub-processes included in this rendering process are divided into multiple groups, each group containing at least one sub-process. Based on these multiple groups, the group of scene data is divided into multiple rendering parts.
[0140] At least one image rendering method may have other combinations, which will not be listed and explained here.
[0141] In some embodiments, the cloud service platform can also obtain detailed information on the partitioning of at least one image rendering method based on the target information. Based on this detailed partitioning information and the at least one image rendering method, at least one frame of image is divided into multiple rendering parts.
[0142] Step 503: The cloud service platform renders multiple parts using multiple rendering devices to obtain at least one frame of image.
[0143] In step 503, the cloud service platform allocates at least one rendering part to each rendering device based on the computational complexity of the multiple rendering parts and the status information of the multiple rendering devices. Using each rendering device, at least one rendering part of each rendering device is rendered to obtain at least one frame of image.
[0144] In some embodiments, see Figure 6 The cloud service platform includes a scheduling system, which can schedule multiple rendering devices to allocate at least one rendering portion to each rendering device.
[0145] For example, these multiple rendering parts consist of multiple sets of scene data. The status information of the rendering devices includes the number of tasks currently being executed by the rendering device, the remaining video memory size of the rendering device, and / or the remaining computing resources of the rendering device. Based on each set of scene data, the number of tasks currently being executed by each rendering device, the remaining video memory size of each rendering device, and / or the remaining computing resources of each rendering device, the cloud service platform allocates a set of scene data to each rendering device. Then, each rendering device renders its own set of scene data separately, obtaining at least one frame of scene data.
[0146] For example, the multiple rendering parts are multiple image blocks. The cloud service platform allocates an image block to each rendering device based on the computational complexity of each image block, the number of tasks being executed by each rendering device, the remaining video memory size of each rendering device, and / or the remaining computing resources of each rendering device. Then, each rendering device renders one image block for each rendering device separately, obtaining at least one frame of scene data.
[0147] For example, the multiple rendering components may consist of multiple object models. The cloud service platform allocates an object model to each rendering device based on the computational complexity of each object module, the number of tasks being executed by each rendering device, the remaining video memory size of each rendering device, and / or the remaining computing resources of each rendering device. Then, each rendering device renders its own object model separately, obtaining at least one frame of scene data.
[0148] For example, the multiple rendering components are determined based on a grouping of multiple sub-processes. The rendering device's status information includes the number of tasks currently being executed by the rendering device, the remaining video memory size of the rendering device, and / or the remaining computing resources of the rendering device. The cloud service platform assigns a group to each rendering device based on each group, the number of tasks currently being executed by each rendering device, the remaining video memory size of each rendering device, and / or the remaining computing resources of each rendering device. For each rendering device and its corresponding group, the sub-processes included in that group are executed using that rendering device to render the corresponding rendering component of that group, obtaining at least one frame of scene data.
[0149] In some embodiments, at least one image rendering method includes multiple image rendering methods, and the cloud service platform obtains the rendering order of the multiple image rendering methods. After rendering the at least one frame of scene data, it re-caches new scene data to the rendering queue. The cloud service platform obtains the rendering performance of rendering the at least one frame of scene data and uses this rendering performance as the rendering performance corresponding to the rendering order. Then, it recombines the multiple image rendering methods to obtain a new rendering order for the multiple image rendering methods.
[0150] When new scene data is re-cached in the rendering queue, the cloud service platform divides the new scene data into multiple rendering parts based on the multiple image rendering methods and the new rendering order. Then, it renders these multiple rendering parts to obtain the rendering performance corresponding to the new rendering order. By repeating the above process, the rendering performance corresponding to different rendering orders can be obtained. The rendering order with the best rendering performance can then be selected, and the cloud service platform can use the selected rendering order to render the re-cached scene data in the rendering queue.
[0151] Optionally, the cloud service platform can randomly combine the multiple image rendering methods, and the new rendering order of each combination is different from the previously combined rendering order.
[0152] In this embodiment, the cloud service platform obtains at least one image rendering method. This at least one image rendering method is obtained based on a rendering pipeline of at least one frame of scene data to be rendered. The rendering pipeline describes the rendering process of at least one frame of scene data. Since the dependencies existing in at least one frame of scene data can be derived from the rendering pipeline, the at least one image rendering method obtained from the rendering pipeline may not include image rendering methods corresponding to the dependencies. Therefore, the cloud service platform divides at least one frame of scene data into multiple rendering parts based on at least one image rendering method, ensuring that the dependency strength between the multiple rendering parts is below a strength threshold. In this way, by using multiple rendering devices to render multiple rendering parts to obtain at least one frame of image, not only can the multiple rendering parts be rendered in parallel, but the quality of the obtained at least one frame of image is also improved.
[0153] See Figure 7 This application provides an image rendering apparatus 700, which is deployed in... Figure 1 On the cloud service platform 100 shown, or deployed on Figure 2 , Figure 3 or Figure 4 On the cloud service platform 201 in the network architecture 200 shown. The device 700 also includes:
[0154] Acquisition unit 701 is used to acquire at least one frame of scene data corresponding to at least one frame of image to be rendered;
[0155] The acquisition unit 701 is used to determine at least one image rendering method based on the rendering pipeline of at least one frame of scene data. The at least one image rendering method is obtained based on the rendering pipeline of at least one frame of scene data. The rendering pipeline is used to describe the rendering process of rendering at least one frame of scene data.
[0156] The partitioning unit 702 is used to divide at least one frame of scene data into multiple rendering parts based on at least one image rendering method, wherein the dependency strength between the multiple rendering parts is lower than the strength threshold.
[0157] The rendering unit 703 is used to render multiple rendering parts through multiple rendering devices to obtain at least one frame of image.
[0158] Optionally, the detailed implementation process of obtaining at least one frame of scene data corresponding to at least one frame of image to be rendered by the acquisition unit 701 can be found in [reference needed]. Figure 5 The relevant content in step 501 of method 500 shown will not be described in detail here.
[0159] Optionally, the detailed implementation process of obtaining at least one image rendering method by the obtaining unit 701 can be found in [reference needed]. Figure 5 The relevant content in step 501 of method 500 shown will not be described in detail here.
[0160] Optionally, the detailed implementation process of dividing at least one frame of scene data into multiple rendering parts by the partitioning unit 702 can be found in [reference needed]. Figure 5 The relevant content in step 502 of method 500 shown will not be described in detail here.
[0161] Optionally, the rendering unit 703 renders multiple rendering parts through multiple rendering devices to obtain at least one frame of image. For a detailed implementation process, please refer to [link to relevant documentation]. Figure 5 The relevant content in step 503 of method 500 shown will not be described in detail here.
[0162] Optionally, the acquisition unit 701 is used for:
[0163] Determine the rendering pipeline based on at least one frame of scene data;
[0164] Dependencies existing in at least one frame of scene data are determined based on the rendering pipeline. The dependencies include one or more of the following: inter-frame dependencies between at least one frame of scene data, pixel dependencies between multiple pixels included in at least one frame of scene data, or object dependencies between multiple object models included in at least one frame of scene data.
[0165] At least one image rendering method is determined based on the dependency relationship, and the at least one image rendering method includes image rendering methods other than the image rendering method corresponding to the dependency relationship.
[0166] Optionally, the detailed implementation process of obtaining the rendering pipeline based on at least one frame of scene data by the acquisition unit 701 can be found in [reference needed]. Figure 5 The relevant content in step 501 of method 500 shown will not be described in detail here.
[0167] Optionally, the detailed implementation process of obtaining unit 701 to determine the dependencies existing in at least one frame of scene data based on the rendering pipeline can be found in [reference needed]. Figure 5The relevant content in step 501 of method 500 shown will not be described in detail here.
[0168] Optionally, the detailed implementation process of obtaining unit 701 determining at least one image rendering method based on dependency relationships can be found in [reference needed]. Figure 5 The relevant content in step 501 of method 500 shown will not be described in detail here.
[0169] Optionally, the rendering process includes multiple sub-processes, each sub-process being used to render different image features of at least one frame of scene data. At least one image rendering method includes one or more of the following: frame-by-frame rendering method, screen-by-screen rendering method, scene-by-scene rendering method, or sub-process grouping rendering method, which is used to group multiple sub-processes.
[0170] Optionally, the image rendering method corresponding to the dependency relationship includes one or more of the following: frame-by-frame rendering method corresponding to the inter-frame dependency relationship, screen-by-screen rendering method corresponding to the pixel dependency relationship, or scene-by-scene rendering method corresponding to the object dependency relationship.
[0171] Optionally, the acquisition unit 701 is used for:
[0172] Obtain target information, which includes one or more of the following: information to be rendered from at least one frame of scene data or status information of multiple rendering devices;
[0173] At least one candidate image rendering method is determined based on the dependency relationship, and the at least one candidate image rendering method includes image rendering methods other than the image rendering method corresponding to the dependency relationship.
[0174] Based on the target information, select at least one image rendering method from at least one candidate image rendering method.
[0175] Optionally, the detailed implementation process of acquiring target information by the acquisition unit 701 can be found in [reference needed]. Figure 5 The relevant content in step 501 of method 500 shown will not be described in detail here.
[0176] Optionally, the detailed implementation process of obtaining unit 701 to determine at least one candidate image rendering method based on dependency relationships can be found in [reference needed]. Figure 5 The relevant content in step 501 of method 500 shown will not be described in detail here.
[0177] Optionally, the detailed implementation process of obtaining unit 701 selecting at least one image rendering method from at least one candidate image rendering method based on target information can be found in [reference needed]. Figure 5 The relevant content in step 501 of method 500 shown will not be described in detail here.
[0178] Optionally, the acquisition unit 701 is also used for:
[0179] Based on the target information, obtain detailed information on the division of at least one image rendering method;
[0180] The partitioning unit 702 is used to divide at least one frame of scene data into multiple rendering parts based on partitioning detail information and at least one image rendering method.
[0181] Optionally, the detailed implementation process of obtaining at least one image rendering method partitioning detail information based on the target information by the acquisition unit 701 can be found in [reference needed]. Figure 5 The relevant content in step 502 of method 500 shown will not be described in detail here.
[0182] Optionally, the detailed implementation process of dividing at least one frame of scene data into multiple rendering parts based on the partitioning detail information and at least one image rendering method can be found in [reference needed]. Figure 5 The relevant content in step 502 of method 500 shown will not be described in detail here.
[0183] Optionally, the device 700 further includes a receiving unit 704; the receiving unit 704 is configured to:
[0184] Receive at least one image rendering method sent by the user's terminal device; or,
[0185] Receive at least one image rendering method sent by a third-party service device, wherein the at least one image rendering method is obtained by the third-party service device based on the rendering pipeline.
[0186] Optionally, the rendering process includes multiple sub-processes, and at least one image rendering method includes a sub-process grouping rendering method;
[0187] Division unit 702, used for:
[0188] Based on the sub-process grouping rendering method, the multiple sub-processes are divided into multiple groups, each group including at least one sub-process, and the dependency strength between the multiple groups is lower than the strength threshold;
[0189] Based on the multiple groups, the at least one frame of scene data is divided into multiple rendering parts.
[0190] Optionally, the partitioning unit 702 divides the multiple sub-processes into multiple groups based on the sub-process grouping rendering method. For detailed implementation of this method, please refer to [link to relevant documentation]. Figure 5 The relevant content in step 502 of method 500 shown will not be described in detail here.
[0191] Optionally, the detailed implementation process of the partitioning unit 702 dividing the at least one frame of scene data into multiple rendering parts based on the multiple groups can be found in [reference needed]. Figure 5 The relevant content in step 502 of method 500 shown will not be described in detail here.
[0192] Optionally, the dependency strength between at least one subprocess is not less than the strength threshold.
[0193] Optionally, rendering unit 703 is used for:
[0194] Based on the computational complexity of multiple rendering parts and the state information of multiple rendering devices, at least one rendering part is allocated to each rendering device;
[0195] Using each rendering device, render at least one rendering portion of each rendering device to obtain at least one frame of image.
[0196] Optionally, the rendering unit 703 allocates at least one rendering part to each rendering device based on the computational complexity of multiple rendering parts and the state information of multiple rendering devices. For a detailed implementation process, please refer to [link to relevant documentation]. Figure 5 The relevant content in step 503 of method 500 shown will not be described in detail here.
[0197] Optionally, the rendering unit 703 uses each rendering device to render at least one rendering portion of each rendering device to obtain at least one frame of image. For a detailed implementation process, please refer to [link to relevant documentation]. Figure 5 The relevant content in step 503 of method 500 shown will not be described in detail here.
[0198] The acquisition unit 701, the partitioning unit 702, the rendering unit 703, and the receiving unit 704 can all be implemented in software or in hardware. For example, the implementation of the acquisition unit 701 will be described below. Similarly, the implementation of the partitioning unit 702, the rendering unit 703, and the receiving unit 704 can refer to the implementation of the acquisition unit 701.
[0199] As an example of a software functional unit, the acquisition unit 701 may include code running on a computing instance. The computing instance may include at least one of a physical host (computing device), a virtual machine, and a container. Further, the aforementioned computing instance may be one or more. For example, the acquisition unit 701 may include code running on multiple hosts / virtual machines / containers. The multiple hosts / virtual machines / containers used to run the code may be distributed in the same region or in different regions. Further, the multiple hosts / virtual machines / containers used to run the code may be distributed in the same availability zone (AZ) or in different AZs, each AZ including one or more geographically proximate data centers. Typically, a region may include multiple AZs.
[0200] Similarly, multiple hosts / virtual machines / containers used to run this code can be distributed within the same Virtual Private Cloud (VPC) or across multiple VPCs. Typically, a VPC is set up within a region. Communication between two VPCs within the same region, as well as between VPCs in different regions, requires a communication gateway to be set up within each VPC to enable interconnection between VPCs.
[0201] As an example of a hardware functional unit, the acquisition unit 701 may include at least one computing device, such as a server. Alternatively, the acquisition unit 701 may also be a device implemented using an application-specific integrated circuit (ASIC) or a programmable logic device (PLD). The PLD may be implemented using a complex programmable logical device (CPLD), a field-programmable gate array (FPGA), generic array logic (GAL), or any combination thereof.
[0202] The multiple computing devices included in the acquisition unit 701 can be distributed in the same region or in different regions. Similarly, the multiple computing devices included in the acquisition unit 701 can be distributed in the same Availability Zone (AZ) or in different AZs. Likewise, the multiple computing devices included in the acquisition unit 701 can be distributed in the same Virtual Private Cloud (VPC) or in multiple VPCs. These multiple computing devices can be any combination of computing devices such as servers, ASICs, PLDs, CPLDs, FPGAs, and GALs.
[0203] It should be noted that, in other embodiments, the acquisition unit 701 can be used to execute any step in the image rendering method, the division unit 702 can be used to execute any step in the image rendering method, the rendering unit 703 can be used to execute any step in the image rendering method, and the receiving unit 704 can be used to execute any step in the image rendering method. The steps implemented by the acquisition unit 701, the division unit 702, the rendering unit 703, and the receiving unit 704 can be specified as needed. By implementing different steps in the image rendering method through the acquisition unit 701, the division unit 702, the rendering unit 703, and the receiving unit 704, all functions of the image rendering apparatus 700 are realized.
[0204] In this embodiment, the rendering pipeline describes the rendering process of at least one frame of scene data. Since at least one image rendering method is obtained by the acquisition unit based on the rendering pipeline of the at least one frame of scene data to be rendered, the partitioning unit divides the at least one frame of scene data into multiple rendering parts based on the at least one image rendering method. This ensures that the dependency strength between the multiple rendering parts is lower than a strength threshold. The rendering unit uses multiple rendering devices to render the multiple rendering parts to obtain at least one frame of image. Because the dependency strength between the multiple rendering parts is lower than the strength threshold, each rendering device can render its own rendering part without needing the rendering results of other rendering parts. In this way, multiple rendering devices render multiple rendering parts, which not only allows for parallel rendering of the multiple rendering parts but also improves the quality of the obtained at least one frame of image.
[0205] See Figure 8 This application provides a computing device 800. For example, the computing device 800 may be... Figure 1 The devices in the cloud service platform shown, or may be Figure 2 , Figure 3 or Figure 4 The network architecture 200 shown includes devices in a cloud service platform, or the computing device 800 can be... Figure 5 The devices in the cloud service platform of method 500 shown.
[0206] like Figure 8As shown, the computing device 800 includes a bus 802, a processor 804, a memory 806, and a communication interface 808. The processor 804, the memory 806, and the communication interface 808 communicate with each other via the bus 802. The computing device 800 can be a server or a terminal device. It should be understood that this application does not limit the number of processors and memories in the computing device 800.
[0207] The 802 bus can be a Peripheral Component Interconnect (PCI) bus or an Extended Industry Standard Architecture (EISA) bus, etc. Buses can be categorized as address buses, data buses, control buses, etc. For ease of representation, Figure 8 The bus 802 may be represented by a single line, but this does not mean that there is only one bus or one type of bus. The bus 802 may include a path for transmitting information between various components of the computing device 800 (e.g., processor 804, memory 806, communication interface 808).
[0208] Processor 804 may include any one or more processors such as a central processing unit (CPU), a graphics processing unit (GPU), a microprocessor (MP), or a digital signal processor (DSP).
[0209] Memory 806 may include volatile memory, such as random access memory (RAM). Memory 806 may also include non-volatile memory, such as read-only memory (ROM), flash memory, hard disk drive (HDD), or solid state drive (SSD).
[0210] See Figure 8 The memory 806 stores executable program code, and the processor 804 executes the executable program code to implement the following respectively. Figure 7 The functions of the acquisition unit 701, division unit 702, rendering unit 703, and receiving unit 704 in the illustrated device 700 are used to implement the method provided in any of the above embodiments. That is, the memory 806 stores instructions for executing the method provided in any of the above embodiments. Alternatively,
[0211] The communication interface 808 uses transceiver modules, such as, but not limited to, network interface cards and transceivers, to enable communication between the computing device 800 and other devices or communication networks.
[0212] This application also provides a cluster for rendering images. The image rendering cluster includes at least one computing device. The computing device can be a server, such as a central server, an edge server, or a local server in a local data center. In some embodiments, the computing device can also be a desktop computer, a laptop computer, or a smartphone, or other terminal device.
[0213] like Figure 9 As shown, the cluster of rendered images includes at least one computing device 800. The memory 806 of one or more computing devices 800 in the cluster of rendered images may store the same instructions for performing the image rendering method provided in any of the above embodiments.
[0214] In some possible implementations, the memory 806 of one or more computing devices 800 in the cluster of rendering images may also store partial instructions for executing the above-described method of rendering images. In other words, a combination of one or more computing devices 800 can jointly execute instructions for performing the method provided in any of the above embodiments.
[0215] The memory 806 in different computing devices 800 in a computing device cluster can store different instructions, each used for execution such as... Figure 7 The illustrated rendering image apparatus 700 performs some of the functions. That is, the instructions stored in the memory 806 of different computing devices 800 can implement the functions of one or more units among the acquisition unit 701, partitioning unit 702, rendering unit 703, and receiving unit 704.
[0216] In some possible implementations, one or more computing devices in the cluster rendering the image can be connected via a network. This network can be a wide area network (WAN), a local area network (LAN), or similar. Figure 10 One possible implementation is shown. For example... Figure 10 As shown, the two computing devices 800A and 800B are connected via a network. Specifically, they are connected to the network through the communication interfaces in each computing device.
[0217] In this type of possible implementation, the memory 806 in the computing device 800A stores the execution of, for example Figure 7 The illustrated embodiment includes instructions for the functions of the acquisition unit 701, the partitioning unit 702, and the rendering unit 703. Simultaneously, the memory 806 in the computing device 800B stores instructions for executing such... Figure 7Instructions for the function of the receiving unit 704 in the illustrated embodiment.
[0218] Figure 10 The connection method between the computing device clusters shown may take into account the needs of the image rendering method provided in this application (e.g., large amounts of data storage and / or data transmission and reception), and therefore consider delegating the functions implemented by the receiving unit 704 to the computing device 800B.
[0219] It should be understood that Figure 10 The functions of the computing device 800A shown can also be performed by multiple computing devices 800. Similarly, the functions of the computing device 800B can also be performed by multiple computing devices 800.
[0220] This application also provides another image rendering cluster. The connection relationships between the computing devices in this image rendering cluster can be similarly referenced. Figure 10 The connection method of the cluster of rendered images. The difference is that the memory 806 of one or more computing devices 800 in the cluster of rendered images can store the same instructions for executing the rendering image method provided in any of the above embodiments.
[0221] In some possible implementations, the memory 806 of one or more computing devices 800 in the cluster of rendering images may also store partial instructions for executing the methods provided in any of the above embodiments. In other words, a combination of one or more computing devices 800 can jointly execute instructions for performing the methods provided in any of the above embodiments.
[0222] This application also provides a computer program product containing instructions. The computer program product may be a software or program product containing instructions, capable of running on a computing device or stored on any usable medium. When the computer program product is run on at least one computing device, it causes the at least one computing device to perform the methods provided in any of the above embodiments.
[0223] This application also provides a computer-readable storage medium. The computer-readable storage medium can be any available medium capable of being stored by a computing device, or a data storage device such as a data center containing one or more available media. The available medium can be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., DVD), or a semiconductor medium (e.g., solid-state drive). The computer-readable storage medium includes instructions that instruct a computing device to perform the method provided in any of the above embodiments.
[0224] Those skilled in the art will understand that all or part of the steps of the above embodiments can be implemented by hardware or by a program instructing related hardware. The program can be stored in a computer-readable storage medium, such as a read-only memory, a disk, or an optical disk.
[0225] The above description is merely an optional embodiment of this application and is not intended to limit this application. Any modifications, equivalent substitutions, improvements, etc., made within the principles of this application should be included within the protection scope of this application.
Claims
1. A method of rendering a picture, characterized by, The method is applied to a cloud service platform, and the method comprises: obtaining at least one frame of scene data corresponding to at least one frame of picture to be rendered; determining at least one picture rendering mode according to a rendering pipeline of the at least one frame of scene data, the rendering pipeline being used to describe a rendering process of rendering the at least one frame of scene data; based on the at least one picture rendering mode, dividing the at least one frame of scene data into a plurality of rendering parts, the dependency strength between the plurality of rendering parts being lower than a strength threshold; rendering the plurality of rendering parts by a plurality of rendering devices to obtain the at least one frame of picture.
2. The method of claim 1, wherein, The determining at least one picture rendering mode according to a rendering pipeline of the at least one frame of scene data comprises: determining the rendering pipeline based on the at least one frame of scene data; determining a dependency relationship existing in the at least one frame of scene data based on the rendering pipeline, the dependency relationship comprising one or more of the following relationships: an inter-frame dependency relationship between the at least one frame of scene data, a pixel dependency relationship between a plurality of pixel points included in the at least one frame of scene data, or an object dependency relationship between a plurality of object models included in the at least one frame of scene data; determining at least one picture rendering mode based on the dependency relationship, the at least one picture rendering mode comprising a picture rendering mode other than a picture rendering mode corresponding to the dependency relationship.
3. The method of claim 2, wherein, The rendering process comprises a plurality of sub-processes, each sub-process being used to render a different image feature of the at least one frame of scene data, and the at least one picture rendering mode comprises one or more of the following: a frame rendering mode, a screen block rendering mode, a scene block rendering mode, or a sub-process grouping rendering mode used for grouping the plurality of sub-processes.
4. The method of claim 2 or 3, wherein, The picture rendering mode corresponding to the dependency relationship comprises one or more of the following: a frame rendering mode corresponding to the inter-frame dependency relationship, a screen block rendering mode corresponding to the pixel dependency relationship, or a scene block rendering mode corresponding to the object dependency relationship.
5. The method according to any one of claims 2 to 4, wherein, The method further comprises: obtaining target information, the target information comprising one or more of the following: information included in the at least one frame of scene data that needs to be rendered or state information of the plurality of rendering devices; The determining at least one picture rendering mode based on the dependency relationship comprises: determining at least one candidate picture rendering mode based on the dependency relationship, the at least one candidate picture rendering mode comprising a picture rendering mode other than a picture rendering mode corresponding to the dependency relationship; selecting the at least one picture rendering mode from the at least one candidate picture rendering mode based on the target information.
6. The method of claim 5, wherein, The method further comprises: obtaining division detail information of the at least one picture rendering mode based on the target information; The dividing the at least one frame of scene data into a plurality of rendering parts based on the at least one picture rendering mode comprises: dividing the at least one frame of scene data into the plurality of rendering parts based on the division detail information and the at least one picture rendering mode.
7. The method of claim 1, wherein, The determining at least one picture rendering mode comprises: receive the at least one picture rendering mode sent by a terminal device of a user; or receive the at least one picture rendering mode sent by a third-party service device, the at least one picture rendering mode being obtained by the third-party service device based on the rendering pipeline.
8. The method according to any one of claims 1 to 7, wherein, The rendering process includes a plurality of sub-processes, and the at least one picture rendering mode includes a sub-process grouping rendering mode. The dividing, based on the at least one picture rendering mode, of the at least one frame of scene data into a plurality of rendering parts includes: based on the sub-process grouping rendering mode, dividing the plurality of sub-processes into a plurality of groups, each group including at least one sub-process, and the dependency strength between the plurality of groups being lower than the strength threshold; based on the plurality of groups, dividing the at least one frame of scene data into a plurality of rendering parts.
9. The method of claim 8, wherein, The dependency strength between the at least one sub-process is not lower than the strength threshold.
10. The method of any one of claims 1-9, wherein, The rendering, by a plurality of rendering devices, of the plurality of rendering parts to obtain the at least one frame of picture includes: based on the calculation complexity of the plurality of rendering parts and the state information of the plurality of rendering devices, assigning at least one rendering part to each rendering device; using the each rendering device, rendering the at least one rendering part of the each rendering device respectively to obtain the at least one frame of picture.
11. An apparatus for rendering a picture, the apparatus comprising: The apparatus is deployed on a cloud service platform, and the apparatus further includes: an obtaining unit configured to obtain at least one frame of scene data corresponding to at least one frame of picture to be rendered; The obtaining unit is further configured to determine at least one picture rendering mode according to a rendering pipeline of the at least one frame of scene data, the rendering pipeline being used to describe a rendering process of rendering the at least one frame of scene data. A dividing unit is configured to divide, based on the at least one picture rendering mode, the at least one frame of scene data into a plurality of rendering parts, the dependency strength between the plurality of rendering parts being lower than a strength threshold. A rendering unit is configured to render, by a plurality of rendering devices, the plurality of rendering parts to obtain the at least one frame of picture.
12. The apparatus of claim 11, wherein, The obtaining unit is configured to: determine the rendering pipeline based on the at least one frame of scene data; determine a dependency relationship existing in the at least one frame of scene data based on the rendering pipeline, the dependency relationship including one or more of the following relationships: an inter-frame dependency relationship between the at least one frame of scene data, a pixel dependency relationship between a plurality of pixel points included in the at least one frame of scene data, or an object dependency relationship between a plurality of object models included in the at least one frame of scene data; determine at least one picture rendering mode based on the dependency relationship, the at least one picture rendering mode including a picture rendering mode other than a picture rendering mode corresponding to the dependency relationship.
13. The apparatus of claim 12, wherein, The rendering process includes a plurality of sub-processes, each sub-process being used to render different image features of the at least one frame of scene data, and the at least one picture rendering mode includes one or more of the following: a frame dividing rendering mode, a screen blocking rendering mode, a scene blocking rendering mode, or a sub-process grouping rendering mode used for grouping the plurality of sub-processes.
14. The apparatus of claim 12 or 13, wherein, The picture rendering mode corresponding to the dependency relationship comprises one or more of a frame splitting rendering mode corresponding to the inter-frame dependency relationship, a screen partitioning rendering mode corresponding to the pixel dependency relationship, or a scene partitioning rendering mode corresponding to the object dependency relationship.
15. The apparatus of any one of claims 12-14, wherein, The obtaining unit is configured to: obtain target information, the target information comprising one or more of information included in the at least one frame of scene data that needs to be rendered or state information of the plurality of rendering devices; determine at least one candidate picture rendering mode based on the dependency relationship, the at least one candidate picture rendering mode comprising a picture rendering mode other than the picture rendering mode corresponding to the dependency relationship; select the at least one picture rendering mode from the at least one candidate picture rendering mode based on the target information.
16. The apparatus of claim 15, wherein, The obtaining unit is further configured to: obtain partitioning detail information of the at least one picture rendering mode based on the target information; The partitioning unit is configured to partition the at least one frame of scene data into the plurality of rendering portions based on the partitioning detail information and the at least one picture rendering mode.
17. The apparatus of claim 11, wherein, The apparatus further comprises a receiving unit configured to: receive the at least one picture rendering mode sent by a terminal device of a user; or receive the at least one picture rendering mode sent by a third-party service device, the at least one picture rendering mode being obtained by the third-party service device based on the rendering pipeline.
18. The apparatus of any one of claims 11-17, wherein, The rendering process comprises a plurality of sub-processes, and the at least one picture rendering mode comprises a sub-process grouping rendering mode. The partitioning unit is configured to: partition the plurality of sub-processes into a plurality of groups based on the sub-process grouping rendering mode, each group comprising at least one sub-process, and a dependency strength between the plurality of groups being lower than the strength threshold; partition the at least one frame of scene data into a plurality of rendering portions based on the plurality of groups.
19. The apparatus of claim 18, wherein, The dependency strength between the at least one sub-process is not lower than the strength threshold.
20. The apparatus of any one of claims 11-19, wherein, The rendering unit is configured to: assign at least one rendering portion to each rendering device based on a computational complexity of the plurality of rendering portions and the state information of the plurality of rendering devices; and render the at least one frame of picture by using the each rendering device to respectively render the at least one rendering portion of the each rendering device.
21. A cluster of computing devices, characterized in that, The at least one computing device comprises a processor and a memory; The processor of the at least one computing device is configured to execute instructions stored in the memory of the at least one computing device, so that the cluster of computing devices performs the method of any one of claims 1-10.
22. A computer-readable storage medium, characterized in that, The computer program instructions, when executed by a cluster of computing devices, cause the cluster of computing devices to perform the method of any one of claims 1-10.
23. A computer program product comprising instructions, characterized in that, The instructions, when executed by a cluster of computing devices, cause the cluster of computing devices to perform the method of any one of claims 1-10.