Volume rendering using scalable GPU-based cloud computing
A GPU-based cloud computing platform is used to facilitate data computations on behalf of requesting users. In this embodiment, a user of a thin client has an associated dataset that requires computation. That dataset is adapted to be delivered to a computing platform, such as the GPU-based cloud, for computation, such as to facilitate a 3D volume rendering. The result of the computation is then returned to the user. Multiple such users may be operating clients and requesting computations from the cloud in a similar manner, possibly concurrently.
1. A method of computing 3D volume rendering data in a cloud compute environment having a set of cloud hosts, comprising:
receiving, from one or more requesting users, a dataset associated with a 3D volume rendering operation at a client, the dataset representing an image at a given number of frames per second, each frame of the image having a uniform distribution of pixels, at least two frames of an image sequence having varying resolution with respect to one another, and at least two pixels within a particular frame each being associated with a ray having a varying number of ray tracing steps with respect to one another, the ray sampling the dataset along a set of sampling points whose locations along the ray are determined as the ray is cast;
performing a volume rendering computation on the dataset in the cloud compute environment using at least one cloud host having a graphics processing unit (GPU), the volume rendering computation calculating a continuous per-pixel dynamic sampling distance for ray tracing initiated from a virtual camera associated with the client, the continuous per-pixel dynamic sampling distance being a distance between two sample locations that varies dynamically and in a non-uniform manner as a function of how values of voxels are changing within the 3D volume; and
returning a result of the volume rendering computation to the requesting user, the result adapted to facilitate a 3D volume rendering of an image from the virtual camera based on the dataset.
2. The method as described in claim 1 further including assigning datasets from two or more users to a single graphics processing unit (GPU) in a cloud host and performing a volume rendering computation on each dataset concurrently.
3. The method as described in claim 1 further including distributing a dataset of a particular requesting user across two or more graphic processing units (GPUs) in respective cloud hosts and performing a volume rendering computation on each dataset concurrently.
4. The method as described in claim 1 wherein the result is returned to the requesting client as an encoded or compressed stream.
5. A method of computing 3D volume rendering data in a cloud compute environment having a set of cloud hosts, comprising:
receiving, from each of multiple requesting users, a dataset associated with a 3D volume rendering operation at a client associated with a particular requesting user, the dataset representing an image at a given number of frames per second, each frame of the image having a uniform distribution of pixels, at least two frames of an image sequence having varying resolution with respect to one another, and at least two pixels within a particular frame each being associated with a ray having a varying number of ray tracing steps with respect to one another, the ray sampling the dataset along a set of sampling points whose locations along the ray are determined as the ray is cast;
performing a volume rendering computation on each dataset in the cloud compute environment using a cloud host having a shared graphics processing unit (GPU), wherein the shared GPU assigns a given volume rendering computing work unit per requesting user as a function of a number of requesting users sharing the GPU; and
returning a result of the volume rendering computation to each requesting user, the result adapted to facilitate a 3D volume rendering of an image based on the dataset;
wherein the volume rendering computation calculates a per-pixel dynamic sampling distance for ray tracing initiated from a virtual camera associated with the client, the continuous per-pixel dynamic sampling distance being a distance between two sample locations that varies dynamically and in a non-uniform manner as a function of how values of voxels are changing within the 3D volume.
6. The method as described in claim 5 wherein the given volume rendering computing work unit is a pixel.
7. The method as described in claim 6 wherein the volume rendering computation is performed by a pixel shader.