NZ620132B2 - Crowd-sourced video rendering system - Google Patents
Crowd-sourced video rendering system Download PDFInfo
- Publication number
- NZ620132B2 NZ620132B2 NZ620132A NZ62013212A NZ620132B2 NZ 620132 B2 NZ620132 B2 NZ 620132B2 NZ 620132 A NZ620132 A NZ 620132A NZ 62013212 A NZ62013212 A NZ 62013212A NZ 620132 B2 NZ620132 B2 NZ 620132B2
- Authority
- NZ
- New Zealand
- Prior art keywords
- clients
- render
- composite
- server
- rendered
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/50—Lighting effects
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/50—Lighting effects
- G06T15/503—Blending, e.g. for anti-aliasing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/16—Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/024—Multi-user, collaborative environment
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/02—Handling of images in compressed format, e.g. JPEG, MPEG
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/06—Use of more than one graphics processor to process data before displaying to one or more screens
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2370/00—Aspects of data communication
- G09G2370/02—Networking aspects
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
Abstract
Disclosed is a method for graphic rendering over multiple clients (82, 84). The method includes distributing rendering tasks to connected client nodes (82, 84) having capable graphics processing units by transmitting viewport state data objects and a unique spatial location to each of the clients (82, 84); performing path tracing at each of the clients (82, 84) from the starting point of their unique spatial locations, and transmitting their rendered output back to the server (22). The server (22) generates a composite rendered output from the individual rendered outputs received by the participating clients (82, 84), and then transmits the composite to all connected clients (82, 84) for display. Thus, as the number of client nodes (82, 84) increases, the scene is rendered more rapidly and at higher quality. 2, 84); performing path tracing at each of the clients (82, 84) from the starting point of their unique spatial locations, and transmitting their rendered output back to the server (22). The server (22) generates a composite rendered output from the individual rendered outputs received by the participating clients (82, 84), and then transmits the composite to all connected clients (82, 84) for display. Thus, as the number of client nodes (82, 84) increases, the scene is rendered more rapidly and at higher quality.
Description
WO 23069
CROWD-SOURCED VIDEO RENDERING SYSTEM
2012/050165
TECHNICAL FIELD
The t sure generally relates to distributed, crowd-sourced graphics
rendering of applications, and more specifically relates to a server utilizing the graphics
sing units of one or more connected s to m diffuse light rendering, receiving
the rendered scenes from the one or more connected clients, generating a composite scene from
the received scenes, and transmitting the composite scene to all connected clients.
BACKGROUND
A client-server architecture, in general, is a distributed computing ecture
that partitions tasks or work loads between s, which may be considered as “service
ers”, and clients, which may be considered as “service requesters” or “service consumers”.
Often, the servers and the clients are connected via a computer network and various types of data
may be transmitted between individual servers and individual clients bi-directionally over the
computer network. Traditionally, servers usually have more resources and greater performance
capabilities than the clients. A server may share its resources with one or more clients, such as
performing certain tasks for the clients (i.e., providing services to the clients). Because a server
typically has more resources than a client, the server may complete a task, especially a resourcedemanding
task, much faster than the client is able to.
Data exchanged between a server and a client may be represented using any
suitable data format and transmitted using any suitable communications protocol. For e,
when an application is executed on a server for a client, the output of the application may be
represented using a structured document, such as a HyperText Markup Language (HTML)
document or an Extensible Markup Language (XML) document. The server may it the
HTML or XML nt, which includes the data that represent the output of the application, to
the client over a HyperText Transfer Protocol (HTTP) connection between the server and the
client. The client, upon receiving the HTML or XML document, may consume the document
and render the output of the application y using the HTML or XML document, such as in a
web browser executed on the client.
2012/050165
SUMMARY
The present disclosure generally s to a crowd-sourced graphics rendering
system that distributes rendering tasks among one or more connected clients that transmit
rendered output back to a server, which composites the client output into a single rendered output
for transmission and display to all connected clients.
In the context of server-side graphics rendering, a single server may include an
array of graphics processing units (GPUs) to render graphics objects and stream the output to
clients. r, rendering complex 3D environments is expensive in terms of processor
cycles, and onal GPUs or s must be added to adequately provide rendered frames or
scenes to attached clients. Thus, traditional server-side cs rendering encounters significant
scalability issues. It may be prohibitively expensive for the provider to add servers or GPUs to
meet the s of an increasing number of clients; conversely, overinvestment in server or
GPU infrastructure s in underutilization when demand falls below capacity.
Additionally, in recent years, the number of er-level devices having GPUs
capable of quickly ming relatively complex 3D rendering has increased dramatically. For
e, whereas the number of personal computers possessing GPUs capable of performing
path tracing of a 3D scene in under a minute may have been limited to a handful of computers in
the early 2000’s, currently over forty-million personal computers possess GPUs with this
capability. ore it is desirable to leverage these client-side GPUs to offload graphics
rendering tasks from the server to the clients, in effect crowd-sourcing the rendering of a given
frame or environment.
In one embodiment, a computer system hosts a plurality of application instances,
each ation instance corresponding to a remote client application. The er system
ins a network connection to each of the remote client applications for which an application
instance is hosted. In particular embodiments, the application instance is a software stub, as
further discussed below. In particular embodiments, the computer system transmits render assets
to the client applications for computers having sufficiently powerful GPUs to contribute to
rendering. In particular embodiments, the computer system transmits render assets in the form of
viewport state data objects (VSDOs) as fiarther discussed below. In particular embodiments, the
computer system also transmits or assigns a unique spatial position to each client participating in
the crowd-sourced rendering process. In particular embodiments, the client s utilize the
2012/050165
received render assets and the unique viewpoint to render the frame or environment. In
particular embodiments, the client devices perform path tracing to render the e lighting of a
scene or environment. After completing its assigned rendering task, each participating client
device transmits its rendered output back to the computer system. In particular embodiments, the
rendered output is a frame from a particular viewpoint. In particular embodiments, the ed
output is a lightmap for the diffilse lighting of the environment. In particular ments, the
rendered output is a modified VSDO. Upon receiving the rendered outputs, the computer system
generates a composite rendered output for transmission back to all connected clients, even those
that did not participate in the crowd-sourced rendering process.
In particular embodiments, each connected client views the scene from the exact
same viewpoint, and the er system transmits a composite frame from the specific
viewpoint to each connected client for display. In particular embodiments, each connected client
views the scene from a different perspective, and the computer system transmits a composite
render asset for the individual s to use in their own rendering engine. In particular
environments, the render asset is a light map or VSDO containing light map data representing the
diffilse lighting of the nment. Thus, clients may render the scene from different
viewpoints using the render assets while retaining high-quality radiosity lighting. In particular
embodiments, the clients render the hanging specular lighting locally and in conjunction
with the received render assets containing the crowd-sourced diffuse lighting for the
environment. Thus, as the number of client nodes possessing capable GPUs increases, any
particular scene may be rendered more y or at higher graphics quality.
In an ment, a method for generating a composite render is disclosed. The
method comprises transmitting to one or more clients, by a processor, common render assets, a
unique spatial position ent from other transmitted spatial positions and one or more
instructions to generate a render using the common render assets and its unique spatial position
or using the common render assets and a respective unique spatial position that was transmitted
to each of the one or more clients. In an embodiment, each unique l position is ted
In an embodiment, the ctions to generate a render comprise instructions to
perform path tracing on the render assets from the unique spatial position wherein the render is a
light map for a portion of or an entire environment containing the render assets. In an
embodiment the render is a frame, and the one or more instructions further comprise a common
viewpoint from which to render the frame. In an embodiment, the render assets are viewport
state data objects (VSDOs) and the render is the set of rendering assets enhanced by diffuse
lighting data calculated as a result of the path tracing.
The method fiarther comprises receiving, by the processor, from each of the one or
more clients, a render and generating, by the processor, a composite render from the received
renders. The composite render thus generated is transmitted by the processor to the one or more
clients. In an embodiment, generating, by the processor, the composite render comprises adding,
by the processor, the ed light maps to generate a composite light map of a portion of or the
entire environment containing the render assets. In an embodiment, generating, by the processor,
the composite render fiarther comprises adding the received frames to generate a composite
frame.
A method of receiving a ite render is disclosed. The method comprises
receiving, by a sor from a server, render , a unique l position and one or more
instructions to generate a render using the received render assets and the unique spatial position.
The method filrther ses generating, by the processor, the render in accordance with the
one or more instructions, itting, by the processor, the generated render to the server and
receiving, by the processor from the server, a composite render. In an embodiment, the method
fiarther ses rendering, by the processor, specular ng from a server-independent
viewpoint, ing, by the processor, the rendered specular lighting with the ed
composite render and outputting, by the processor, the combined ed specular lighting and
received composite render to a display.
In an embodiment, a system for generating a composite render is disclosed. The
system comprises, a graphics processing unit, a processor and a storage medium for tangibly
storing thereon program logic for execution by the processor. In an embodiment, the program
logic comprises common render asset transmission logic, executed by the processor, to transmit
common render assets to one or more clients, spatial position transmission logic, ed by the
processor, to transmit, to each of the one or more clients, a unique spatial position different from
other transmitted spatial positions and instruction transmission logic executed by the processor,
to transmit, to each of the one or more clients, one or more instructions to generate a render using
the common render assets and its unique spatial position. In an embodiment, the program logic
further ses receiving logic, executed by the sor, to e, from each of the one or
more clients, a render, composite render generating logic, executed by the processor, to te
a ite render from the received renders and composite render transmitting logic, executed
by the processor, to transmit the composite render to the one or more clients.
In an embodiment, a system for receiving a composite render is disclosed. The
system ses, a graphics processing unit, a processor and a storage medium for tangibly
storing thereon program logic for execution by the processor. In an embodiment, the program
logic comprises receiving logic, executed by a processor, for receiving from a server, render
assets, a unique spatial position and one or more instructions to generate a render using the
received render assets and the unique spatial position. The programming logic fiarther comprises
render generating logic, executed by the processor, for generating the render in accordance with
the one or more instructions, transmitting logic, executed by the processor, for transmitting the
generated render to the server and composite render receiving logic, executed by the processor
for receiving from the server, a composite render. In an embodiment, the system further
comprises ng rendering logic, executed by the processor, for ing ar lighting
from a server-independent viewpoint. The system also comprises combining logic, executed by
the sor, for combining the ed specular lighting with the received composite render
and outputting logic, executed by the processor, for outputting the combined rendered specular
lighting and received ite render to a display.
In an embodiment, the instruction transmission logic to te a render further
comprises instructions to perform path tracing on the render assets from the unique spatial
position wherein the render is a light map for a portion of or an entire nment containing
the render assets. In an embodiment, the composite render generating logic filrther comprises
adding logic to add the ed light maps to generate a composite light map of a portion of or
the entire environment containing the render assets. In an embodiment, the composite render
generating logic further comprises adding logic, executed by the processor, to add the received
frames to generate a composite frame.
These and other embodiments whose features can be combined will be apparent to
those of ordinary skill in the art by reference to the following detailed description and the
anying drawings.
2012/050165
BRIEF DESCRIPTION OF THE DRAWINGS
FIGURE 1 illustrates an example client-server system implementing a crowdsourced
graphics rendering system.
FIGURE 2 illustrates a method of distributing the rendering of a frame from a
fixed int to a plurality of clients.
FIGURE 3 rates example received client frames for a given scene.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| NZ709336A NZ709336B2 (en) | 2011-08-11 | 2012-08-09 | Crowd-sourced video rendering system |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/208,164 US9250966B2 (en) | 2011-08-11 | 2011-08-11 | Crowd-sourced video rendering system |
| US13/208,164 | 2011-08-11 | ||
| PCT/US2012/050165 WO2013023069A2 (en) | 2011-08-11 | 2012-08-09 | Crowd-sourced video rendering system |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| NZ620132A NZ620132A (en) | 2015-07-31 |
| NZ620132B2 true NZ620132B2 (en) | 2015-11-03 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| AU2017228573B2 (en) | Crowd-sourced video rendering system | |
| TWI482118B (en) | System and method for processing load balance of graphic streams | |
| MX2014012325A (en) | Enabling web clients to provide web services. | |
| Grimstead et al. | RAVE: the resource‐aware visualization environment | |
| Aderhold et al. | Distributed 3d model optimization for the web with the common implementation framework for online virtual museums | |
| CN114528515A (en) | Model rendering method and device, electronic equipment and computer readable storage medium | |
| NZ620132B2 (en) | Crowd-sourced video rendering system | |
| NZ709336B2 (en) | Crowd-sourced video rendering system | |
| Sigitov et al. | Drive: An example of distributed rendering in virtual environments | |
| Su et al. | Crossport: a Cloud-Edge-End Microservice Architecture for Collaborative Rendering in Metaverse Services | |
| Soetebier | Client-server infrastructure for interactive 3d multi-user environments | |
| Kim et al. | Multiscreen-based gaming services using multi-view rendering with different resolutions | |
| He et al. | Multi-user 3D based framework for e-commerce | |
| Al-Saidi | Interactive Solution For Distributed Collaborative Visualization | |
| HK1194495A (en) | Crowd-sourced video rendering system | |
| HK1194495B (en) | Crowd-sourced video rendering system | |
| Ratoi et al. | A NEW MULTIMEDIA STREAMING PLATFORM BASED ON XPCOM COMPONENTS. |