# Patent

## Title
Real-time rendering of light-scattering media

## Abstract

A real-time algorithm for rendering of an inhomogeneous scattering media such as smoke under dynamic low-frequency environment lighting is described. An input media animation is represented as a sequence of density fields, each of which is decomposed into a weighted sum of a set of radial basis functions (RBFs) and an optional residual field. Source radiances from single and optionally multiple scattering are directly computed at only the RBF centers and then approximated at other points in the volume using an RBF-based interpolation. Unique approximation techniques are introduced in the computational algorithms to simplify and speed up the computation of source radiance contributed by single and multiple scattering. Using the computed source radiances, a ray marching technique using slice-based integration of radiance along each viewing ray may be performed to render the final image.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation-in-part of application Ser. No. 11/768,894 filed on Jun. 26, 2007, entitled “Real-Time Rendering of Light-Scattering Media”, the entire contents of which are hereby incorporated by reference.


BACKGROUND
Computer graphics systems are used in many game and simulation applications to create atmospheric effects such as fog, smoke, clouds, smog and other gaseous phenomena. These atmospheric effects are useful because they create a more realistic sense of the environment and also create the effect of objects appearing and fading at a distance.
Extensive research has been done on realistic simulation of participating media, such as fog, smoke, and clouds. The existing methods includes analytic methods, stochastic methods, numerical simulations, and pre-computation techniques. Most of these techniques focus on computing the light distribution through the gas and present various methods of simulating the light scattering from the particles of the gas. Some resolve multiple scattering of light in the gas and others consider only first order scattering (the scattering of light in the view direction) and approximate the higher order scattering by an ambient light. A majority of the techniques use ray-tracing, voxel-traversal, or other time-consuming algorithms to render the images.
In some approaches, smoke and clouds are simulated by mapping transparent textures on a polygonal object that approximates the boundary of the gas. Although the texture may simulate different densities of the gas inside the 3D boundary and compute even the light scattering inside the gas, it does not change, when viewed from different directions. Consequently, these techniques are suitable for rendering very dense gases or gasses viewed from a distance.
Other methods simplify their task by assuming constant density of the gas at a given elevation, thereby making it possible to use 3D textures to render the gas in real time. The assumption, however, prevents using the algorithm to render inhomogeneous participating media such as smoke with irregular thickness and patchy fog.
There are also methods that use pre-computation techniques in which various scene-dependent quantities are precomputed. The precomputed quantities, however, are valid only for the given static participating medium. For dynamic animation sequences with adjustable media (e.g. smoke) parameters, the preprocessing time and storage costs would be prohibitive.
With the existing techniques that do offer quality rendering, considerable simulation time is still needed to render a single image, making these approaches inappropriate for interactive applications on animated sequences. These methods may also be inadequate to addresses complex environment illumination. Rendering of smoke, for example, presents a particularly challenging problem in computer graphics because of its complicated effects on light propagation. Within a smoke volume, light undergoes absorption and scattering interactions that vary from point to point because of the spatial non-uniformity of smoke. In static participating media, the number and complexity of scattering interactions lead to a substantial expense in computation. For a dynamic medium like smoke having an intricate volumetric structure changing with time, the computational costs can be prohibitive. Even with the latest computational processing power, rendering large volume high quality images of a dynamic smoke scene can be time-consuming. For video and animation applications, if real-time rendering at a rate of at least twenty frames per second cannot be achieved, much of the rendering may need to be precomputed at a cost of losing flexibility and interactive features.
Despite the practical difficulties of rendering inhomogeneous light scattering media (e.g., smoke), such rendering nevertheless remains a popular element in many applications such as films and games. From an end user's point of view, what is needed is an ability to render in real-time complex scenes with high quality visual realism. From a designer's point of view, what is needed is affordable real-time or close to real-time control over the lighting environment and vantage point, as well as the volumetric distribution and optical properties of the smoke.
SUMMARY
Real-time rendering inhomogeneous scattering media animations (such as smoke animations) with dynamic low-frequency environment lighting and controllable smoke attributes is described. A real-time algorithm for rendering of an inhomogeneous scattering media such as smoke under dynamic low-frequency environment lighting is described. An input media animation is represented as a sequence of density fields, each of which is decomposed into a weighted sum of a set of radial basis functions (RBFs) and an optional residual field. Source radiances from single and optionally multiple scattering are directly computed at only the RBF centers and then approximated at other points in the volume using an RBF-based interpolation. Unique approximation techniques are introduced in the computational algorithms to simplify and speed up the computation of source radiance contributed by single and multiple scattering. In one embodiment, the single scattering term is computed by computing a spherical harmonic product and a convolution term[(Lin*{tilde over (τ)}(cl))★p], where Lin is a vector representing a spherical harmonic projection of incident radiance Lin, {tilde over (τ)}(cl) is transmittance vector associated with RBF center cl, and p is a vector representing a spherical harmonic projection of a phase function p. Multiple scattering terms are computed based on the proceeding scattering terms using an iteration method.
Using the computed source radiances, a ray marching technique using slice-based integration of radiance along each viewing ray may be performed to render the final image. According to one aspect of the rendering scheme, where there is a residual density field, the effect of the residual density field is compensated back into the radiance integral to generate images of higher detail. One exemplary compensation takes place during the ray machine process.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.



BRIEF DESCRIPTION OF THE FIGURES
The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items.
FIG. 1 is a flowchart of an exemplary process for rendering an inhomogeneous scattering medium.
FIG. 2 is a flowchart of another exemplary process of rendering an inhomogeneous scattering medium.
FIG. 3 is a flowchart of another exemplary process of rendering an inhomogeneous scattering medium.
FIG. 4 is a flowchart of another exemplary process of rendering an inhomogeneous scattering medium.
FIG. 5 is a flowchart of another exemplary process of rendering an inhomogeneous scattering medium.
FIG. 6 shows an exemplary environment for implementing the method for rendering inhomogeneous scattering media.
FIG. 7 is a diagrammatic illustration of light transport in smoke.
FIG. 8 is an illustration of density field approximation using a residual density field.
FIG. 9 is a diagram showing an accumulative optical depth of an RBF.
FIG. 10 is an illustration of an exemplary multiple scattering simulation for estimation of incident radiance at RBF center c1.
FIG. 11 is a flowchart of an exemplary GPU pipeline for multiple scattering simulation.
FIG. 12 is an illustration of an exemplary ray marching for radiance integration along view rays.



DETAILED DESCRIPTION
Overview
Several exemplary processes for rendering an inhomogeneous scattering medium are illustrated with reference to FIGS. 1-5. The order in which the processes described is not intended to be construed as a limitation, and any number of the described method blocks may be combined in any order to implement the method, or an alternate method.
FIG. 1 is a flowchart of an exemplary process for rendering an inhomogeneous scattering medium. The process 100 starts at block 101 where a density field of an inhomogeneous scattering medium defined in a volume space is provided. The density field is at least approximately represented by a RBF model density field, which is decomposed into a weighted sum of a set of radial basis functions (RBFs) each having a RBF center. Where the RBF model density field is only an approximation of an actual density field, a residual density field may be calculated or otherwise obtained to compensate the RBF model density field to more closely simulate the actual density field. However, in some embodiments the RBF model density field may be an exact representation of the actual input density field of the inhomogeneous scattering media used. For example, computational pre-designing may be performed to carefully choose a RBF model so that the RBF model reflects as closely as possible the density field of a desired inhomogeneous scattering medium, such as smoke. The RBF model is then provided as the input density. In this case, there would be no need for a residual density.
At block 110, the process computes the value of source radiance at each RBF center. Detail of such computation is described later with the illustration of exemplary embodiments. As will be shown, computing the values of the source radiance at RBF centers only (instead of the values at all voxel points in the volume space) for the RBF model density field simplifies the computation, and can be carried out real time at a video or animation rate (e.g., at least 10 frames per second, or preferably 20 frames per second or above).
The source radiance including at least a single scattering term computed by vector convolution, and optionally also include multiple scattering terms computed by iteration, as will be illustrated in later sections of the this description. In one embodiment, the single scattering term is given by a spherical harmonic product and a convolution term[(Lin*{tilde over (τ)}(cl))★p], wherein Lin is a vector representing a spherical harmonic projection of incident radiance Lin, {tilde over (τ)}(cl) is transmittance vector associated with RBF center cl, and p is a vector representing a spherical harmonic projection of a phase function p. The transmittance vector {tilde over (τ)}(cl) associated with the RBF center cl may be computed based on an accumulative optical depth through the RBF. The multiple scattering terms may be obtained by iteration which computes an nth order scattering term (n≧1), and then computes a (n+1)th order scattering term based on the previously computed nth order scattering term. The iteration may continue until the last scattering term has a magnitude below a user-specified threshold, or a user-specified number of iterations has been reached.
At block 120, the process 100 approximates the values of the source radiance at other points in the volume space by interpolating from the values of the source radiance at the RBF centers. Any suitable interpolation technique may be used. In particular, a special interpolation technique is described herein which approximates the source radiance at any point x as a weighted combination of the source radiances at the RBF centers. Interpolation is a much faster process than directly computing the values of source radiance at various voxels in the volume space, especially when the direct computation requires a physics-based simulation.
At block 130, the process 100 computes an effective exitant radiance at point x in the volume space based on the source radiance obtained at blocks 110 and 120. The point x can be any point in the 3-D volume space. The effective exitant radiance is thus computed as a function of x. Because the function may typically have no analytical form, the effective exitant radiance is calculated at discrete points x, each corresponding to a discrete voxel. The effective exitant radiance is calculated based on several input information including the reduced incident radiance (the reduced radiance of the incident light at each voxel) and the source radiance at each voxel previously.
Where the RBF model density field is only an approximation of the actual density field, the source radiance computed at block 110 may also be an approximate source radiance. In this case, the effective exitant radiance may include a base component and a compensation component. The base component may be computed by integrating the approximate source radiance along a view ray in the approximate RBF model density field, while the compensation component may be computed by integrating the approximate source radiance along the view ray in the residual density field. For example, the approximate source radiance may be composited by performing a ray marching procedure.
At block 140, the process renders an image of the inhomogeneous scattering medium based on the effective exitant radiance. Any technique, such as programmable shaders, suitable for rendering 3-D voxel properties into a 2-D pixel display may be used.
FIG. 2 is a flowchart of another exemplary process of rendering an inhomogeneous scattering medium. In this exemplary process, the RBF model density field is only an approximation of an actual density field. A residual density field is used to compensate the RBF model density field to more closely simulate the actual density field.
The process 200 starts at block 202 at which a RBF model density field is provided. The RBF model density field is a weighted sum of a set of radial basis functions (RBFs) each having a RBF center. The RBF model density field may be provided in various manners and circumstances. For example, the RBF model density field may have been previously acquired as a result of decomposing an actual density field. The decomposition of the actual density field may either be done in the same process 200 of FIG. 2, or in a different process at a different location by a different party.
At block 204, a residual density field is provided. The sum of the RBF model density field and the residual density field defines an overall density field which is more realistic.
At block 206, the process computes a model source radiance in the volume space for the RBF model density field. The techniques (e.g., the interpolation technique) described herein (such as that described with FIG. 1) may be used for calculating the model source radiance in the volume space.
At block 208, the process computes effective exitant radiance at point x in the volume space based on the model source radiance by taking into account contributions by the residual density field. The point x can be any point in the 3-D volume space. The effective exitant radiance is thus computed as a function of x. Similar to that in FIG. 1, lacking an analytical form, the effective exitant radiance is calculated at discrete points x, each corresponding to a discrete voxel. The effective exitant radiance is calculated based on several input information including the reduced incident radiance, the source radiance at each voxel, and the density field. Various degrees of approximation may be taken in the process of the computation, as discussed in detail with the exemplary embodiments sections of this description. In one exemplary embodiment, while the model source radiance is used as an approximation of the total source radiance, the density field includes the residual density field to result in an effective exitant radiance more realistic than the result obtained from using a simple RBF model density field alone.
At block 210, the process renders an image of the inhomogeneous scattering medium based on the effective exitant radiance.
FIG. 3 is a flowchart of another exemplary process of rendering an inhomogeneous scattering medium. This exemplary process is a variation of the exemplary process shown in FIG. 2. Like that in FIG. 2, the RBF model density field is only an approximation of an actual density field. A residual density field of an inhomogeneous scattering medium is used to compensate the RBF model density field to more closely simulate the actual density field. In the process 300 of FIG. 3, however, an existing realistic automotive density is first provided. The process 300 starts at block 302 by decomposing the given density field into a weighted sum of a set of radial basis functions (RBFs) each having a RBF center. The weighted sum of the set of RBFs gives a RBF model density field which is an approximate representation of the actual density field.
At block 304, the process computes a residual density field which compensates the difference between the density field and the RBF model density field residual density field. In a straightforward example, the residual density field is obtained by calculating the difference between the density field and the RBF model density field residual density field. The sum of the RBF model density field and the residual density field defines a more realistic overall density field of the inhomogeneous scattering medium.
At block 306, the process computes a model source radiance in the volume space for the RBF model density field. This step is similar to that in block 206 of FIG. 2.
At block 308, the process computes effective exitant radiance at point x in the volume space based on the model exitant radiance by taking into account contributions by the residual density field. This step is similar to that in block 208 of FIG. 2.
At block 310, the process renders an image of the inhomogeneous scattering medium based on the effective exitant radiance. This step is similar to that in block 210 of FIG. 2.
FIG. 4 is a flowchart of another exemplary process of rendering an inhomogeneous scattering medium. Like that in FIGS. 2-3, the RBF model density field is only an approximation of an actual density field. A residual density field of an inhomogeneous scattering medium is used to compensate the RBF model density field to more closely simulate the actual density field. The process 400 of FIG. 4 introduces a technique for faster processing the residual density field. The process 400 starts at block 402 by decomposing the given density field into a weighted sum of a set of radial basis functions (RBFs) each having a RBF center. The weighted sum of the set of RBFs gives a RBF model density field which is an approximate representation of the actual density field.
At block 404, the process computes a residual density field which compensates the difference between the density field and the RBF model density field residual density field.
At block 406, the process compresses the values of the residual density field. Because the residual density field tends to have small values at most points in the volume space, the entries of the residual density field at points where the residual density field has a value at or below a given threshold may be made zero to result in sparsity. This sparsity may be advantageously used to simplify and speed up the calculations. As will be shown in further detail in the exemplary embodiments described herein, in one embodiment, the residual density field is compressed by performing a spatial hashing on values of the residual density field.
At block 408, the process computes effective exitant radiance at point x in the volume space by taking into account contributions by both the RBF model density field and the residual density field.
At block 410, the process renders an image of the inhomogeneous scattering medium based on the effective exitant radiance.
As will be shown in further detail with exemplary embodiments, the source radiance may be computed by counting the single scattering term only. For more accurate and more realistic rendering, however, the source radiance is preferably computed to include both the single scattering term and multiple scattering terms.
FIG. 5 is a flowchart of another exemplary process of rendering an inhomogeneous scattering medium. In this exemplary process, the RBF model density field may either be an exact representation of the actual density or only an approximation of an actual density. In the latter case, a residual density field may be used to compensate the RBF model density field to more closely simulate the actual density field.
The process 500 starts at block 502 at which a RBF model density field is provided. The RBF model density field is a weighted sum of a set of radial basis functions (RBFs) each having a RBF center. The RBF model density field may be provided in various manners and circumstances. For example, the RBF model density field may have been previously acquired as a result of decomposing an actual density field. The decomposition of the actual density field may either be done in the same process 500 of FIG. 5, or in a different process at a different location by a different party.
At block 504, the process computes single scattering source radiance in the volume space for the RBF model density field. To simplify the computation, single scattering source radiance may be computed at RBF centers first and then interpolated to approximate the source radiance at other points in the volume space.
At block 506, the process computes multiple scattering source radiance in the volume space for the RBF model density field by an iteration initiated with the single scattering source radiance. To simplify the computation, the multiple scattering source radiance may be computed at RBF centers first and then interpolated to approximate the source radiance at other points in the volume space.
At block 508, the process computes effective exitant radiance at point x in the volume space based on the multiple scattering source radiance.
At block 510, the process renders an image of the inhomogeneous scattering medium based on the effective exitant radiance.
The techniques described herein may be used for rendering a variety of inhomogeneous scattering media, and is particularly suitable for rendering smoke in video games in which the smoke is a part of a video or animation having a sequence of renderings of images each rendered at a short time interval (e.g., 1/20 sec to result in 20 frames per second). In such renderings, as many as possible runtime blocks are preferably performed in real time at each time interval. For example, in some embodiments, blocks 110-140 of FIG. 1, blocks 206-210 of FIG. 2, blocks 304-310 of FIG. 3, blocks 404-410 of FIG. 4, and blocks 504-510 of FIG. 5 are performed in real time. Preferably, other blocks may also be performed in real time to enable interactive changing of lighting, viewpoint and scattering parameters. But if unable to be performed in real time, some steps may be precomputed before the rendering.
For computing the single scattering term, a technique is herein described for computing a transmittance vector {tilde over (τ)}(cl) associated with RBF center cl. For example, a spherical harmonic product and a convolution term[(Lin*{tilde over (τ)}(cl))★p] is computed to obtain the single scattering, wherein Lin is a vector representing a spherical harmonic projection of incident radiance Lin, {tilde over (τ)}(cl) is transmittance vector associated with RBF center cl, and p is a vector representing a spherical harmonic projection of phase function p. The notation and further detail are described later with exemplary embodiments.
For computing the source radiance contributed by the multiple scattering, an iteration techniques using a recursive formula is herein described in which a nth order scattering term (n≧1) is first computed, and a (n+1)th order scattering term is then computed based on the previously computed nth order scattering term. In one embodiment, a first order, second order . . . , nth order, and (n+1)th scattering terms are computed reiteratively, until the last scattering term has a magnitude below a user-specified threshold, or a user-specified number of iterations has been reached.
Once the source radiance(s) are obtained, the effective exitant radiance (blocks 108, 208, 308, 408 and 508) may be obtained using a variety of suitable techniques. In one embodiment, a ray marching technique is used to accomplish this. The ray marching technique decomposes the volume space into N (≧2) slices of a user-controllable thickness Δu stacking along a current view direction, and calculates slice by slice a discrete integral of the source radiance arriving at the point x along the current view direction to obtain the effective exitant radiance.
The above-described analytical framework may be implemented with the help of a computing device, such as a personal computer (PC) or a game console.
FIG. 6 shows an exemplary environment for implementing the method for rendering inhomogeneous scattering media. The system 600 is based on a computing device 602 which includes display 610, computer readable medium 620, processor(s) 630, and I/O devices 640. Program modules 650 are implemented with the computing device 600. Program modules 650 contains instructions which, when executed by a processor(s), cause the processor(s) to perform actions of a process described herein (e.g., the processes of FIGS. 1-5) for rendering an inhomogeneous scattering medium.
For example, in one embodiment, computer readable medium 620 has stored thereupon a plurality of instructions that, when executed by one or more processors 630, causes the processor(s) 630 to:
(a) compute a value of source radiance of a density field of an inhomogeneous scattering medium at each of a plurality of radial basis function (RBF) centers, wherein the density field is at least approximately represented by a weighted sum of a set of radial basis functions (RBFs) each having one of the plurality of RBF centers;
(b) approximate values of the source radiance at other points in the volume space by interpolating from the values of the source radiance at the RBF centers;
(c) compute an effective exitant radiance at point x in the volume space at least partially based on the source radiance; and
(d) render an image of the inhomogeneous scattering medium based on the effective exitant radiance.
In one embodiment, the RBF model density field is an approximation of the density field of the inhomogeneous scattering medium, and the above step (c) compensates the effective exitant radiance by taking into account a contribution of a residual density field. The residual density field compensates for the difference between the density field and the RBF model density field.
In one embodiment, the inhomogeneous scattering medium is a part of a video or animation. At least some runtime components, such as the above steps (c) and (d) are performed in real time at each time interval during a runtime. Preferably, other blocks may also be performed in real time to enable interactive changing of lighting, viewpoint and scattering parameters.
To accomplish real-time rendering, processor(s) 630 preferably include both a central processing unit (CPU) and a graphics processing unit (GPU). For speedier rendering, as many as runtime components (such as the above steps (c) and (d)) are preferably implemented with the GPU.
It is appreciated that the computer readable media may be any of the suitable memory devices for storing computer data. Such memory devices include, but not limited to, hard disks, flash memory devices, optical data storages, and floppy disks. Furthermore, the computer readable media containing the computer-executable instructions may consist of component(s) in a local system or components distributed over a network of multiple remote systems. The data of the computer-executable instructions may either be delivered in a tangible physical memory device or transmitted electronically.
It is also appreciated that a computing device may be any device that has a processor, an I/O device and a memory (either an internal memory or an external memory), and is not limited to a personal computer. For example, a computer device may be, without limitation, a PC, a game console, a set top box, and a computing unit built in another electronic device such as a television, a display, a printer or a digital camera.
Algorithms and Exemplary Embodiments
Further detail of the techniques for rendering an inhomogeneous scattering medium is described below with theoretical background of the algorithms and exemplary embodiments. The techniques described herein are particularly suitable for real-time rendering of smoke in a low-frequency environment light, as illustrated below.
NOTATION AND BACKGROUND
TABLE 1 lists the notation used in this description.







TABLE 1





Notation


















x
A point in the 3D volume space



s, ω
Direction



xω
A point where light enters the medium




along direction ω



ωi, ω0
Incident, exitant radiance direction



S
Sphere of directions



D(x)
Medium (smoke) density



{tilde over (D)}(x)
Model density field or approximation density



R(x)
Residual density



σt
Extinction cross section



σs
Scattering cross section



Ω
Single-scattering albedo, computed as σs/σt



κt(x)
Extinction coefficient, computed as σtD(x)



τ(u, x)
Transmittance from u to x,








  computed
  ⁢
  
    
  
  ⁢
  as
  ⁢
  
    
  
  ⁢
  
    exp
    (
    
      -
      
        
          ∫
          u
          x
        
        ⁢
        
          
            
              κ
              t
            
            ⁡
            
              (
              v
              )
            
          
          ⁢
          
            
          
          ⁢
          
            d
            v
          
        
      
    
    )
  







 



τ∞(x, ω)
Transmittance from infinity to x from








  
    direction
    ⁢
    
      
    
    ⁢
    ω
  
  ,
  
    computed
    ⁢
    
      
    
    ⁢
    as
    ⁢
    
      
    
    ⁢
    
      exp
      (
      
        -
        
          
            ∫
            x
            
              ∞
              ω
            
          
          ⁢
          
            
              
                κ
                t
              
              ⁡
              
                (
                v
                )
              
            
            ⁢
            
              
            
            ⁢
            
              d
              v
            
          
        
      
      )
    
  







 



Lin(ω)
Environment map



Lout(x, ω)
Exitant (outgoing) radiance



Ld
Reduced incident radiance



Lm
Medium radiance



J(x, ω)
Source radiance



Jss
Source radiance contributed by single scattering



Jms
Source radiance contributed by multiple scattering



p(ω0, ωi)
Phase function



y(s)
Set of spherical harmonic basis functions



yi(s), ylm(s)
Spherical harmonic basis function



fi, flm
Spherical harmonic coefficient vector










In this description, the lighting is represented as a low-frequency environment map Lin, described by a vector of spherical harmonic coefficients Lin. A sequence of density fields is used to model the input smoke animation. At each frame, the smoke density is denoted as D(x).
The light transport in scattering media and operations on spherical harmonics are first described below.
Light Transport in Scattering Media—To describe light transport in scattering media, several radiance quantities are utilized, which are defined as in Cerezo, E., et al., “A Survey on Participating Media Rendering Techniques”, the Visual Computer 21, 5, 303-328, 2005.
FIG. 7 is a diagrammatic illustration of light transport in smoke. As shown in FIG. 7, the exitant radiance at a point x is composed of the reduced incident radiance Ld and the medium radiance Lm:

Lout(x,ωo)=Ld(x,ωo)+Lm(x,ωo).

The reduced incident radiance represents incident radiance Lin along direction ωo that has been attenuated by the medium before arriving at x:

Ld(x,ωo)=τ∞(x,ωo)Lin(ωo).   (1)

The medium radiance Lm is the integration of the source radiance J that arrives at x along direction ωo from points within the medium:




  
    
      L
      m
    
    ⁡
    
      (
      
        x
        ,
        
          ω
          o
        
      
      )
    
  
  =
  
    
      ∫
      
        x
        
          ω
          o
        
      
      x
    
    ⁢
    
      
        τ
        ⁡
        
          (
          
            u
            ,
            x
          
          )
        
      
      ⁢
      
        σ
        t
      
      ⁢
      
        D
        ⁡
        
          (
          u
          )
        
      
      ⁢
      
        J
        ⁡
        
          (
          
            u
            ,
            
              ω
              o
            
          
          )
        
      
      ⁢
      
        
          d
          u
        
        .
      
    
  




In non-emissive media such as smoke, this source radiance J is composed of a single scattering Jss and multiple scattering Jms component:

J(u,ωo)=Jss(u,ωo)+Jms(u,ωo).

The single scattering term, Jss, represents the first scattering interaction of the reduced incident radiance:




  
    
      
        
          
            J
            ss
          
          ⁡
          
            (
            
              u
              ,
              
                ω
                o
              
            
            )
          
        
        =
        
          
            Ω
            
              4
              ⁢
              π
            
          
          ⁢
          
            
              ∫
              S
            
            ⁢
            
              
                
                  L
                  d
                
                ⁡
                
                  (
                  
                    u
                    ,
                    
                      ω
                      i
                    
                  
                  )
                
              
              ⁢
              
                p
                ⁡
                
                  (
                  
                    
                      ω
                      o
                    
                    ,
                    
                      ω
                      i
                    
                  
                  )
                
              
              ⁢
              
                
                  d
                  
                    ω
                    i
                  
                
                .
              
            
          
        
      
    
    
      
        (
        2
        )
      
    
  




The multiple scattering term, Jms, accounts for scattering of the medium radiance:




  
    
      
        
          
            J
            ms
          
          ⁡
          
            (
            
              u
              ,
              
                ω
                o
              
            
            )
          
        
        =
        
          
            Ω
            
              4
              ⁢
              π
            
          
          ⁢
          
            
              ∫
              S
            
            ⁢
            
              
                
                  L
                  m
                
                ⁡
                
                  (
                  
                    u
                    ,
                    
                      ω
                      i
                    
                  
                  )
                
              
              ⁢
              
                p
                ⁡
                
                  (
                  
                    
                      ω
                      o
                    
                    ,
                    
                      ω
                      i
                    
                  
                  )
                
              
              ⁢
              
                
                  d
                  
                    ω
                    i
                  
                
                .
              
            
          
        
      
    
    
      
        (
        3
        )
      
    
  




Spherical Harmonics—Low-frequency spherical functions can be efficiently represented in terms of spherical harmonics (SHs). A spherical function ƒ(s) can be projected onto a basis set y(s) to obtain a vector f that represents its low-frequency components:

f=∫sƒ(s)y(s)ds.   (4)

An order-n SH projection has n2 vector coefficients. With these coefficients, one can reconstruct a spherical function {tilde over (ƒ)}(s) that approximates ƒ(s):




  
    
      
        
          
            f
            ~
          
          ⁡
          
            (
            s
            )
          
        
        =
        
          
            
              ∑
              
                i
                =
                0
              
              
                
                  n
                  2
                
                -
                1
              
            
            ⁢
            
              
                f
                i
              
              ⁢
              
                
                  y
                  i
                
                ⁡
                
                  (
                  s
                  )
                
              
            
          
          =
          
            f
            ·
            
              
                y
                ⁡
                
                  (
                  s
                  )
                
              
              .
            
          
        
      
    
    
      
        (
        5
        )
      
    
  




The SH triple product, denoted by f*g, represents the order-n projected result of multiplying the reconstructions of two order-n vectors:




  
    
      f
      *
      g
    
    =
    
      
        
          
            ∫
            S
          
          ⁢
          
            
              f
              ⁡
              
                (
                s
                )
              
            
            ⁢
            
              g
              ⁡
              
                (
                s
                )
              
            
            ⁢
            
              y
              ⁡
              
                (
                s
                )
              
            
            ⁢
            
              d
              s
            
          
        
        ⇒
        
          
            (
            
              f
              *
              g
            
            )
          
          i
        
      
      =
      
        
          ∑
          
            j
            ,
            k
          
        
        ⁢
        
          
            Γ
            ijk
          
          ⁢
          
            f
            j
          
          ⁢
          
            g
            k
          
        
      
    
  
  ,




where the SH triple product tensor Γijk is defined as

Γijk=∫syi(s)yj(s)yk(s)ds. 

Γijk is symmetric, sparse, and of order 3.
SH convolution, denoted by f ★ g, represents the order-n projected result of convolving the reconstructions of two order-n vectors:




  
    
      f
      *
      g
    
    =
    
      
        
          
            ∫
            S
          
          ⁢
          
            
              ∫
              S
            
            ⁢
            
              
                f
                ⁡
                
                  (
                  t
                  )
                
              
              ⁢
              
                g
                ⁡
                
                  (
                  
                    
                      R
                      s
                    
                    ⁡
                    
                      (
                      t
                      )
                    
                  
                  )
                
              
              ⁢
              
                y
                ⁡
                
                  (
                  s
                  )
                
              
              ⁢
              
                d
                t
              
              ⁢
              
                d
                s
              
            
          
        
        ⇒
        
          
            (
            
              f
              *
              g
            
            )
          
          l
          m
        
      
      =
      
        
          
            
              4
              ⁢
              π
            
            
              
                2
                ⁢
                l
              
              +
              1
            
          
        
        ⁢
        
          f
          l
          m
        
        ⁢
        
          g
          l
          0
        
      
    
  
  ,




where g(s) is a circularly symmetric function, and Rs is a rotation along the elevation angle towards direction s (i.e., the angle between the positive z-axis and direction s).
SH exponentiation, denoted by exp*(f), represents the order-n projected result of the exponential of a reconstructed order-n vector:

exp*(f)=∫s exp(ƒ(s))y(s)ds. 

This can be efficiently calculated on the GPU using the optimal linear approximation:




  
    
      exp
      *
      
        (
        f
        )
      
    
    ≈
    
      
        exp
        (
        
          
            f
            0
          
          
            
              4
              ⁢
              π
            
          
        
        )
      
      ⁢
      
        (
        
          
            
              a
              (
              
                
                
                  f
                  ^
                
                
              
              )
            
            ⁢
            1
          
          +
          
            
              b
              (
              
                
                
                  f
                  ^
                
                
              
              )
            
            ⁢
            
              f
              ^
            
          
        
        )
      
    
  
  ,




where {circumflex over (f)}=(0,f1,f2, . . . ,fn2−1), 1=(√{square root over (4π)}, 0,0, . . . ,0), and a, b are tabulated functions of the magnitude of input vector {circumflex over (f)}.
The above notation and background forms a basis for the algorithms described below.
THE ALGORITHMS
The approach illustrated herein consists of a preprocessing step and a runtime rendering algorithm.
Preprocessing—Before the runtime rendering, an input density field is first processed using approximation, an example of which is illustrated in FIG. 8.
FIG. 8 is an illustration of density field approximation using a residual density field. Original volume density D(x) 802 is shown to be the sum of RBF model density field (RBF approximation) {tilde over (D)}(x) 804 and residual density R(x) 806, which is scaled by sixteen times for better viewing. Residual density R(x) 806 has both positive residuals is negative residuals.
The ordinal density field D(x) is first decomposed into a weighted sum of RBFs Bl(x) and a residual R(x):




  
    D
    ⁡
    
      (
      x
      )
    
  
  =
  
    
      
        
          D
          ~
        
        ⁡
        
          (
          x
          )
        
      
      +
      
        R
        ⁡
        
          (
          x
          )
        
      
    
    =
    
      
        
          ∑
          l
        
        ⁢
        
          
            ω
            l
          
          ⁢
          
            
              B
              l
            
            ⁡
            
              (
              x
              )
            
          
        
      
      +
      
        
          R
          ⁡
          
            (
            x
            )
          
        
        .
      
    
  




Each RBF Bl(x) is defined by its center cl and radius rl:

Bl(x)=G(∥x−cl∥,rl),

where G(t,λ) is a radial basis function. An exemplary radio basis function suitable for the above decomposition is:




  
    G
    ⁡
    
      (
      
        t
        ,
        λ
      
      )
    
  
  =
  
    {
    
      
        
          
            
              1
              -
              
                
                  22
                  ⁢
                  
                    t
                    2
                  
                
                
                  9
                  ⁢
                  
                    λ
                    2
                  
                
              
              +
              
                
                  17
                  ⁢
                  
                    t
                    4
                  
                
                
                  9
                  ⁢
                  
                    λ
                    4
                  
                
              
              -
              
                
                  4
                  ⁢
                  
                    t
                    6
                  
                
                
                  9
                  ⁢
                  
                    λ
                    6
                  
                
              
            
            ,
          
        
        
          
            
              ift
              ≤
              λ
            
            ;
          
        
      
      
        
          
            0
            ,
          
        
        
          
            otherwise
            .
          
        
      
    
  




These RBFs are approximately Gaussian in shape, have local support, and are C1 continuous.
The RBF model density field {tilde over (D)}(x) represents a low-frequency approximation of the smoke density field. In general, the residual density R(x) contains a relatively small number of significant values. To promote compression, the values of R(x) below a given threshold may be made to zero, such that the residual becomes sparse.
Runtime—In a participating media simulation, the computational expense mainly lies in the evaluation of source radiances J from the density field D. To expedite this process, an approximation {tilde over (J)} of the source radiances from the RBF model {tilde over (D)} of the density field may be computed. In one specific embodiment, {tilde over (J)} due to single and multiple scattering at only the RBF centers cl is computed as follows:

{tilde over (J)}(cl)={tilde over (J)}ss(cl)+{tilde over (J)}ms(cl).

The source radiance at any point x in the medium may be interpolated from {tilde over (J)}(cl) due to single and multiple scattering at only the RBF centers cl. An exemplary interpolation is to approximate the source radiance at any point x as a weighted combination of the source radiances at these centers:




  
    
      J
      ⁡
      
        (
        
          x
          ,
          
            ω
            o
          
        
        )
      
    
    ≈
    
      
        J
        ~
      
      ⁡
      
        (
        
          x
          ,
          
            ω
            o
          
        
        )
      
    
  
  =
  
    
      1
      
        
          D
          ~
        
        ⁡
        
          (
          x
          )
        
      
    
    ⁢
    
      
        ∑
        l
      
      ⁢
      
        
          ω
          l
        
        ⁢
        
          
            B
            l
          
          ⁡
          
            (
            x
            )
          
        
        ⁢
        
          
            
              J
              ~
            
            ⁡
            
              (
              
                
                  c
                  l
                
                ,
                
                  ω
                  o
                
              
              )
            
          
          .
        
      
    
  




The single scattering and multiple scattering source radiances in a smoke volume may be used as a rough approximation to render images of the medium (smoke). For volumetric rendering, source radiances (single scattering and/or multiple scattering) are integrated along the view ray for the final rendering. In some embodiments, ray marching method as described herein may be used for such integration after computation of source radiances. The ray marching process is to compute the medium radiance Lm(x,ωo) by gathering radiance contributions towards the viewpoint. The medium radiance Lm(x,ωo) is further used to compute the final exitant radiance Lout(x,ωo). Further detail of the ray marching process is discussed in a later section of this description.
In computing the medium radiance Lm(x,ωo), various degrees of approximation may be taken. A basic level (zero order) approximation is to take component {tilde over (L)}m computed from the approximated source radiances {tilde over (J)} and the RBF density model as the medium radiance Lm(x,ωo). At high levels of approximation, radiance contributions including the component {tilde over (L)}m and a component {tilde over (C)}m that compensates for the density field residual may be taken into account:




   
  
    
      
        
          
            
              
                
                  
                    L
                    m
                  
                  ⁡
                  
                    (
                    
                      x
                      ,
                      
                        ω
                        o
                      
                    
                    )
                  
                
                ≈
                
                ⁢
                
                  
                    
                      
                        L
                        ~
                      
                      m
                    
                    ⁡
                    
                      (
                      
                        x
                        ,
                        
                          ω
                          o
                        
                      
                      )
                    
                  
                  +
                  
                    
                      
                        C
                        ~
                      
                      m
                    
                    ⁡
                    
                      (
                      
                        x
                        ,
                        
                          ω
                          o
                        
                      
                      )
                    
                  
                
              
            
          
          
            
              
                =
                
                ⁢
                
                  
                    
                      ∑
                      
                        j
                        =
                        1
                      
                      N
                    
                    ⁢
                    
                      
                        
                          τ
                          ~
                        
                        ⁡
                        
                          (
                          
                            
                              x
                              j
                            
                            ,
                            x
                          
                          )
                        
                      
                      ⁢
                      
                        σ
                        t
                      
                      ⁢
                      
                        
                          D
                          ~
                        
                        ⁡
                        
                          (
                          
                            x
                            j
                          
                          )
                        
                      
                      ⁢
                      
                        
                          J
                          ~
                        
                        ⁡
                        
                          (
                          
                            
                              x
                              j
                            
                            ,
                            
                              ω
                              o
                            
                          
                          )
                        
                      
                    
                  
                  +
                
              
            
          
          
            
              
                
                ⁢
                
                  
                    
                      ∑
                      
                        j
                        =
                        1
                      
                      N
                    
                    ⁢
                    
                      
                        
                          τ
                          ~
                        
                        ⁡
                        
                          (
                          
                            
                              x
                              j
                            
                            ,
                            x
                          
                          )
                        
                      
                      ⁢
                      
                        σ
                        t
                      
                      ⁢
                      
                        R
                        ⁡
                        
                          (
                          
                            x
                            j
                          
                          )
                        
                      
                      ⁢
                      
                        
                          J
                          ~
                        
                        ⁡
                        
                          (
                          
                            
                              x
                              j
                            
                            ,
                            
                              ω
                              o
                            
                          
                          )
                        
                      
                    
                  
                  ,
                
              
            
          
        
      
      
        
          (
          6
          )
        
      
    
  




where {tilde over (τ)} denotes transmittance values computed from {tilde over (D)}, and xj indexes a set of N uniformly distributed points between xωo and x. The above approximation described in equation (6) may be seen as a first order approximation.
The compensation term {tilde over (C)}m brings into the ray march the extinction effects of the density residuals, resulting in a significant improvement over the zero order approximation. Theoretically, transmittance X computed from exact density D (rather than the approximate transmittance {tilde over (τ)} computed from the RBF approximate density {tilde over (D)}) and the exact source radiance J (rather than the approximate source radiance {tilde over (J)}) may be used for an even higher order of approximation. However, the improvement over the first order approximation may not worth the increased computational cost.
Due to its size, a density field D cannot in general be effectively processed on the GPU. However, the decomposition of a density field into an RBF approximation and a residual field leads to a considerable reduction in data size. Because of its sparsity, it is observed that the residual can be highly compressed using hashing such as the perfect spatial hashing technique. In addition to providing manageable storage costs, perfect spatial hashing also offers fast reconstruction of the residual in the ray march. By incorporating high-frequency smoke details in this manner, high-quality smoke renderings can be generated.
With the above formulation, it is possible to obtain real-time performance with high visual fidelity by accounting for the cumbersome residual field only where it has a direct impact on Eq. (6), namely, in the smoke density values. For these smoke densities, the residual can be efficiently retrieved from the hash table using perfect spatial hashing. In the other factors of Eq. (6), the residual has only an indirect effect and also cannot be rapidly accounted for. Therefore, some embodiments may exclude the residuals from computations of source radiances and transmittances to significantly simplify and speed up processing without causing significant degradation of smoke appearance, as will be shown in the next section.
FURTHER ALGORITHM DETAIL
Density Field Approximation—Given the number n of RBFs, an optimal approximation of the smoke density field may be computed by solving the following minimization problem:




  
    
      
        
          
            min
            
              
                c
                l
              
              ,
              
                r
                l
              
              ,
              
                ω
                l
              
            
          
          ⁢
          
            (
            
              
                ∑
                
                  j
                  ,
                  k
                  ,
                  l
                
              
              ⁢
              
                
                  [
                  
                    
                      D
                      ⁡
                      
                        (
                        
                          x
                          jkl
                        
                        )
                      
                    
                    -
                    
                      
                        ∑
                        
                          l
                          =
                          1
                        
                        n
                      
                      ⁢
                      
                        
                          ω
                          l
                        
                        ⁢
                        
                          
                            B
                            l
                          
                          ⁡
                          
                            (
                            
                              x
                              jkl
                            
                            )
                          
                        
                      
                    
                  
                  ]
                
                2
              
            
            )
          
        
        ,
      
    
    
      
        (
        7
        )
      
    
  




where (j, k, l) indexes a volumetric grid point at position xjkl. For optimization, the algorithm may employ the L-BFGS-B minimizer, which has been used by others to fit spherical RBFs to a lighting environment, and to fit zonal harmonics to a radiance transfer function.
Since L-BFGS-B is a derivative-based method, at each iteration one needs to provide the minimizer with the objective function and the partial derivatives for each variable. For the objective function




  
    
      f
      ⁡
      
        (
        
          
            {
            
              
                c
                l
              
              ,
              
                r
                l
              
              ,
              
                ω
                l
              
            
            }
          
          
            l
            =
            
              1
              ⁢
              
                
              
              ⁢
              ...
              ⁢
              
                
              
              ⁢
              n
            
          
        
        )
      
    
    =
    
      
        ∑
        
          j
          ,
          k
          ,
          l
        
      
      ⁢
      
        
          (
          
            
              D
              ⁡
              
                (
                
                  x
                  jkl
                
                )
              
            
            -
            
              
                D
                ~
              
              ⁡
              
                (
                
                  x
                  jkl
                
                )
              
            
          
          )
        
        2
      
    
  
  ,




the partial derivatives for each parameter are given by




  
    
      ∂
      f
    
    
      ∂
      v
    
  
  =
  
    
      ∑
      
        j
        ,
        k
        ,
        l
      
    
    ⁢
    
      2
      ⁢
      
        (
        
          
            D
            ⁡
            
              (
              
                x
                jkl
              
              )
            
          
          -
          
            
              D
              ~
            
            ⁡
            
              (
              
                x
                jkl
              
              )
            
          
        
        )
      
      ⁢
      
        (
        
          -
          
            
              ∂
              
                D
                ~
              
            
            
              ∂
              v
            
          
        
        )
      
    
  




where v denotes a variable in {cl,rl,wl}l=1 . . . n. The partial derivatives of {tilde over (D)} with respect to each variable are




  
    
      
        ∂
        
          D
          ~
        
      
      
        ∂
        
          c
          l
        
      
    
    =
    
      
        ω
        l
      
      (
      
        
          
            44
            ⁢
            
              Δ
              l
            
          
          
            9
            ⁢
            
              r
              l
              2
            
          
        
        -
        
          
            68
            ⁢
            
              Δ
              l
            
            ⁢
            
              
                
                
                  Δ
                  l
                
                
              
              2
            
          
          
            9
            ⁢
            
              r
              l
              4
            
          
        
        +
        
          
            8
            ⁢
            
              Δ
              l
            
            ⁢
            
              
                
                
                  Δ
                  l
                
                
              
              4
            
          
          
            3
            ⁢
            
              r
              l
              6
            
          
        
      
      )
    
  
  ,
  
    

  
  ⁢
  
    
      
        ∂
        
          D
          ~
        
      
      
        ∂
        
          r
          l
        
      
    
    =
    
      
        ω
        l
      
      (
      
        
          
            44
            ⁢
            
              
                
                
                  Δ
                  l
                
                
              
              2
            
          
          
            9
            ⁢
            
              r
              l
              3
            
          
        
        -
        
          
            68
            ⁢
            
              
                
                
                  Δ
                  l
                
                
              
              4
            
          
          
            9
            ⁢
            
              r
              l
              5
            
          
        
        +
        
          
            8
            ⁢
            
              
                
                
                  Δ
                  l
                
                
              
              6
            
          
          
            3
            ⁢
            
              r
              l
              7
            
          
        
      
      )
    
  
  ,
  
    

  
  ⁢
  
    
      
        ∂
        
          D
          ~
        
      
      
        ∂
        
          w
          l
        
      
    
    =
    
      G
      ⁡
      
        (
        
          
            
            
              Δ
              l
            
            
          
          ,
          
            r
            l
          
        
        )
      
    
  
  ,
  
    

  
  ⁢
  
    
      where
      ⁢
      
        
      
      ⁢
      
        Δ
        l
      
    
    =
    
      
        x
        jkl
      
      -
      
        
          c
          l
        
        .
      
    
  




Evaluation of these quantities requires iterating over all voxels in the volume, 1003-1283 for the examples in this paper. To reduce computation, one may take advantage of the sparsity of the smoke data by processing only voxels within the support range of an RBF. To avoid entrapment in local minima at early stages of the algorithm, one may also employ a teleportation scheme, where the algorithm records the location of the maximum error during the approximation procedure and then moves the most insignificant basis function there. In one example, teleportations are utilized at every 20 iterations of the minimizer, and when the minimizer converges the most insignificant RBF is teleported alternatingly to the location of maximum error or to a random location with non-zero data. The inclusion of teleportation into the minimization process often leads to a further reduction of the objective function by 20%-30%.
Depending on the smoke density distribution in each frame, a different number n of RBFs may be utilized to provide a balance between accuracy and efficiency. One exemplary embodiment starts with a large number (1000) of RBFs in each frame, then after optimization by Eq. (7) merges RBFs that are in close proximity. For example, Bl and Bh are merged together if their centers satisfy the condition ∥cl−ch∥<ε. The center of the new RBF is then taken as the midpoint between cl and ch. After this merging process, fix the RBF centers and optimize again with respect to only rl and wl. In one exemplary implementation, ε is set to 2Δ, where Δ is the distance between neighboring grid points in the volume.
To accelerate this process, one exemplary embodiment takes advantage of the temporal coherence in smoke animations by initializing the RBFs of a frame with the optimization result of the preceding frame before merging. For the first frame, the initialization is generated randomly.
Residual Field Compression—After computing the RBF approximation of the density field, the residual density field R(x)=D(x)−{tilde over (D)}(x) may be compressed for faster GPU processing. While the residual field is of the same resolution as the density field, it normally consists of small values. Entries in R(x) below a given threshold (e.g., 0.005-0.01) may be made zero, and the resulting sparse residual field is compressed using a hashing technique such as the perfect spatial hashing, which is lossless and ideally suited for parallel evaluation on graphics hardware.
One exemplary implementation of perfect spatial hashing utilizes a few modifications tailored to rendering inhomogeneous scattering media. Unlike in some cases where nonzero values in the data lie mostly along the surface of a volume, the nonzero values in the residual fields for smoke may be distributed throughout the volume. Larger offset tables are therefore needed, and as a result the initial table size is set to an exemplary




  
    
      K
      /
      3
    
    3
  
  +
  9




(K is the number of nonzero items in the volume), instead of





  
    K
    /
    6
  
  3




used by others.

One exemplary technique for processing a sequence of residual fields is to tile several consecutive frames into a larger volume on which hashing is conducted. Since computation is nonlinear to the number of domain slots, it may be advantageous to construct a set of smaller hash volumes instead of tiling all the frames into a single volume. With smaller hash volumes, the technique may also avoid the precision problems that arise in decoding the domain coordinates of large packed volumes. In one exemplary implementation, 33=27 frames per volume are tiled.
Single Scattering—To promote runtime performance, source radiance values in the smoke volume may be calculated using {tilde over (D)}, the low-frequency RBF approximation of the density field. For example, single scattering at the RBF centers may be computed according to Eq. (2):




   
  
    
      
        
          
            
              
                
                  
                    
                      J
                      ~
                    
                    ss
                  
                  ⁡
                  
                    (
                    
                      
                        c
                        l
                      
                      ,
                      
                        ω
                        o
                      
                    
                    )
                  
                
                =
                
                  
                    Ω
                    
                      4
                      ⁢
                      π
                    
                  
                  ⁢
                  
                    
                      ∫
                      S
                    
                    ⁢
                    
                      
                        
                          
                            L
                            ~
                          
                          d
                        
                        ⁡
                        
                          (
                          
                            
                              c
                              l
                            
                            ,
                            
                              ω
                              i
                            
                          
                          )
                        
                      
                      ⁢
                      
                        p
                        ⁡
                        
                          (
                          
                            
                              ω
                              o
                            
                            ,
                            
                              ω
                              i
                            
                          
                          )
                        
                      
                      ⁢
                      
                        d
                        
                          ω
                          i
                        
                      
                    
                  
                
              
            
          
          
            
              
                
                  =
                  
                    
                      Ω
                      
                        4
                        ⁢
                        π
                      
                    
                    ⁢
                    
                      
                        ∫
                        S
                      
                      ⁢
                      
                        
                          
                            L
                            in
                          
                          ⁡
                          
                            (
                            
                              ω
                              i
                            
                            )
                          
                        
                        ⁢
                        
                          
                            
                              τ
                              ~
                            
                            ∞
                          
                          ⁡
                          
                            (
                            
                              
                                c
                                l
                              
                              ,
                              
                                ω
                                i
                              
                            
                            )
                          
                        
                        ⁢
                        
                          p
                          ⁡
                          
                            (
                            
                              
                                ω
                                o
                              
                              ,
                              
                                ω
                                i
                              
                            
                            )
                          
                        
                        ⁢
                        
                          d
                          
                            ω
                            i
                          
                        
                      
                    
                  
                
                ,
              
            
          
        
      
      
        
          (
          8
          )
        
      
    
  




where




  
    
      
        τ
        ~
      
      ∞
    
    ⁡
    
      (
      
        
          c
          l
        
        ,
        
          ω
          i
        
      
      )
    
  
  =
  
    exp
    ⁡
    
      (
      
        -
        
          
            ∫
            
              c
              l
            
            
              ∞
              
                ω
                i
              
            
          
          ⁢
          
            
              σ
              t
            
            ⁢
            
              
                D
                ~
              
              ⁡
              
                (
                u
                )
              
            
            ⁢
            
              d
              u
            
          
        
      
      )
    
  




is the approximated transmittance along direction ωi from infinity to cl.

In scattering media, phase functions are often well-parameterized by the angle θ between the incoming and outgoing directions. For computational convenience, one may therefore rewrite p(ωo,ωi) as a circularly symmetric function p(z), where z=cos θ. With this reparameterization of the phase function, Eq. (8) can be efficiently computed using the SH triple product and convolution:




  
    
      
        
          
            
              J
              ~
            
            ss
          
          ⁡
          
            (
            
              c
              l
            
            )
          
        
        =
        
          
            
              Ω
              
                4
                ⁢
                π
              
            
            ⁡
            
              [
              
                
                  (
                  
                    
                      L
                      in
                    
                    *
                    
                      
                        τ
                        ~
                      
                      ⁡
                      
                        (
                        
                          c
                          l
                        
                        )
                      
                    
                  
                  )
                
                *
                p
              
              ]
            
          
          .
        
      
    
    
      
        (
        9
        )
      
    
  




Lin and p may be precomputed according to Eq. (4). The transmittance vector {tilde over (τ)}(cl) may be computed on the fly using efficient techniques described as follows.
Computing the transmittance vector {tilde over (τ)}(cl): Expressing transmittance directly in terms of the RBFs, one has




   
  
    
      
        
          
            
              τ
              ~
            
            ⁡
            
              (
              
                
                  c
                  l
                
                ,
                
                  ω
                  i
                
              
              )
            
          
          =
          
            exp
            (
            
              
                -
                
                  σ
                  t
                
              
              ⁢
              
                
                  ∑
                  h
                
                ⁢
                
                  
                    w
                    h
                  
                  ⁢
                  
                    
                      ∫
                      
                        c
                        l
                      
                      
                        ∞
                        
                          ω
                          i
                        
                      
                    
                    ⁢
                    
                      
                        
                          B
                          h
                        
                        ⁡
                        
                          (
                          u
                          )
                        
                      
                      ⁢
                      
                        d
                        u
                      
                    
                  
                
              
            
            )
          
        
      
    
    
      
        
          
            =
            
              exp
              (
              
                
                  -
                  
                    σ
                    t
                  
                
                ⁢
                
                  
                    ∑
                    h
                  
                  ⁢
                  
                    
                      w
                      h
                    
                    ⁢
                    
                      
                        T
                        h
                      
                      ⁡
                      
                        (
                        
                          
                            c
                            l
                          
                          ,
                          
                            ω
                            i
                          
                        
                        )
                      
                    
                  
                
              
              )
            
          
          ,
        
      
    
  




where Th(cl,ωi) is the accumulative optical depth through RBF Bh. {tilde over (τ)}(cl) can then be computed as




  
    
      
        τ
        ~
      
      ⁡
      
        (
        
          c
          l
        
        )
      
    
    =
    
      
        exp
        *
      
      (
      
        
          -
          
            σ
            t
          
        
        ⁢
        
          
            ∑
            h
          
          ⁢
          
            
              w
              h
            
            ⁢
            
              
                T
                h
              
              ⁡
              
                (
                
                  c
                  l
                
                )
              
            
          
        
      
      )
    
  
  ,




where Th(cl) is the SH projection of Th(cl,ωi), and σt is the extinction cross section.
FIG. 9 is a diagram showing an accumulative optical depth of an RBF B. The accumulated optical depth is shown to be determined by the angle β subtended by half the RBF and its absolute radius r. For fast evaluation, the precomputed value for a unit-radius RBF Bu with angle β is retrieved, rotated, and then multiplied by r.
For efficient determination of Th(cl), the accumulative optical depth vector T(β) may be tabulated with respect to angle β, equal to half the subtended angle of a unit-radius RBF Bu as illustrated in FIG. 9. Note that β ranges from 0 to π:




  β
  =
  
    {
    
      
        
          
            
              arccos
              ⁡
              
                (
                
                  1
                  /
                  d
                
                )
              
            
            ,
          
        
        
          
            
              if
              ⁢
              
                
              
              ⁢
              d
            
            >
            1
          
        
      
      
        
          
            
              
                arccos
                ⁡
                
                  (
                  d
                  )
                
              
              +
              
                π
                /
                2
              
            
            ,
          
        
        
          otherwise
        
      
    
  




where d is the distance from cl to the center of Bu. Since the RBF kernel function G is symmetric, this involves a 1D tabulation of zonal harmonic (ZH) vectors.
At runtime, ZH vectors T(βl,h) are retrieved from the table, where βl,h is half the angle subtended by RBF Bh as seen from cl. Th(cl) is then computed by rotating T(βl,h) to the axis determined by cl and ch, followed by a multiplication with the radius rh.
Computation of the transmittance vector {tilde over (τ)}(cl) is then straightforward. For each RBF center, the computation iterates through the RBFs. Their accumulative optical depth vectors are retrieved, rotated, scaled, and summed up to yield the total optical depth vector. Finally, the accumulative optical depth is multiplied by the negative extinction cross section σt and exponentiated to yield the transmittance vector {tilde over (τ)}(cl). With this transmittance vector, the source radiance due to single scattering is computed from Eq. (9).
The single scattering approximation yields results similar to those obtained from ray tracing. For a clearer comparison, ray tracing was performed with the approximated density field {tilde over (D)}(x), and compared with the single scattering result. In rendering the single scattering image, the ray marching algorithm described in a later section of the present description is used but without accounting for the residual.
Multiple Scattering—Source radiance Jms due to multiple scattering is expressed in Eq. (3). In evaluating Jms, one exemplary approach is to first group light paths by the number of scattering events they include:

Jms(x,ωo)=Jms2(x,ωo)+Jms3(x,ωo)+ . . . .

Jmsk represents source radiance after k scattering events, computed from medium radiance that has scattered k−1 times:



  
    
      
        
          J
          ms
          k
        
        ⁡
        
          (
          
            x
            ,
            
              ω
              o
            
          
          )
        
      
      =
      
        
          Ω
          
            4
            ⁢
            π
          
        
        ⁢
        
          
            ∫
            S
          
          ⁢
          
            
              
                L
                m
                
                  k
                  -
                  1
                
              
              ⁡
              
                (
                
                  x
                  ,
                  
                    ω
                    i
                  
                
                )
              
            
            ⁢
            
              p
              ⁡
              
                (
                
                  
                    ω
                    o
                  
                  ,
                  
                    ω
                    i
                  
                
                )
              
            
            ⁢
            
              d
              
                ω
                i
              
            
          
        
      
    
    ,
    
      

    
    ⁢
    where
  




  
    
      
        L
        m
        
          k
          -
          1
        
      
      ⁡
      
        (
        
          x
          ,
          
            ω
            o
          
        
        )
      
    
    =
    
      
        ∫
        
          x
          
            ω
            o
          
        
        x
      
      ⁢
      
        
          τ
          ⁡
          
            (
            
              u
              ,
              x
            
            )
          
        
        ⁢
        
          σ
          t
        
        ⁢
        
          D
          ⁡
          
            (
            u
            )
          
        
        ⁢
        
          
            J
            ms
            
              k
              -
              1
            
          
          ⁡
          
            (
            
              u
              ,
              
                ω
                o
              
            
            )
          
        
        ⁢
        
          
            d
            u
          
          .
        
      
    
  



In this recursive computation, one may use the single scattering source radiance to initialize the procedure:




  
    
      L
      m
      1
    
    ⁡
    
      (
      
        x
        ,
        
          ω
          o
        
      
      )
    
  
  =
  
    
      ∫
      
        x
        
          ω
          o
        
      
      x
    
    ⁢
    
      
        τ
        ⁡
        
          (
          
            u
            ,
            x
          
          )
        
      
      ⁢
      
        σ
        t
      
      ⁢
      
        D
        ⁡
        
          (
          u
          )
        
      
      ⁢
      
        
          J
          ss
        
        ⁡
        
          (
          
            u
            ,
            
              ω
              o
            
          
          )
        
      
      ⁢
      
        
          d
          u
        
        .
      
    
  




Multiple scattering computed above provides a more accurate simulation of the scattering between RBFs than single scattering alone.
In the SH domain, this scheme proceeds as follows. The algorithm first computes at each RBF center the initial radiance distributions from single scattering:



  
    
      
        I
        1
      
      ⁡
      
        (
        
          c
          l
        
        )
      
    
    =
    
      
        L
        in
      
      *
      
        
          τ
          ~
        
        ⁡
        
          (
          
            c
            l
          
          )
        
      
    
  




  
    
      
        
          J
          ~
        
        ms
        1
      
      ⁡
      
        (
        
          c
          l
        
        )
      
    
    =
    
      
        
          
            J
            ~
          
          ss
        
        ⁡
        
          (
          
            c
            l
          
          )
        
      
      =
      
        
          Ω
          
            4
            ⁢
            π
          
        
        ⁢
        
          (
          
            
              
                I
                1
              
              ⁡
              
                (
                
                  c
                  l
                
                )
              
            
            *
            p
          
          )
        
      
    
  




  
    
      
        
          E
          1
        
        ⁡
        
          (
          
            c
            l
          
          )
        
      
      =
      
        
          
            J
            ~
          
          ms
          1
        
        ⁡
        
          (
          
            c
            l
          
          )
        
      
    
    ,
  



where I and E represent incident and exitant radiance, respectively. Then at each iteration k, the three SH vectors are updated according to



  
    
      
        I
        k
      
      ⁡
      
        (
        
          c
          l
        
        )
      
    
    =
    
      H
      ⁡
      
        (
        
          {
          
            
              E
              
                k
                -
                1
              
            
            ⁡
            
              (
              
                c
                h
              
              )
            
          
          }
        
        )
      
    
  




  
    
      
        
          J
          ~
        
        ms
        k
      
      ⁡
      
        (
        
          c
          l
        
        )
      
    
    =
    
      
        
          
            α
            ⁡
            
              (
              
                c
                l
              
              )
            
          
          ⁢
          Ω
        
        
          4
          ⁢
          π
        
      
      ⁢
      
        (
        
          
            
              I
              k
            
            ⁡
            
              (
              
                c
                l
              
              )
            
          
          *
          p
        
        )
      
    
  




  
    
      
        E
        k
      
      ⁡
      
        (
        
          c
          l
        
        )
      
    
    =
    
      
        
          (
          
            1
            -
            
              α
              ⁡
              
                (
                
                  c
                  l
                
                )
              
            
          
          )
        
        ⁢
        
          
            I
            k
          
          ⁡
          
            (
            
              c
              l
            
            )
          
        
      
      +
      
        
          
            
              J
              ~
            
            ms
            k
          
          ⁡
          
            (
            
              c
              l
            
            )
          
        
        .
      
    
  



Intuitively, one may evaluate the incident radiance from the exitant radiance of the preceding iteration using a process H, which will be explained later in detail, then compute the scattered source radiance by convolving the incident radiance with the phase function. Here, α(cl) is the opacity of RBF Bl along its diameter (i.e., the scattering probability of Bl), computed by, for example,




  
    α
    ⁡
    
      (
      
        c
        l
      
      )
    
  
  =
  
    1
    -
    
      
        e
        
          
            -
            1.7
          
          ⁢
          
            
          
          ⁢
          
            σ
            t
          
          ⁢
          
            ω
            l
          
          ⁢
          
            r
            l
          
        
      
      .
    
  




Finally, one may add the scattered source radiance to the transmitted radiance to yield the exitant (outgoing) radiance.

The simulation runs until the magnitude of Ek+1(cl) falls below a user-specified threshold, or until a user-specified number of iterations is reached. In some exemplary implementations, this process typically converges in 5-10 iterations.
Estimation of Incident Radiance Ik(cl): The process H mentioned earlier for estimating incident radiance is explained as follows. To estimate the incident radiance at an RBF center cl, one may consider each of the RBFs in its neighborhood as a light source that illuminates cl, as illustrated in FIG. 10.
FIG. 10 is an illustration of an exemplary multiple scattering simulation for estimation of incident radiance at RBF center c1 of RBF B1.
The illumination from RBF Bh is approximated as that from a uniform spherical light source, whose intensity El,hk−1 in direction cl−ch is reconstructed from the SH vector Ek−1(ch) using Eq. (5):

El,hk−1=Ek−1(ch)·y(s(cl,ch)),

where




  
    s
    ⁡
    
      (
      
        
          c
          l
        
        ,
        
          c
          h
        
      
      )
    
  
  =
  
    
      
        c
        l
      
      -
      
        c
        h
      
    
    
      
      
        
          c
          l
        
        -
        
          c
          h
        
      
      
    
  




represents the direction from ch to cl.

The SH vector for a uniform spherical light source can be represented as a zonal harmonic vector, and tabulated with respect to the angle θ, equal to half the subtended angle by a spherical light source of unit radius. Unlike β in a single scattering, θ ranges from 0 to π/2 such that cl does not lie within a light source. From this precomputed table, one can retrieve the SH vector using the angle θl,h, which is half the angle subtended by RBF Bh as seen from point cl:




  
    θ
    
      l
      ,
      h
    
  
  =
  
    {
    
      
        
          
            
              arcsin
              ⁡
              
                (
                
                  
                    r
                    h
                  
                  /
                  
                    
                    
                      
                        c
                        l
                      
                      -
                      
                        c
                        h
                      
                    
                    
                  
                
                )
              
            
            ,
          
        
        
          
            
              
                if
                ⁢
                
                  
                
                ⁢
                
                  
                  
                    
                      c
                      l
                    
                    -
                    
                      c
                      h
                    
                  
                  
                
              
              >
              
                r
                h
              
            
            ;
          
        
      
      
        
          
            
              π
              /
              2
            
            ,
          
        
        
          
            otherwise
            .
          
        
      
    
  




Note that in FIG. 10, the angle θ1,3 (θ with respect to RBFs B1 and B3) is equal to π/2 because c1 of RBF B1 is located within RBF B3.
The vector is then rotated to direction cl−ch, scale it by min(rh,∥cl−ch∥) to account for RBF radius, and finally multiply it by the intensity El,hk−1 to obtain the SH vector Il,hk.
The incident radiance Ik(cl) at cl is then computed as:

Ik(cl)=Σ∥c−ch∥<ρl{tilde over (τ)}(cl,ch)Il,hk,

where the parameter ρl is used to adjust the neighborhood size. In one exemplary implementation, the default value of ρl is 2rl.
The source radiance for different numbers of scattering events is aggregated to obtain the final source radiance due to multiple scattering: {tilde over (J)}ms(cl)=Σk=2{tilde over (J)}ms(cl). Combining this with the single-scattering component yields the final source radiance:

{tilde over (J)}(cl)={tilde over (J)}ss(cl)+{tilde over (J)}ms(cl).

FIG. 11 is a flowchart of an exemplary GPU pipeline for multiple scattering simulation. This is a GPU implementation of the above-described multiple scattering simulation The detail is further described in a later section for GPU implementation.
The multiple scattering result obtained using the above-described method has been compared with that from the offline algorithm for volumetric photon mapping. Although the algorithm described herein employs several approximations in the multiple scattering simulation, the two results are comparable in terms of image quality. In the comparison, one million photons are used in computing the volume photon map. A forward ray march is then performed to produce the photon map image.
Compensated Ray Marching—From the source radiances at the RBF centers, the source radiance of each voxel in the volume is obtained by interpolation as described herein. With the complete source radiance, one may perform a ray march to composite the radiances along each view ray.
FIG. 12 is an illustration of an exemplary ray marching for radiance integration along view rays. To calculate the radiance of a view ray 1202, all voxels that the view ray 1202 intersects are traversed from back (the side close to the viewpoint 1204) to front (beside opposite to the viewpoint 1204). The initial radiance is set to that of the background. For each voxel traversed, the source radiance of the voxel is first added into the current radiance. The transmittance τ due to the voxel is computed and multiplied with the sum of the source radiance, weighted by the extinction cross section σt and the medium density D at the voxel. This procedure is called compositing.
In compositing the source radiance, various degrees of approximation may be taken. In the most basic (zero order) approximation, the compositing may be based on a pure RBF approximation in which the source radiance, the transmittance and the density are all taken as that of a model RBF density. At the next level (first order) approximation, the density itself is compensated by a residual density while the source radiance and transmittance in which the residual density may only play an indirect role are taken as that of a model RBF density. The first order approximation has proven to have significantly better result than the zero order approximation. Higher orders of approximation may also be taken to result in a further improvement, but the improvement may be much less than the improvement made in the first order approximation and may not be worth the additional computational cost.
An example of ray marching using the above-described first order approximation to composite the source radiance is as follows:




  
    
      
        
          
            
              
                
                  L
                  ⁡
                  
                    (
                    
                      x
                      ,
                      
                        ω
                        o
                      
                    
                    )
                  
                
                =
                
                ⁢
                
                  
                    
                      τ
                      ⁡
                      
                        (
                        
                          
                            x
                            
                              ω
                              o
                            
                          
                          ,
                          x
                        
                        )
                      
                    
                    ⁢
                    
                      
                        L
                        in
                      
                      ⁡
                      
                        (
                        
                          ω
                          o
                        
                        )
                      
                    
                  
                  +
                  
                    
                      ∫
                      
                        x
                        
                          ω
                          o
                        
                      
                      x
                    
                    ⁢
                    
                      
                        τ
                        ⁡
                        
                          (
                          
                            u
                            ,
                            x
                          
                          )
                        
                      
                      ⁢
                      
                        σ
                        t
                      
                      ⁢
                      
                        D
                        ⁡
                        
                          (
                          u
                          )
                        
                      
                      ⁢
                      
                        J
                        ⁡
                        
                          (
                          
                            u
                            ,
                            
                              ω
                              o
                            
                          
                          )
                        
                      
                      ⁢
                      
                        d
                        u
                      
                    
                  
                
              
            
          
          
            
              
                ≈
                
                ⁢
                
                  
                    
                      
                        τ
                        ~
                      
                      ⁡
                      
                        (
                        
                          
                            x
                            
                              ω
                              o
                            
                          
                          ,
                          x
                        
                        )
                      
                    
                    ⁢
                    
                      
                        L
                        in
                      
                      ⁡
                      
                        (
                        
                          ω
                          o
                        
                        )
                      
                    
                  
                  +
                  
                    
                      ∫
                      
                        x
                        
                          ω
                          o
                        
                      
                      x
                    
                    ⁢
                    
                      
                        
                          τ
                          ~
                        
                        ⁡
                        
                          (
                          
                            u
                            ,
                            x
                          
                          )
                        
                      
                      ⁢
                      
                        σ
                        t
                      
                      ⁢
                      
                        D
                        ⁡
                        
                          (
                          u
                          )
                        
                      
                      ⁢
                      
                        
                          J
                          ~
                        
                        ⁡
                        
                          (
                          
                            u
                            ,
                            
                              ω
                              o
                            
                          
                          )
                        
                      
                      ⁢
                      
                        d
                        u
                      
                    
                  
                
              
            
          
          
            
              
                =
                
                ⁢
                
                  
                    
                      
                        τ
                        ~
                      
                      ⁡
                      
                        (
                        
                          
                            x
                            
                              ω
                              o
                            
                          
                          ,
                          x
                        
                        )
                      
                    
                    ⁢
                    
                      
                        L
                        in
                      
                      ⁡
                      
                        (
                        
                          ω
                          o
                        
                        )
                      
                    
                  
                  +
                  
                    
                      ∫
                      
                        x
                        
                          ω
                          o
                        
                      
                      x
                    
                    ⁢
                    
                      
                        
                          τ
                          ~
                        
                        ⁡
                        
                          (
                          
                            u
                            ,
                            x
                          
                          )
                        
                      
                      ⁢
                      
                        σ
                        t
                      
                      ⁢
                      
                        
                          
                            J
                            ~
                          
                          D
                        
                        ⁡
                        
                          (
                          
                            u
                            ,
                            
                              ω
                              o
                            
                          
                          )
                        
                      
                      ⁢
                      
                        d
                        u
                      
                    
                  
                
              
            
          
        
        ⁢
        
          

        
        ⁢
        where
      
    
    
      
        (
        10
        )
      
    
  
  
    
      
        
          
            
              
                
                  
                    J
                    ~
                  
                  D
                
                ⁡
                
                  (
                  
                    u
                    ,
                    
                      ω
                      o
                    
                  
                  )
                
              
              =
              
                
                  D
                  ⁡
                  
                    (
                    u
                    )
                  
                
                ⁢
                
                  
                    J
                    ~
                  
                  ⁡
                  
                    (
                    
                      u
                      ,
                      
                        ω
                        o
                      
                    
                    )
                  
                
              
            
          
        
        
          
            
              =
              
                
                  D
                  ⁡
                  
                    (
                    u
                    )
                  
                
                ⁢
                
                  (
                  
                    
                      
                        y
                        ⁡
                        
                          (
                          
                            ω
                            o
                          
                          )
                        
                      
                      ·
                      
                        1
                        
                          
                            D
                            ~
                          
                          ⁡
                          
                            (
                            u
                            )
                          
                        
                      
                    
                    ⁢
                    
                      
                        ∑
                        l
                      
                      ⁢
                      
                        
                          w
                          l
                        
                        ⁢
                        
                          
                            B
                            l
                          
                          ⁡
                          
                            (
                            u
                            )
                          
                        
                        ⁢
                        
                          
                            J
                            ~
                          
                          ⁡
                          
                            (
                            
                              c
                              l
                            
                            )
                          
                        
                      
                    
                  
                  )
                
              
            
          
        
        
          
            
              =
              
                
                  (
                  
                    1
                    +
                    
                      
                        R
                        ⁡
                        
                          (
                          u
                          )
                        
                      
                      
                        
                          D
                          ~
                        
                        ⁡
                        
                          (
                          u
                          )
                        
                      
                    
                  
                  )
                
                ⁢
                
                  
                    (
                    
                      
                        y
                        ⁡
                        
                          (
                          
                            ω
                            o
                          
                          )
                        
                      
                      ·
                      
                        
                          ∑
                          l
                        
                        ⁢
                        
                          
                            w
                            l
                          
                          ⁢
                          
                            
                              B
                              l
                            
                            ⁡
                            
                              (
                              u
                              )
                            
                          
                          ⁢
                          
                            
                              J
                              ~
                            
                            ⁡
                            
                              (
                              
                                c
                                l
                              
                              )
                            
                          
                        
                      
                    
                    )
                  
                  .
                
              
            
          
        
      
    
    
      
        (
        11
        )
      
    
  




For efficient ray marching, the RBF volumes may be decomposed into N slices 1206 of user-controllable thickness Δu along the current view frustum, as shown in FIG. 12.
The discrete integral of Eq. (10) is calculated slice by slice from back to front:




  
    
      L
      ⁡
      
        (
        
          x
          ,
          
            ω
            o
          
        
        )
      
    
    =
    
      
        
          
            L
            in
          
          ⁡
          
            (
            
              ω
              o
            
            )
          
        
        ⁢
        
          
            ∏
            
              j
              =
              1
            
            N
          
          ⁢
          
            
              τ
              ~
            
            j
          
        
      
      +
      
        
          ∑
          
            i
            =
            1
          
          N
        
        ⁢
        
          (
          
            
              
                
                  J
                  ~
                
                D
              
              ⁡
              
                (
                
                  u
                  i
                
                )
              
            
            ⁢
            
              σ
              t
            
            ⁢
            Δ
            ⁢
            
              
            
            ⁢
            u
            ⁢
            
              
                ∏
                
                  j
                  =
                  
                    i
                    +
                    1
                  
                
                N
              
              ⁢
              
                
                  τ
                  ~
                
                j
              
            
          
          )
        
      
    
  
  ,




where {ui} contains a point from each slice that lies on the view ray, γ is the angle between the view ray and the central axis of the view frustum, and {tilde over (τ)}j is the transmittance of slice j along the view ray, computed as

{tilde over (τ)}j=exp(−σt{tilde over (D)}(uj)Δu/cos γ).   (12)

With compensated ray marching, rendering results are generated with fine details. A rendering based on the above compensated ray marching has been compared with a rendering result with a ray traced image. In the comparison, ray tracing is performed on the original density field, instead of the approximated RBF density field. The ray tracing result appears slightly smoother than the compensated ray marching result, perhaps because the compensated ray marching with a first order approximation accounts for the residual in the ray march but not in the scattering simulation. The two results are nevertheless comparable. However, the compensated ray marching techniques described herein is advantageous because it achieves real-time rendering, while in contrast, conventional ray tracing can only be performed off-line. The real-time rendering results have also been compared with the offline ray tracing with different lighting conditions to demonstrate that the real-time rendering described herein is able to achieve results comparable to that of the off-line ray tracing.
GPU Implementation—All run-time components of the algorithm described herein can be efficiently implemented on the GPU using pixel shaders. In the following, some implementation details are described.
Single Scattering: Source radiances are directly computed at only the RBF centers. For single scattering computation, one exemplary implementation rasterizes a small 2D quad in which each RBF is represented by a pixel. In some embodiments, approximated density model uses at most 1000 RBFs per frame, and accordingly a quad size of 32×32 is sufficient. The RBF data (cl,rl,wl) may be precomputed (e.g., either by a CPU on the same board with the GPU, or an external CPU) is packed into a texture and passed to the pixel shader.
In the shader, for each pixel (i.e., RBF center) the algorithm iterates through the RBFs to compute the transmittance vector {tilde over (τ)}(cl) as described herein. Then the source radiance is computed using the SH triple product and convolution according to Eq. (9).
Multiple Scattering: an overview of the GPU pipeline for multiple scattering is depicted FIG. 11. The incident radiance buffer 1102 is initialized with the reduced incident radiance I1 that has been calculated for single scattering. Then for each iteration of the simulation, the scattered source radiance {tilde over (J)}msk is computed at block 1104 using




  
    
      
        
          J
          ~
        
        ms
        k
      
      ⁡
      
        (
        
          c
          l
        
        )
      
    
    =
    
      
        
          
            α
            ⁡
            
              (
              
                c
                l
              
              )
            
          
          ⁢
          Ω
        
        
          4
          ⁢
          π
        
      
      ⁢
      
        (
        
          
            
              I
              k
            
            ⁡
            
              (
              
                c
                l
              
              )
            
          
          *
          p
        
        )
      
    
  
  ,




and accumulated in the source radiance buffer 1106. The exitant radiance Ek is computed at block 1108 using Ek(cl)=(1−α(cl))Ik(cl)+{tilde over (J)}msk(cl) and stored at exitant radiance buffer 1110. The exitant radiance Ek is used for estimate the subsequent incident radiance Ik+1 using the previously described process H 1112 in alternation. The incident radiance Ik+1 may also stored in incident radiance buffer 1102. The multiple rendering target and frame buffer object (FBO) of OpenGL extensions are used to avoid frame buffer readbacks.

Note that for the first iteration, the scattered source radiance is not accumulated into {tilde over (J)}ms, and the initial exitant radiance is simply {tilde over (J)}ms1. As in single scattering, one exemplary implementation rasterizes a 2D quad of size 32×32 for each operation.
Ray Marching—The ray march starts by initializing the final color buffer with the background lighting Lin. Then from far to near, each slice i is independently rendered in two passes.
In the first pass, the OpenGL blend mode is set to GL_ONE for both the source and target color buffers. The process that iterates over all the RBFs. For each RBF Bl, its intersection with the slice is first calculated. This plane-to-sphere intersection can be efficiently computed given the center and radius of the sphere. If an intersection exists, a 2D bounding quad is computed for the circular intersection region, and rendered this 2D quad.
For each pixel in the quad, denote its corresponding point in the volume as ui. In the pixel shader, the density wlBl(ui) is evaluated and saved in the alpha channel, and {tilde over (J)}D,l(ui)=wlBl(ui)(y(ωo)·{tilde over (J)}(cl)) is computed and placed in the RGB channels. With the residual R(ui) from the hash table, the process calculates and stores {tilde over (J)}D,l(ui)R(ui) in the RGB channels of a second color buffer. After the first pass, one thus has Σl {tilde over (J)}D,l(ui), {tilde over (D)}(ui), and R(ui)Σi {tilde over (J)}D,l(ui) in the color buffers, which are sent to the second pass as textures through the FBO.
In the second pass, the OpenGL blend mode is set to GL_ONE and GL_SRC_ALPHA for the source and final color buffers, respectively. Instead of drawing a small quad for each RBF as in the first pass, the exemplary process draws a large bounding quad for all RBFs that intersect with the slice. In the pixel shader, {tilde over (J)}D(ui) for each pixel is evaluated according to Eq. (11) as

{tilde over (J)}D(ui)=Σl {tilde over (J)}D,l(ui)+(R(ui)Σl {tilde over (J)}D,l(ui))/{tilde over (D)}(ui).

The RGB channels of the source buffer are then computed as {tilde over (J)}D(ui)σtΔu/cos γ, and the alpha channel is set to {tilde over (τ)}i, computed using Eq. (12).
The residual R(ui) is decoded by perfect spatial hashing as described in Lefebvre, S. et al., 2006, “Perfect spatial hashing”, ACM Transactions on Graphics 25, 3, 579-588. Eight texture accesses are needed in computing a trilinear interpolation. To avoid divide-by-zero exceptions, residuals are set to zero during preprocessing when {tilde over (D)}(u) is very small (e.g., <1.0e−10).
EXEMPLARY RESULTS
The above described algorithm has been implemented on a 3.7 GHz PC with 2 GB of memory and an NVidia 8800GTX graphics card. Images are generated at a 640×480 resolution.
Smoke Visualization—As a basic function, the present system allows users to visualize smoke simulation results under environment lighting and from different viewpoints. The results with and without residual compensation have been obtained and compared. Although both may be adequate for various purposes, images with finer details are obtained with compensated ray marching.
The optical parameters of the smoke can be edited in real time. For example, for images containing the same smoke density field and lighting, adjusting the albedo downward and increasing the extinction cross section darkens the appearance of the smoke. For images with fixed lighting, changing the phase function from constant to the Henyey-Greenstein (HG) phase function (with eccentricity parameter 0.28, for example) also creates a different effect. The dependence of the scattered radiance on the view direction can also be seen.
Shadow Casting between Smoke and Objects—Combined with the spherical harmonic exponentiation (SHEXP) algorithm for soft shadow rendering, the method described herein can also render dynamic shadows cast between the smoke and scene geometry. In one embodiment, the method is able to achieve real-time performance at over 20 fps for exemplary scene containing 36K vertices. For each vertex in the scene, the exemplary embodiment first computes the visibility vector by performing SHEXP over the accumulative log visibility of all blockers. Each RBF of the smoke is regarded as a spherical blocker whose log visibility is the optical depth vector as computed according to the methods described herein. Vertex shading is then computed as the triple product of visibility, BRDF and lighting vectors. After the scene geometry is rendered, the source radiance is computed at RBF centers due to single scattering, taking the occlusions due to scene geometry into account using SHEXP. Finally, the multiple scattering simulation and compensated ray marching are performed to generate the results.
Performance: TABLE 2 lists performance statistics for three examples. The preprocessing time (for precomputation) ranges from 1 to 3 hours, which is reasonably short. The residual hash tables are significantly smaller than the original density field sequences.







TABLE 2







Exemplary Performance Results












Scene
A
B
C







Volume grid
1283
1003
1003



Frames
600
500
450



Avg. RBFs per
460
247
314



frame



RBF approx. RMS
 2.48%
 1.03%
 1.34%



error



Decomposition
140
 43
 85



(min)



Hashing (min)
 35
 18
 20



Hash table (MB)
218
 57
 67



Performance (fps)
19.1-95.1
36.4-57.8
35.8-74.8










In some exemplary implementations, the user can specify the maximum number of RBFs per frame for density approximation. An exemplary default value of 1000 works well for many situations. In principle, the source radiance at each voxel can be exactly reconstructed using a sufficiently large number of RBFs, but a limit on RBFs is needed in practice. A tradeoff between accuracy and performance requires a balance in practice.
Conclusion
A method has been described for real-time rendering of inhomogeneous light scattering media such as smoke animations. The method allows for interactive manipulation of environment lighting, viewpoint, and smoke attributes. The method may be used for efficient rendering of both static and dynamic participating media without requiring prohibitively expensive computation or precomputation, making it suitable for editing and rendering of dynamic smoke. Based on a decomposition of smoke volumes, for example, the method utilizes a low-frequency density field approximation to gain considerable efficiency, while incorporating fine details in a manner that allows for fast processing with high visual fidelity. However, it is appreciated that the potential benefits and advantages discussed herein are not to be construed as a limitation or restriction to the scope of the appended claims.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claims.

## Claims

1. A method for rendering an inhomogeneous scattering medium in a volume space, the inhomogeneous scattering medium having a density field which is at least approximately represented by a radial basis function (RBF) model density field comprising a weighted sum of a set of RBFs each having a RBF center, the density field further comprising a residual density field in addition to the RBF model density field, performed by one or more processors configured with computer-executable instructions, the method comprising:
computing a value of a source radiance at each RBF center cl, the source radiance including at least a single scattering term represented by a spherical harmonic product and a convolution term [(Lin * {tilde over (τ)}(cl))★p], Lin being a vector representing a spherical harmonic projection of an incident radiance Lin the incident radiance Lin comprising an environmental lighting, {tilde over (τ)}(cl) being a transmittance vector associated with RBF center cl, and p being a vector representing a spherical harmonic projection of a phase function p;
approximating values of the source radiance at other points in the volume space by interpolating from the values of the source radiance at the RBF centers;
computing an effective exitant radiance at a point x in the volume space at least partially based on the source radiance, the computing the effective exitant radiance comprising:
computing a base component by integrating the approximate source radiance along a view ray in the approximate model density field; and
computing a compensation component by integrating the approximate source radiance along the view ray in the residual density field; and

rendering an image of the inhomogeneous scattering medium based on the effective exitant radiance.

2. The method as recited in claim 1, wherein the single scattering term is computed as follows:
for each RBF having a RBF center cl,
computing an accumulative optical depth through the RBF; and
computing the transmittance vector {tilde over (τ)}(cl) associated with the RBF center cl based on the computed accumulative optical depth.

3. The method as recited in claim 1, wherein the transmittance vector {tilde over (τ)}(cl) is computed according to the following equation:




  
    
      
        τ
        ~
      
      ⁡
      
        (
        
          c
          l
        
        )
      
    
    =
    
      
        exp
        *
      
      (
      
        
          -
          
            σ
            t
          
        
        ⁢
        
          
            ∑
            h
          
          ⁢
          
            
              w
              h
            
            ⁢
            
              
                T
                h
              
              ⁡
              
                (
                
                  c
                  l
                
                )
              
            
          
        
      
      )
    
  
  ,



wherein Th(cl) is a spherical harmonic (SH) projection of accumulative optical depth through RBF Bh, and σt is extinction cross section.

4. The method as recited in claim 3, wherein Th(cl) is determined as follows:
from the accumulative optical depth, tabulating an accumulative optical depth vector T(β) with respect to an angle β which pertains to distance between two RBF centers;
in runtime, retrieving vectors T(βl,h) from the tabulated T(β), wherein βl,h is the angle β pertaining to RBF certers ch and cl; and
rotating T(βl,h) to an axis determined by cl and ch, followed by scaling T(βl,h) by a multiplication with radius rh, to obtain Th(cl).

5. The method as recited in claim 1, wherein computing the value of source radiance comprises:
computing an nth order scattering term (n≧1); and
computing a (n+1)th order scattering term based on the previously computed nth order scattering term.

6. The method as recited in claim 5, wherein a first order, second order . . . , nth order, and (n+1)th scattering terms are computed reiteratively, until the last scattering term has a magnitude below a user-specified threshold, or a user-specified number of iterations has been reached.

7. The method as recited in claim 1, wherein computing the value of source radiance comprises:
computing initial incident radiance vector I1(cl), initial source radiance vector {tilde over (J)}ms1(cl) and initial exitant radiance vector E1(cl);
at each iteration k≧2, updating the incident radiance vector Ik(cl) based on exitant radiance vector Ek−1(ch) of the preceding integration, updating source radiance vector {tilde over (J)}msk(cl) by convolving the incident radiance vector Ik(cl) with the phase function p, and updating exitant radiance vector Ek(cl) based on Ik(cl) and {tilde over (J)}msk(cl); and
aggregating the source radiance vectors {tilde over (J)}msk(cl) of different iterations (k≧2) to obtain a total multiple scattering term contributing to the source radiance.

8. The method as recited in claim 1, wherein computing the effective exitant radiance comprises compositing the source radiance by performing a ray marching procedure including:
decomposing a volume space of the density field into a plurality of slices along a central view frustum; and
calculating a discrete integral of the source radiance slice by slice.

9. The method as recited in claim 8, wherein each slice has a user-controllable thickness stacking along the current view direction, and the discrete integral is calculated slice by slice along the current view direction.

10. The method as recited in claim 1, further comprising:
zeroing entries of the residual density field at points where the residual density field has a value at or below a given threshold.

11. The method as recited in claim 1, further comprising:
compressing values of the residual density field.

12. The method as recited in claim 1, wherein the inhomogeneous scattering medium comprises smoke.

13. The method as recited in claim 1, wherein the inhomogeneous scattering medium is a part of a video or animation comprising a sequence of renderings of images rendered at time intervals, and wherein at least one of the approximate source radiance and the effective exitant radiance is computed in real time at each time interval.

14. The method as recited in claim 13, wherein both the source radiance and the effective exitant radiance are computed in real time at each time interval.

15. A method for rendering an inhomogeneous scattering medium in a volume space, the inhomogeneous scattering medium having a density field which is at least approximately represented by a radial basis function (RBF) model density field comprising a weighted sum of a set of RBFs each having a RBF center, the density field further comprising a residual density field in addition to the RBF model density field, performed by one or more processors configured with computer-executable instructions, the method comprising:
computing a single scattering term of source radiance at each RBF center cl, the single scattering term being represented by a spherical harmonic product and a convolution term [(Lin * {tilde over (τ)}(cl))★p], Lin being a vector representing a spherical harmonic projection of an incident radiance Lin, the incident radiance Lin comprising an environmental lighting, {tilde over (τ)}(cl) being a transmittance vector associated with RBF center cl, and p being a vector representing a spherical harmonic projection of a phase function p;
computing a multiple scattering term of the source radiance at each RBF center cl;
approximating values of the source radiance at other points in the volume space by interpolating from the values of the source radiance at the RBF centers;
computing an effective exitant radiance at a point x in the volume space at least partially based on the source radiance, the computing the effective exitant radiance comprising:
computing a base component by integrating the approximate source radiance along a view ray in the approximate model density field; and
computing a compensation component by integrating the approximate source radiance along the view ray in the residual density field; and

rendering an image of the inhomogeneous scattering medium based on the effective exitant radiance.

16. The method as recited in claim 15, wherein computing the multiple scattering term of source radiance comprises:
reiteratively computing an (n+1)th order scattering term (n≧1) based on a previously computed nth order scattering term, until the last scattering term has a magnitude below a user-specified threshold, or a user-specified number of iterations has been reached.

17. One or more computer readable medium having tangible physical structure and having stored thereupon a plurality of instructions that, when executed by one or more processors, causes the one or more processors to perform a method for rendering an image of an inhomogeneous scattering medium in a volume space, the method comprising:
computing a value of a source radiance at a respective radial basis function (RBF) center cl, of each member of a set of RBFs, the source radiance including at least a single scattering term represented by a spherical harmonic product and a convolution term [(Lin * {tilde over (τ)}(cl))★p], Lin being a vector representing a spherical harmonic projection of an incident radiance Lin, the incident radiance Lin comprising an environmental lighting, {tilde over (τ)}(cl) being a transmittance vector associated with RBF center cl, and p being a vector representing a spherical harmonic projection of a phase function p;
approximating values of the source radiance at other points in the volume space by interpolating from the values of the source radiance at the RBF centers;
computing an effective exitant radiance at a point x in the volume space at least partially based on the source radiance; and
rendering the image of the inhomogeneous scattering medium based on the effective exitant radiance, the inhomogeneous scattering medium having a density field which includes an RBF model density field over one or more first frequencies, the RBF model density field comprising a weighted sum of the set of RBFs each having the respective RBF center, and a residual density field over one or more second frequencies, the one or more second frequencies being higher than the one or more first frequencies.