US8164592B2 - Systems and methods for graphical rendering - Google Patents
Systems and methods for graphical rendering Download PDFInfo
- Publication number
- US8164592B2 US8164592B2 US11/680,831 US68083107A US8164592B2 US 8164592 B2 US8164592 B2 US 8164592B2 US 68083107 A US68083107 A US 68083107A US 8164592 B2 US8164592 B2 US 8164592B2
- Authority
- US
- United States
- Prior art keywords
- basis
- functions
- function
- wavelet
- nodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
Definitions
- Mathematics is a powerful tool that can be used to create models, among other things.
- the solution to the mathematical model often represents an answer to a problem in the real world system.
- the mathematical model includes a series of functions that are multiplied together and integrated, or simply multiplied together.
- One example of such a mathematical model is a light transport model that represents the physics of light moving within a three-dimensional scene.
- the light transport model describes the radiance of objects in the scene as a function of parameters such as the viewpoint of the observer, the texture of the objects, and the lighting itself.
- an approximation of the model can be employed to simplify, for example, rendering a graphical scene.
- the approximation may underestimate or ignore some variables of the model, and therefore the contribution of corresponding elements to the overall system.
- most computer graphics rendering processes rely on simplified or approximated versions of the light transport model, but the lighting of the scenes rendered using such models is not realistic.
- Some simplified versions of the light transport model require objects in the scene to be static. Others cannot approximate the specular highlights that high-frequency lighting creates on glossy materials. Still others are physically accurate but are too slow for real-time rendering.
- a computer readable medium is configured to determine the integral of the product of a plurality of functions.
- the computer readable medium includes logic configured to project each function of the plurality of functions into the wavelet domain, logic configured to encode basis coefficients of each function in a wavelet tree, each function being encoded in at least one wavelet tree such that the plurality of functions are represented in the wavelet domain by a plurality of wavelet trees, and logic configured to traverse direct paths through the plurality of wavelet trees to determine the integral of the product of the functions represented by the wavelet trees, along which direct paths an integral coefficient may be nonzero.
- a computer readable medium configured to determine an integral coefficient, which is the integral of the product of a plurality of basis functions, includes logic configured to determine whether the basis functions of the plurality lie in nodes of a basis function tree that are on a single direct path through the basis function tree, logic configured to set the integral coefficient to zero if the single direct path exists, logic configured to determine a basis function type of a basis function appearing in the product of the basis functions if the single direct path does not exist, logic configured to set the integral coefficient to zero if the basis function type of the basis function appearing in the product is a wavelet basis function, and logic configured to set the integral coefficient to a value if the basis function type of the basis function appearing in the product is a scaling basis function.
- FIG. 1 is a block diagram illustrating an embodiment of a method for determining the integral of the product of a plurality of functions.
- FIG. 2 is a diagram illustrating a two-dimensional, nonstandard Haar basis set having a resolution n of 3.
- FIG. 3 is a diagram illustrating the two-dimensional, nonstandard Haar basis set having a resolution n of 2.
- FIG. 4 is a diagram illustrating restricted basis functions of the two-dimensional, nonstandard Haar basis set as shown in FIG. 3 .
- FIG. 5 illustrates four example functions represented in the wavelet domain.
- FIG. 6 is a diagram illustrating a wavelet domain representation of the integral of the product of the example functions of FIG. 5 .
- FIG. 7 is a diagram illustrating an example basis function tree for the basis set as shown in FIG. 2 .
- FIG. 8 is a diagram illustrating an example basis coefficient tree.
- FIG. 9 is a diagram illustrating example products of two basis functions, and an example equation for calculating such products.
- FIG. 10 is a diagram illustrating example products of more than two basis functions, and example equations for calculating such products.
- FIG. 11 is a table that tabulates the basis function type of the basis function appearing in the product of a plurality of basis functions.
- FIG. 12 is a block diagram illustrating an embodiment of a method of determining an N th order integral coefficient C N .
- FIG. 13 is a block diagram illustrating an embodiment of a method for determining a basis function type of a basis function appearing in the product of a plurality of basis functions.
- FIG. 14 is a block diagram illustrating a general-purpose computer system that can be used to implement embodiments of the systems and methods disclosed herein.
- FIG. 15 is a table illustrating seven cases that facilitate determining the N th order integral coefficient C N .
- FIG. 16 is a block diagram illustrating another embodiment of a method for determining the integral of the product of a plurality of functions.
- FIG. 17 illustrates an example wavelet tree in pseudo code.
- FIG. 18 is a block diagram illustrating an embodiment of a method for traversing direct paths through a plurality of wavelet trees to determine the integral of the product of the functions represented by the wavelet trees.
- FIG. 19 illustrates in pseudo code an example tree-traversal algorithm for determining the integral of the product of a plurality of functions, and embodiments of component routines.
- FIG. 20 illustrates in pseudo code an optimized tree-traversal algorithm for determining the integral of the product of a plurality of functions, and embodiments of component routines.
- FIG. 21 illustrates in pseudo code an intermediate table that can be employed by the algorithm of FIG. 20 .
- FIG. 22 is an embodiment of a system for determining the integral of the product of a plurality of functions.
- FIG. 23 is a diagram illustrating light and objects in an example scene.
- FIG. 24 is a block diagram illustrating an embodiment of a method of rendering a graphical scene in which the radiance of a point x in the scene is determined by integrating the product of a plurality of functions contributing to a light transport model of the scene.
- FIG. 25 is a block diagram illustrating an embodiment of a system of rendering a graphical scene in which the radiance of a point x in the scene is determined by integrating the product of a plurality of functions contributing to a light transport model of the scene.
- FIG. 26 is a block diagram illustrating an embodiment of a method for approximating the integral of the product of a plurality of functions.
- FIG. 27 is a block diagram illustrating an embodiment of a method for determining the basis coefficients of a vector representing the product of a plurality of functions in the wavelet domain.
- FIG. 28 is a block diagram illustrating an embodiment of a method for traversing direct paths through a plurality of wavelet trees to determine the basis coefficients of a vector representing the product of the corresponding functions in the wavelet domain.
- FIG. 29 illustrates in pseudo code an example tree-traversal algorithm for determining the basis coefficients of a vector representing the product of a plurality of functions in the wavelet domain, and embodiments of component routines.
- FIG. 30 is an embodiment of a system for approximating the integral of the product of the plurality of functions.
- FIG. 31 is a block diagram illustrating an embodiment of a method of rendering a graphical scene by approximating a radiance of a point x in a scene.
- FIG. 32 is a block diagram illustrating an embodiment of a system for rendering a graphical scene by approximating a radiance of a point x in a scene.
- the systems and methods can be used to render scenes using a computer, including dynamic glossy objects in real time, as is also described in a paper by the inventors, Sun et al., entitled “Generalized Wavelet Product Integral for Rendering Dynamic Glossy Objects”, ACM Transactions on Graphics (SIGGRAPH '06) 25, 3, 955-966, which is incorporated by reference herein in its entirety.
- FIG. 1 is a block diagram illustrating an embodiment of a method 100 for determining the integral of the product of a plurality of functions.
- the integral of the product of the plurality of functions is represented using equation (1):
- u is the integral of the product of the plurality of functions
- N is the total number of functions contributing to the product being integrated
- F i (v) generically denotes the i th function in the product being integrated, i being any integer from 1 to N.
- each of the plurality of functions F i (v) is projected into the wavelet domain. Projecting the functions into the wavelet domain comprises, for example, performing a wavelet transform on each function.
- the wavelet transform projects the function F i (v) onto a wavelet basis set ⁇ .
- the wavelet basis set ⁇ includes a plurality of basis functions b h (v).
- each function F i (v) is expressed as the sum of a series of basis functions b h (v) scaled by corresponding basis coefficients f i,h as shown in equation (2):
- the wavelet transform can be a nonstandard Haar wavelet transform, in which case the wavelet basis set ⁇ can be a two-dimensional, nonstandard Haar basis set.
- Such a wavelet transform and basis set are described by Stollnitz, et al. in “Wavelets for Computer Graphics: A Primer,” IEEE Computer Graphics and Applications (1995), 15, 3, 76-84, which is incorporated by reference in its entirety herein.
- each function F i (v) onto the two-dimensional, nonstandard Haar basis set by performing the nonstandard Haar wavelet transform simplifies evaluating the integral of the product of the plurality of functions because only nonzero basis coefficients f i,h and nonzero N th order integral coefficients C N contribute to the integral and when two-dimensional, nonstandard Haar basis functions are used to represent the functions F i (v), many of the basis coefficients f i,h and the N th order integral coefficients C N are zero, as described in detail below.
- the term wavelet transform generally refers to the nonstandard Haar wavelet transform
- the term basis function b h generally refers to a two-dimensional, nonstandard Haar basis function
- the term basis set B generally refers to the two-dimensional, nonstandard Haar basis set and the basis functions, of this basis set, unless otherwise indicated.
- the two-dimensional, nonstandard Haar basis set B includes a plurality of basis functions, the number of basis functions varying with the resolution n of the basis set.
- FIG. 2 is a diagram illustrating a basis set 200 , having a resolution n of 3 and a total of eighty-four basis functions.
- each square diagram represents one of the basis functions.
- the basis function is positive where the diagram is white, is negative where the diagram is black, and is zero where the diagram is gray.
- a magnitude of the basis function is ignored in the diagrams, but if shown, the magnitude would project out of or into the page.
- Each of the basis functions is normalized such that the magnitude of the basis function is one, and therefore the basis set 200 is an orthonormal basis set.
- the basis set 200 includes four basis function types: scaling basis functions generally denoted by ⁇ , and three different wavelet basis functions generally denoted by ⁇ 1 , ⁇ 2 , and ⁇ 3 .
- a mother basis function is defined for each of the four basis function types.
- the mother basis functions include a mother scaling basis function ⁇ 0 and three different mother wavelet basis functions ⁇ 1 0 , ⁇ 2 0 , and ⁇ 3 0 .
- Each of the mother basis functions takes a unique shape within the diagram.
- the equations of the mother basis functions are provided below:
- Each of the remaining basis functions in the basis set 200 is a dilated and spatially translated version of one of the mother basis functions.
- the mother basis functions can be dilated by a scale j and can be spatially translated with respect to an x-y coordinate system by spatial translations k and l.
- the scale j can be any integer from 0 to (n ⁇ 1), n being the resolution of the basis set 200 .
- Each spatial translation k and l can be any integer from 0 to (2 j ⁇ 1).
- Each combination ⁇ j,k,l> is a unique support that indicates a size and location of the basis function in the diagram, the size being a function of the scale j and the location being a function of the spatial translations k, l.
- FIG. 3 is a diagram illustrating the two-dimensional, nonstandard Haar basis set 300 having a resolution n of 2.
- the principles described with reference to the basis set 200 generally apply to the basis set 300 , and to any other such basis set B regardless of the resolution n.
- the basis set B includes a subset of restricted basis functions.
- the restricted basis function subset includes 2 n ⁇ 2 n basis functions from the basis set, including the mother scaling basis function ⁇ 0 and all of the wavelet basis functions ⁇ 1 kl j , ⁇ 2 kl j , ⁇ 3 kl j .
- the restricted basis function subset includes all basis functions in the basis set except for the scaling basis functions ⁇ kl j having scales j greater than zero.
- the restricted basis function subset 400 of the two-dimensional, nonstandard Haar basis set 300 is shown in FIG. 4 .
- the nonstandard Haar wavelet transform projects the functions F i (v) onto restricted basis functions of the basis set. Because the wavelet transform projects the function F i (v) onto the restricted bases, the wavelet domain representation of the function F i (v) in equation (2) is the sum of a series of 2 n ⁇ 2 n restricted basis functions b h scaled by 2 n ⁇ 2 n corresponding basis coefficients f i,h , where n is the resolution. Therefore, from this point forward, the term basis function b h generally refers to one of the restricted basis functions and the term basis coefficient f i,h generally refers to either the mother scaling coefficient or one of the wavelet coefficients.
- FIG. 5 illustrates four example functions represented in the wavelet domain.
- the functions F i (v) are shown in terms of the restricted basis functions b h of the subset 400 shown in FIG. 4 , although in most cases a basis set B of higher resolution is used.
- the function F 1 (v) is represented as sixteen basis coefficients f 1,1 to f 1,16 scaling the sixteen restricted basis functions b 1 to b 16 .
- examples 504 , 506 , and 508 which illustrate functions F 2 (v), F 3 (v), and F 4 (v), respectively.
- the mother basis functions are defined for the support ⁇ 0,0,0>, which covers the entire diagram. Therefore, the basis coefficients of the mother basis functions provide information about the entire function F i (v).
- the shape of the mother scaling basis function ⁇ 0 represents an average over the entire diagram
- the shapes of the mother wavelet functions ⁇ 1 0 , ⁇ 2 0 , and ⁇ 3 0 represent horizontal, vertical, and diagonal steps, respectively, from the mother scaling basis function ⁇ 0 over the entire diagram.
- the basis coefficient of the mother scaling basis function ⁇ 0 provides information about an average of the function F i (v), while the basis coefficients of the wavelet basis functions ⁇ 1 0 , ⁇ 2 0 , and ⁇ 3 0 provide information about horizontal, vertical and diagonal differences from average, respectively, over the entire function.
- Supports ⁇ j,k,l> that are less than the entire diagram represent distinct portions of the function F i (v) represented by the diagram. Therefore, the basis coefficients of basis functions for supports ⁇ j,k,l> other than ⁇ 0,0,0> provide information about the portion of the function F i (v) represented by the support, and the basis function type indicates the type of information that is provided. Specifically, the basis coefficients of the wavelet basis functions ⁇ 1 kl j , ⁇ 2 kl j , ⁇ 3 kl j provide information about horizontal, vertical, and diagonal differences, respectively from the average over the portion of the function F i (v) represented by the support. The scaling basis functions ⁇ kl j do not have basis coefficients because the wavelet transform represents the function F i (v) in terms of the restricted bases, as discussed above.
- the basis coefficients of basis functions at finer or higher scales j provide information about smaller portions of the function F i (v), the information that is provided is more detailed or resolved.
- the wavelet basis function ⁇ 2 00 1 has a support that is smaller than the support of the mother wavelet basis function ⁇ 3 0 , indicating that a basis coefficient of the wavelet basis function ⁇ 3 00 1 provides information about a smaller portion of the function F i (v) than the basis coefficient of the mother wavelet function ⁇ 3 00 1 ; however, the diagonal difference from average represented by the basis coefficient of the wavelet basis function ⁇ 3 00 1 is more resolved than the diagonal difference from the average represented by the basis coefficient of the mother wavelet function ⁇ 3 0 , as visually indicated by the increased resolution in the diagram.
- the integral u of the product of the plurality of functions is represented in the wavelet domain as the sum of a series of contributing products, each contributing product including a plurality of basis coefficients and one integral coefficient.
- Such a representation is achieved by simplifying the wavelet domain representation of the integral u shown in equation (3).
- An N th order basis product P N is defined as the product of N arbitrary basis functions b g :
- Each contributing product in the series is the product of multiple basis coefficients and one N th order integral coefficient C N , the multiple basis coefficients including one basis coefficient f i,h from each of the N functions, and the N th order integral coefficient C N being the integral of the product of the basis functions b h (v) that correspond to those basis coefficients f i,h .
- One contributing product appears in the series for each combination of N basis coefficients f i,h having one coefficient from each of the N functions, such that a total of M N contributing products appear in the series.
- f i,h is an integer from 1 to M and i is an integer from 1 to N
- M being the number of basis functions b h used to represent the function F i (v)
- N being the number of functions F i (v) whose product is being integrated.
- FIG. 6 is a diagram illustrating the wavelet domain representation of the integral u of the product of the example functions of FIG. 5 .
- the example functions F 1 , F 2 , F 3 , and F 4 of examples 502 , 504 , 506 , and 508 are inserted into equation (10).
- the integral u of the product of the functions is represented in the wavelet domains the sum of a series of 16 4 contributing products, but for illustrative purposes, only three of these contributing products 602 , 604 , and 606 are shown in example 600 .
- Each product 602 , 604 , and 606 includes four basis coefficients 608 , one from each of the functions F 1 , F 2 , F 3 , and F 4 , and one 4 th order integral coefficient 610 , which is the integral of the basis functions that correspond to the basis coefficients 608 .
- the four basis coefficients 608 in the product 602 are the basis coefficient f 1,1 from the function F 1 , the basis coefficient f 2,1 from the function F 2 , the basis coefficient f 3,1 from the function F 3 , and the basis coefficient f 4,1 from the function F 4 .
- Each of these basis coefficients corresponds to the basis function labeled b 1 in FIG. 4 , which is the mother scaling basis function ⁇ 0 , as shown in FIG.
- the 4 th order integral coefficient 610 in the product 602 is the integral of the product of four mother scaling basis functions ⁇ 0 , as shown in example 612 of FIG. 6 .
- the example product 604 is the product for the combination of basis coefficients that includes the basis coefficient f 1,6 from the function F 1 , the basis coefficient f 2,2 from the function F 2 , the basis coefficient f 3,11 from the function F 3 , and the basis coefficient f 4,7 from the function F 4 . Therefore, as shown in example 614 of FIG. 6 , the 4 th order integral coefficient 610 in the product 604 is the integral of the product of the basis functions labeled b 6 , b 2 , b 11 , and b 7 in FIG. 4 .
- the example product 616 follows the same form.
- the basis functions are organized in a basis function tree, and the basis coefficients of each function are placed in a basis coefficient tree.
- the basis function tree is described first, because its organization informs the organization of the basis coefficient tree.
- the basis function tree organizes basis functions based on parent-child relationships among the basis functions.
- the mother scaling function ⁇ 0 is defined as the parent of all other basis functions, and is defined as the immediate parent of the mother wavelet functions ⁇ 1 0 , ⁇ 2 0 , and ⁇ 3 0 .
- the basis function is a parent basis function of a child basis function if the scale j of the parent basis function is less than the scale j of the child basis function and the support ⁇ j,k,l> of the parent basis function completely covers the support ⁇ j,k,l> of the child basis function, meaning the parent basis function is positionally located in the diagram with respect to the x-y coordinate system in every (x, y) position occupied by the child basis function.
- the parent basis function of support ⁇ j,k,l> is an immediate parent of the child basis function if the child basis function has scale (j+1) and is located at spatial positions (2k, 2l), (2k+1, 2l), (2k, 2l+1), and (2k+1, 2l+1).
- a child basis function may have more than one immediate parent basis function, and further, the immediate parent basis functions may be a different mother basis function type than the child basis function. For example, with reference to FIG.
- the scaling basis function ⁇ 00 1 is one of the immediate parent basis functions of the wavelet basis function ⁇ 1 00 2 , because the scale of the wavelet basis function ⁇ 1 00 2 is one greater than the scale of the scaling basis function ⁇ 00 1 , and the support of the scaling basis function ⁇ 00 1 completely covers the support of the wavelet basis function ⁇ 1 00 2 .
- FIG. 7 is the diagram illustrating an example basis function tree 700 for the basis set 200 shown in FIG. 2 .
- the mother scaling basis function ⁇ 0 lies in a root 702 of the tree 700 , indicating its status as the parent of all basis functions in the set 200 .
- a mother node 704 immediately depends from the root 702 and includes the three mother wavelet functions ⁇ 1 0 , ⁇ 2 0 , and ⁇ 3 0 , indicating their status as the immediate children of the mother scaling basis function ⁇ 0 .
- each child node 706 corresponding to a unique support ⁇ j,k,l> and including the four basis functions that are defined for the support.
- the four basis functions in the child node 706 are generally represented by b kl j , where b generally denotes a basis function, j denotes the scale of the basis function, and (k, l) denotes the spatial translation.
- the basis functions in child node 710 are represented by the symbol b 1 11 , indicating the node includes all four basis functions defined on the support ⁇ 1,1,1>, as shown in the key 712 .
- any basis function in any child node 706 is an immediate child basis function of the basis functions in the node from which the child node 706 depends.
- each basis function in the child node 710 is the immediate child basis function of each of the mother wavelet functions in the mother node 704 .
- any basis function in a child node 706 is a parent basis function, its corresponding child basis functions are located in child nodes 706 depending from it, and if the basis function in the child node 706 is an immediate parent basis function, its corresponding immediate child basis functions are located in the child nodes 706 immediately depending from it. For example, in FIG.
- each of the four basis functions defined on the support ⁇ 1,1,1> is an immediate parent basis function of each of the basis functions defined on supports ⁇ 2,2,2>, ⁇ 2,3,2>, ⁇ 2,2,3>, and ⁇ 2,3,3>.
- the basis function tree 700 includes all of the basis functions of the basis set 200 shown in FIG. 2 , which has a resolution n of 3.
- the basis function tree 700 may have greater or fewer child nodes 706 depending on the resolution n.
- a direct path through the basis function tree 700 connects the node in which a child basis function lies to the node in which its parent basis function lies.
- the direct path traces from the child basis function to the parent basis function passing through any nodes including the immediate parent basis functions. For example, in FIG. 7 , a direct path 714 exists from the child basis function ⁇ 1 11 2 in the child node 716 to the mother scaling function ⁇ 0 at the root 702 .
- the child basis function ⁇ 1 11 2 in the child node 716 has as immediate parents all of the basis functions in the child node 718 , including basis functions ⁇ 00 1 , ⁇ 1 00 1 , ⁇ 2 00 1 , and ⁇ 3 00 1 , which in turn have the mother wavelet functions ⁇ 1 0 , ⁇ 2 0 , and ⁇ 3 0 in the mother node 704 as immediate parents, which in turn having the mother scaling function ⁇ 0 in the root 702 as an immediate parent.
- the direct path need not extend all the way to the mother scaling function ⁇ 0 in the root 702 .
- the scaling basis function ⁇ 11 1 is a child basis function of the mother wavelet function ⁇ 2 0 , as indicated by the direct path 720 connecting the child node 710 to the mother node 704 .
- the basis coefficient tree has the same nodes as the corresponding basis function tree. However, instead of organizing basis functions according to parent-child relationship, the basis coefficient tree organizes basis coefficients. Each basis coefficient is in the node of the basis coefficient tree that corresponds to the node occupied by its corresponding basis function in the basis function tree. Therefore, the basis coefficient tree has the same nodes positioned with respect to each other in the same manner as the basis function tree. Unlike the basis function tree, however, in the basis coefficient tree the child nodes include at most three basis coefficients, the child scaling functions not having basis coefficients because the wavelet transform projects the function onto the restricted bases.
- FIG. 8 is a diagram illustrating an example basis coefficient tree 800 , which organizes the basis coefficients for the function F 1 (v) shown in example 502 of FIG. 5 .
- the basis coefficient f 1,1 corresponds to the mother scaling basis function ⁇ 0
- the basis coefficient f 1,1 lies in a root 802 of the basis coefficient tree 800 .
- the basis coefficients f 1,2 , f 1,3 , and f 1,4 correspond to the three mother wavelet functions ⁇ 1 0 , ⁇ 2 0 , and ⁇ 3 0 , and therefore these basis coefficients lie in a mother node 804 that immediately depends from the root 802 .
- basis coefficients are organized in child nodes 806 , each child node 806 corresponding to a unique support ⁇ j,k,l> and including the three basis coefficients that correspond to the wavelet basis functions ⁇ 1 kl j , ⁇ 2 kl j , ⁇ 3 kl j defined for the support.
- the child node 810 in the basis coefficient tree 800 includes the three basis coefficients f 1,14 , f 1,15 , and f 1,16 that corresponds to the three wavelet basis functions ⁇ 1 11 1 , ⁇ 2 11 1 , ⁇ 3 11 1 defined for the support ⁇ 1, 1, 1> in the child node 710 of FIG. 7 .
- the basis coefficient tree 800 includes one basis coefficient for each restricted basis function of the basis set shown in FIG. 4 .
- the basis coefficient tree 800 may have greater or fewer child nodes 806 depending on the resolution n of the basis set, and usually a basis set of higher resolution will be used.
- the basis coefficients of the function F i (v) are placed in the basis coefficient tree.
- one basis coefficient tree is defined for each function F i (v), such that a total of N basis coefficients trees are defined for the N functions whose product is being integrated. In other embodiments, a greater number of basis coefficient tree can be used.
- the N th order integral coefficients C N are determined, one N th order integral coefficient C N appearing in each contributing product in the sum of the series of contributing products that determines the integral u.
- the integral coefficient is zero, the entire contributing product is zero and does not contribute to the integral. If the integral coefficient is not zero, its value should be determined so that the contribution of the contributing product to the integral u is considered. For example, in FIG.
- each of the example products 602 , 604 , and 606 includes four basis coefficients and one 4 th order integral coefficients C 4 . If the 4 th order integral coefficient is zero, the product 602 , 604 , or 606 does not contribute to the integral u. Therefore, a set of principles for determining the N th order integral coefficient C N are described below with reference to FIGS. 9-13 .
- FIG. 9 is a diagram illustrating example products of two basis functions, and an example equation for calculating such products.
- a product P 2 of two basis functions b 1 and b 2 is another basis function b P 2 scaled by a sign +/ ⁇ , which may be positive or negative, and a magnitude
- the product P 2 of the two basis functions is not zero if the support of one of the basis functions completely covers the support of the other basis function, as shown in examples 901 through 915 .
- the support of one basis function completely covers the support of another basis function if the one basis function is positionally located in the diagram with respect to the x-y coordinate system in every (x, y) position occupied by the other basis function.
- the product P 2 of two basis functions is non-zero if and only if either there is a direct path in the basis function tree between the nodes occupied by the two basis functions, meaning the two basis functions are related as parent and child, or the two basis functions lie in the same node of the basis function tree, meaning the two basis functions have the same support.
- the product P 2 of two basis functions is zero, as shown in examples 916 , 917 , and 918 .
- the product P 2 of two basis functions is zero if the supports of the two basis functions are completely disjoint.
- the sign, magnitude, and basis function of the product P 2 can be determined from the characteristics of the two basis function being multiplied together.
- the product of two identical wavelet basis functions of the same support is the scaling basis function of the same support, scaled by a magnitude 2 j , as shown in examples 901 , 902 , and 903 and in equation (12).
- ⁇ kl j ⁇ kl j 2 j ⁇ kl j
- the sign of the product is negative, because the support of the child basis function covers a portion of the support of the parent basis function that is negative, where the diagram is black.
- the magnitude of the product is one, because the scale j of the parent basis function is zero.
- the sign of the product is positive, because the support of the child basis function covers a portion of the support of the parent basis function that is positive, where the diagram is white.
- FIG. 9 illustrate basis functions of the basis set 200 as shown in FIG. 2 , but the principles outlined generally apply to all basis functions, including basis functions that are not shown in FIG. 2 . Additionally, the principles outlined generally can be applied to determine the product of more than two basis functions, as described below.
- FIG. 10 is a diagram illustrating example products of more than two basis functions, and example equations for calculating such products.
- a product P g of g basis functions b 1 , . . . b g ⁇ 1 , b g is another basis function b P g scaled by a sign, which may be positive or negative, and a magnitude
- the product P g of g basis functions can be calculated by multiplying two of the basis functions together to produce a product P 2 , as described above with reference to FIG. 9 .
- the product P 2 can then be multiplied by the next basis function in the set of g basis functions.
- b P g ⁇ 1 ) ⁇ b g +/ ⁇
- the product P g is zero if the product P 2 of any two basis functions in the set of g basis functions is zero.
- the product P 2 of any two basis functions is non-zero if the two basis functions are related as parent and child or if the two basis functions have the same support. Therefore, the product P g is non-zero if and only if each basis functions in the set of g functions lies in a node that is on a direct path through the basis function tree to the node occupied by every other basis function in the set of g basis functions.
- the product P g is non-zero if and only if all of the basis functions lie in nodes that are on a single direct path through the basis function tree. Otherwise, the product P g of g basis functions is zero.
- an arbitrary set of basis functions 1020 is shown in example 1004 of FIG. 10 .
- the basis functions lie on a single direct path 614 through the basis function tree 600 in FIG. 6 . Therefore, the product 1022 of the set of basis functions 1020 is not zero, as shown in FIG. 10 .
- Determining the product P g is facilitated by placing the basis functions in a ranking order.
- Basis functions having finer scales are positioned in earlier positions in the ranking order than basis functions having coarser scales, and among basis functions having the same scale, wavelet basis functions of a given scale are positioned in earlier positions in the ranking order than the scaling basis function of that scale.
- a basis function having a finest scale j o of the set of g functions appears in an earliest position in the ranking order.
- the term “finer scale” means a scale that is numerically greater than another “coarser scale”, the terms finer and coarser denoting the resolution with which such basis functions are able to represent entities in the wavelet domain.
- the set of basis functions 1020 is organized in an arbitrary order in example 1004 , and the same set of basis functions 1020 is organized in the ranking order in example 1006 .
- An arrow 1024 moves in the direction of earlier positions in the ranking order, and terminates at an earliest position 1026 occupied by one of the basis functions having the finest scale j o , which in the set 1020 happens to be a scale j of 2.
- the earliest position 1026 in the ranking order is the position that is farthest to the left on the page, although any position on the page can be defined as the earliest position as long as the basis functions are positioned relative to each other according to the rule defined above.
- ⁇ j is the determined by taking the sum of the scale of each basis function in the set of g functions and then subtracting the finest scale j o appearing in the set of g functions.
- the finest scale j o is the scale of at least the basis function appearing in the earliest position 1026 in the ranking order.
- the sign can be determined by multiplying together a series of signs, the series of signs including one sign for each parent basis function in the product P g , the sign for the parent basis function being the sign of the portion of the support of the parent basis function that is covered by its child basis functions. It should be noted that a negative magnitude effects a reversal of the colors in the diagram because, as mentioned above, the diagram is white where the magnitude is positive, black where the magnitude is negative, and gray where the magnitude is zero.
- the set of basis functions 1020 includes five basis functions having a scale j of 2, two basis functions having a scale j of 1, and two basis functions having a scale j of 0.
- the finest scale j o appearing in the set of basis functions 1020 is j of 2, which is the scale of the basis function in the earliest position 1026 . Therefore, the magnitude of the product 1028 is
- 2 ((2+2+2+2+2+1+1+0+0) ⁇ 2) .
- a negative portion of the support of the parent basis function ⁇ 1 00 1 is covered by the supports of its child basis functions.
- a positive portion of the support of the parent basis function ⁇ 3 00 1 is covered by the supports of its child basis functions.
- the basis function b P g of the product P g can be determined by isolating the subset of m basis functions having the finest scale j o , and taking the product P m of the basis functions in the subset. In cases in which the product P g is not zero, the basis function b P g appearing in the product P g is the same as the basis function b P g appearing in the product P m of the subset of m basis functions having the finest scale j o . This result occurs because the product of a child basis function and a parent basis function is the child basis function, scaled by a sign and a magnitude, as explained above with reference to examples 913 through 916 of FIG. 9 .
- the finest scale j o in the set of basis functions 1020 is a scale of j o of 2
- the subset 1030 includes all of the basis functions having this scale.
- the product of the basis functions in the subset 1030 is taken.
- the basis function 1032 of the product 1034 that results is the scaling basis function ⁇ 11 2 and therefore the basis function 1036 of the product 1028 is also the scaling basis function ⁇ 11 2 , as shown in example 1006 .
- the basis function b P g appearing in the product P g of g basis functions can be determined from the supports ⁇ j,k,l> and basis function types of the basis functions in the subset of m basis functions having the finest scale j o .
- the support of the basis function b P g appearing in the product P g is the same as the support of the m basis functions having the finest scale j o .
- each basis function in the subset of m basis functions having the finest scale j o has the same support ⁇ j 0 ,k,l>; otherwise, at least two basis functions would not lie on a direct path through the basis function tree and their product P 2 would necessarily be zero, causing the product P g of the set of g basis functions to also be zero.
- the basis function type of the basis function b P g appearing in the product P g can be determined from the parities of three numbers, each number corresponding to one wavelet function type and being the aggregate number of times the wavelet function type appears in the subset of m basis functions having the finest scale j o .
- FIG. 11 is a table that tabulates the basis function type of the basis function b P g appearing in the product P g as a function of the parity of the aggregate number of each wavelet function type in the subset of m basis functions having the finest scale j o . It should be noted that, for the purposes of this disclosure, the parity of zero is considered to be even.
- each basis function in the subset of basis functions 1030 having the finest scale j o has the support ⁇ 2,1,1>, and therefore the basis function 1036 appearing in the product 1028 has the support ⁇ 2,1,1>.
- the subset of basis functions 1030 includes three basis functions of wavelet function type ⁇ 1 , one basis function of wavelet function type ⁇ 2 , and one basis function of wavelet function type ⁇ 3 .
- the aggregate number of wavelet function type ⁇ 1 is three, and the parity of this aggregate number is odd.
- the aggregate number of wavelet function type ⁇ 2 is one, and the parity of this aggregate number is odd.
- the aggregate number of wavelet function type ⁇ 3 is one, and the parity of this aggregate number is odd. Therefore, according to FIG. 11 the basis function type of the product P g is the scaling basis function ⁇ , which is the basis function 1036 appearing in the product 1028 in example 1006 .
- FIG. 12 is a block diagram illustrating an embodiment of a method 1200 for determining the N th order integral coefficient C N , the method employing the principles described above with reference to FIGS. 7-11 .
- block 1202 it is determined whether the N basis functions b h that appear in the product P N lie in nodes on a single direct path through the basis function tree. If the N basis functions b h do not lie in nodes on a single direct path, the product P N of the N basis functions is zero, as shown in block 1204 .
- the N th order integral coefficient C N is also zero, as shown in block 1206 . If the N basis functions b h do lie in nodes on a single direct path through the basis function tree, the product P N is nonzero, as shown in block 1208 .
- the N th order integral coefficient C N is also nonzero if the basis function type of the basis function b P N appearing in the product P N is a scaling basis functions ⁇ , according to equation (21). Otherwise, the basis function type is one of the wavelet basis functions ⁇ 1 , ⁇ 2 , or ⁇ 3 and the N th order integral coefficient C N is zero, according to equation (20). Therefore, in block 1210 , the basis function type of the basis function b P N appearing in the product P N is determined. In block 1212 , it is asked whether the basis function type of the basis function b P N appearing in the product P N is a scaling basis function ⁇ .
- FIG. 13 is a block diagram illustrating an embodiment of a method 1300 for determining the basis function type of the basis function b P N appearing in the product P N .
- the N basis functions b h that appear in the product P N are placed in the ranking order, such as the ranking order described with reference to FIG. 10 .
- a subset of m basis functions b h having a finest scale j o are isolated from the N basis functions that appear in the product P N .
- the aggregate number of times each of the three wavelet function types appears in the subset of m basis functions are counted.
- the parity of each of the three aggregate numbers is compared.
- the basis function b P N of the product P N is one of the wavelet basis functions, as shown in block 1312 .
- the basis function b P N of the product is the wavelet basis function that corresponds to the aggregate number having a parity that differs from the other two aggregate numbers. If the parities of each of the three numbers are the same, the basis function b P N of the product P N is the scaling basis function ⁇ , as shown in block 1314 .
- the N th order integral coefficient C N is zero, as shown in block 1214 . If the type is the scaling basis function type, the N th order integral coefficient C N is nonzero, as shown in block 1216 . In such a case, the nonzero value of the N th order integral coefficient C N is found using equation (22), which results from combining equations (19) and (21):
- ⁇ j is the sum of the scales of the N basis functions and j o is the finest scale of the N functions.
- the sign is determined by multiplying together a series of signs, the series of signs including one sign for each parent basis function in the product P N , the sign for the parent basis function being the sign of the portion of the support of the parent basis function that is covered by its child basis functions, as described above.
- the methods 1200 and 1300 can be implemented by computer.
- a system and/or a computer readable medium can be employed, the system and/or computer readable medium comprising logic configured to perform the steps of the method 1200 and/or 1300 , as described in further detail below.
- the product that includes the N th order integral coefficient C N is eliminated from the sum of the series of contributing products in block 110 .
- the product that includes the N th order integral coefficient C N is added to the sum of the series of contributing products.
- the integral of the product of the functions is represented as the sum of the series of contributing products that includes products 602 , 604 , and 606 .
- the basis coefficients correspond to basis functions that lie on a single direct path through the basis function tree, as shown in example 612 .
- each wavelet function type appearing in the subset of finest scale basis functions is zero, and according to FIG. 11 the basis function type of the basis function b P 4 of the product P b 1 ,b 1 ,b 1 ,b 1 4 is the scaling basis function ⁇ . Therefore, the 4 th order integral coefficient C b 1 ,b 1 ,d 1 ,d 1 4 in the product 602 is not zero, meaning the product 602 contributes to the integral and should not be eliminated from the series of contributing products.
- the basis coefficients correspond to basis functions that do not lie on a single direct path through the basis function tree, as shown in example 614 . Therefore, the product of the basis function is zero, and the corresponding 4 th order integral coefficient in the product 604 is zero, meaning the product 604 does not contribute to the integral and can be eliminated from the series of contributing products.
- the basis coefficients correspond to basis functions that lie on a single direct path through the basis function tree. Therefore, the product of the basis function is nonzero. However, the aggregate numbers of each wavelet function type are not all of the same parity, as shown in example 616 . Therefore, the 4 th order integral coefficient appearing in the product 606 is zero, meaning the product 606 does not contribute to the integral and can be eliminated from the series of contributing products.
- the systems and methods disclosed herein can be implemented in software, firmware, hardware, or combinations thereof. Furthermore, the components of the systems and methods can reside on one computer system, or can be distributed among more than one computer system. In some embodiments, the systems and methods are implemented in software, as an executable program or programs, and are executed by a special or general-purpose digital computer, or combination of computers, such as a personal digital assistant (PDA) or personal computer (PC).
- PDA personal digital assistant
- PC personal computer
- the computer 1401 includes a processor 1402 , memory 1403 , and one or more input or output (I/O) devices or peripherals 1404 that are communicatively coupled via a local interface 1405 .
- the local interface 1405 can be, for example but not limited to, one or more buses or other wired or wireless connections, as is known in the art.
- the local interface 1405 may have additional elements (omitted for simplicity), such as controllers, buffers, drivers, repeaters, and receivers, to enable communications. Further, the local interface 1405 may include address, control, and data connections to enable appropriate communications among the aforementioned components.
- the processor 1402 is a hardware device for executing software, particularly that stored in memory 1403 .
- the processor 1402 can be any custom made or commercially available processor, a central processing unit (CPU), an auxiliary processor among several processors resulting from the computer 1401 , a semiconductor based microprocessor (in the form of a microchip or chip set), a microprocessor, or generally any device for executing software instructions.
- the memory 1403 can include any one or combination of volatile memory elements (e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.)) and nonvolatile memory elements (e.g., ROM, hard drive, tape, CDROM, etc.). Moreover, the memory 1403 may incorporate electronic, magnetic, optical, or other types of storage media. Note that the memory 1403 can have a distributed architecture, where various components are situated remote from one another, but can be accessed by the processor 1402 .
- volatile memory elements e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.
- nonvolatile memory elements e.g., ROM, hard drive, tape, CDROM, etc.
- the memory 1403 may incorporate electronic, magnetic, optical, or other types of storage media. Note that the memory 1403 can have a distributed architecture, where various components are situated remote from one another, but can be accessed by the processor 1402 .
- the software in memory 1403 may include one or more separate programs, each of which comprises an ordered listing of executable instructions for implementing logical functions.
- the software in the memory 1403 includes one or more components of the systems and methods disclosed here, and a suitable operating system 1406 .
- the operating system 1406 essentially controls the execution of other computer programs, such as the systems and methods disclosed herein, file and data management, memory management, and communication control and related services.
- the systems and methods disclosed herein may be a source program, executable program (object code), script, or any other function comprising a set of instructions to be performed.
- a source program the program needs to be translated via a compiler, assembler, interpreter, or the like, which may or may not be included within memory 1403 , so as to operate properly in connection with the operating system 1406 .
- the peripherals 1404 may include input devices, for example but not limited to, a keyboard, mouse, scanner, microphone, etc. Furthermore, the peripherals 1404 may also include output devices, for example but not limited to, a printer, display, facsimile device, etc. Finally, the peripherals 1404 may further include devices that communicate both inputs and outputs, for instance but not limited to, a modulator/demodulator (modem; for accessing another device, system, or network), a radio frequency (RF) or other transceiver, a telephone interface, a bridge, a router, etc.
- modem for accessing another device, system, or network
- RF radio frequency
- the software in the memory 1403 may further include a basic input output system (BIOS).
- BIOS is a set of essential software routines that initialize and test hardware at startup, start the operating system 1406 , and support the transfer of data among the hardware devices.
- the BIOS is stored in the ROM so that the BIOS can be executed when the computer 1401 is activated.
- the processor 1402 When the computer 1401 is in operation, the processor 1402 is configured to execute software stored within the memory 1403 , to communicate data to and from the memory 1403 , and to generally control operations of the computer 1401 in accordance with the software.
- the systems and methods disclosed herein, in whole or in part, but typically the latter, are read by the processor 1402 , and perhaps buffered within the processor 1402 , and then executed.
- a “computer-readable medium” can be any means that can store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, system, or device.
- the computer-readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, system, device, or propagation medium.
- a non-exhaustive example set of the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM, EEPROM, or Flash memory), and a portable compact disc read-only memory (CDROM).
- the systems and methods disclosed herein are implemented in hardware, they can be implemented with any or a combination of the following technologies, which are each well known in the art: a discrete logic circuit(s) having logic gates for implementing logic functions upon data signals, an application specific integrated circuit(s) (ASIC) having appropriate combinatorial logic gates, a programmable gate array(s) (PGA), a field programmable gate array(s) (FPGA), etc.
- ASIC application specific integrated circuit
- PGA programmable gate array
- FPGA field programmable gate array
- FIG. 15 is a table illustrating seven cases that facilitate determining the N th order integral coefficient C N using a recursive approach. The seven cases are used to construct tree-traversal algorithms for determining the integral u of the product of the plurality of functions.
- the tree-traversal algorithms may be relatively less computationally complex than the method 100 , and therefore relatively faster when implemented by computer.
- the seven cases of FIG. 15 apply in cases in which the product of more than two functions N is being integrated.
- the N th order integral the coefficient C N can be determined by placing the basis functions appearing in the product P N in the ranking order, determining a product P N ⁇ 1 of the first (N ⁇ 1) basis functions appearing in the ranking order, and comparing the basis function type and scale of the product P N ⁇ 1 to the basis function type and scale of the basis function b N .
- the N th order integral coefficient C N is the integral of the N th order basis product P N :
- FIG. 16 is a block diagram illustrating another embodiment of a method 1600 for determining the integral of the product of a plurality of functions. Like the method 100 , the method 1600 is employed with reference to equation (10) above. Therefore, the method 1600 determines the integral u of a plurality of functions that includes N functions F i (v), i being an integer from 1 to N.
- each of the plurality of functions F i (v) whose product is being integrated is projected into the wavelet domain.
- Projecting the functions F i (v) into the wavelet domain comprises, for example, performing the wavelet transform on each function to project the function onto the basis set B.
- the wavelet transform is the two-dimensional, non-standard Haar transform and the basis set is the two-dimensional, non-standard Haar basis set.
- Each of the functions F i (v) is then represented in the wavelet domain as the series of basis coefficients f i,h scaling basis functions b h of the basis set B.
- the basis functions b h are the restricted basis functions of the basis set and the basis coefficients f i,h are the wavelet coefficients of the wavelet basis functions ⁇ 1 0 , ⁇ 2 0 , and ⁇ 3 0 (except for the basis coefficient of the mother scaling function ⁇ 0 ).
- the basis coefficients f i,h of each function F i (v) are encoded in a wavelet tree W i .
- the wavelet tree W i is, for example, a tree-shaped data structure that stores the basis coefficients f i,h of one function F i (v), organizing the basis coefficients according to the parent-child relationships described above with reference to the basis function tree 700 and the basis coefficient tree 800 .
- the wavelet tree W i has the coefficient of the mother scaling function ⁇ 0 at a root of the tree, and nodes w i depend from the root.
- Each node w i includes the basis coefficients f i,h of the restricted basis functions b h defined for the support ⁇ j, k, l>, and each node points to its four immediate child nodes having supports ⁇ j+1, k, l>.
- a mother node depending from the root stores the mother wavelet coefficients
- four immediate child nodes having supports ⁇ 1, k, l> depend from the mother node.
- the basis coefficients f i,h stored in the nodes w i are wavelet coefficients, because each of the restricted basis functions b h is of a wavelet type except for the mother scaling function ⁇ 0 , the coefficient of which is stored in the root.
- Each node w i also has a variable that stores a signed parent summation of the node.
- FIG. 17 illustrates an example wavelet tree W i in pseudo code 1700 .
- the data structure augtree is defined, the data structure augtree being one wavelet tree W i .
- a variable dc is defined to store the mother scaling coefficient.
- a pointer node is defined to point to a data structure augnode, which stores one node w i of the wavelet tree W i .
- the data structure augnode is defined.
- an array ⁇ [3] is defined to store the three wavelet coefficients of the node w i .
- a variable parentsum is defined to store the signed parent summation of the node w i , which is described below.
- an array of four pointers ch[4] is defined, the pointers of the array pointing to the node's four immediate child nodes w i , each of which also is stored using the data structure augnode.
- the wavelet tree W i is similar to other data structures for encoding wavelet coefficients, such as the quadtree structure described by Berman et al. in “Multiresolution painting and compositing”, In Proc. SIGGRAPH ' 94, 85-90, 1994, or the zero-tree structure described by Shapiro in “Embedded image coding using zerotrees of wavelet coefficients”, IEEE Transactions on Signal Processing SP, 41 (December), 3445-3462, 1993, both of which are incorporated by reference in their entireties.
- each function F i (v) is encoded into its own wavelet W i such that one wavelet tree W i results for each of the N functions whose product is being integrated, i being an integer from 1 to N.
- each function F i (v) may be encoded in a plurality of wavelet trees W i .
- non-linear approximation is performed on each function F i (v) to discard insignificant basis coefficients f i,h .
- Non-linear approximation is known in the art, and therefore a detailed discussion is omitted here.
- nonlinear approximation is described in Devore, “Nonlinear-approximation,” Acta Numerica 7, 51-150 (1998).
- non-linear approximation presupposes that if a basis coefficient f i,h is insignificant with respect to a given threshold, then all of the basis coefficients corresponding to basis functions of higher scales j are also likely to be insignificant with respect to that threshold. Therefore, the insignificant basis coefficients f i,h can be discarded.
- the insignificant basis coefficients are discarded by removing the insignificant basis coefficients from the wavelet tree W i .
- the non-linear approximation is performed before the basis coefficients f i,h are encoded into the wavelet tree W i .
- the insignificant basis coefficients f i,h are discarded by only encoding the significant basis coefficients into the wavelet tree W i without encoding the insignificant basis coefficients.
- blocks 1604 and 1606 of FIG. 16 are reversed.
- the non-linear approximation is omitted.
- determining the integral u of the plurality of functions F i (v) is relatively more computationally complex and is relatively slower; however, the value determined for the integral may be more accurate.
- the non-linear approximation is performed on some but not all of the wavelet trees W i , such that some of the functions F i (v) are approximated but others are not.
- the integral u of the product of the plurality of functions F i (v) is determined by traversing direct paths through the wavelet trees W i that represent the functions, along which direct paths the N th order integral coefficients C N may be non-zero.
- Traversing direct paths through the wavelet trees W i comprises synchronously traversing a plurality of wavelet trees W i , the wavelet trees W i storing the basis coefficients of the functions whose product is being integrated, at least one wavelet tree being traversed for each function F i (v) whose product is being integrated.
- exactly N wavelet trees W i are synchronously traversed in embodiments in which each function F i (v) is represented by exactly one wavelet tree W i .
- a set of nodes [w 1 , . . . , w N ] are synchronously processed.
- the set of nodes [w 1 , . . . , w N ] includes one node w i from each of the wavelet trees W i .
- the term “traversing direct paths through the wavelet trees W i ” denotes that the nodes w i that are synchronously processed correspond to nodes in the basis function tree that lie on a single direct path through the basis function tree, as described above with reference to FIG. 7 . In other words, within the set of nodes [w 1 , . . .
- no two nodes w i correspond to nodes of the basis function tree that are not on a direct path with each other.
- no two nodes W i correspond to supports ⁇ j,k,l> that are completely disjoint from each other.
- the supports ⁇ j,k,l> to which the nodes W i correspond are either the same or are related as parent and child.
- the support ⁇ j, k, l> of one of the nodes W i completely covers the support ⁇ j, k, l> of the other node w i .
- the N th order integral coefficient C N of basis functions may be nonzero if each of the basis functions lie on a single direct path through the basis function tree; however, the N th order integral coefficient C N is zero if the basis functions do not lie on a single direct path through the basis function tree.
- the integral u of the product of the plurality of functions F i (v) is the sum of a series of contributing products, as shown in equation (10).
- Each contributing product includes one basis coefficient from each function F i (v) and one N th order integral coefficient C N , which is the integral of the corresponding basis functions.
- the integral u can be determined by synchronously processing one node w i from each wavelet tree W i .
- synchronously processing nodes w i from disparate wavelet trees W i that do not correspond to nodes on a single direct path through the basis function tree is of little value, because in such case, the N th order integral coefficient C N is necessarily zero. Therefore, confining the traversal to direct paths through the wavelet trees W i while avoiding the indirect paths enables accumulating contributing products that could contribute to the integral u while avoiding those that necessarily do not contribute to the integral u. As a result, traversing the wavelet trees W i on direct paths determines the integral u with the same accuracy but with fewer computations than other systems and methods.
- FIG. 18 is a block diagram illustrating an embodiment of a method 1800 for traversing direct paths through a plurality of wavelet trees W i to determine the integral u of the product of the plurality of functions F i (v), which can be employed in block 1608 of FIG. 16 .
- the integral u is initially incremented with the contribution of the roots of the wavelet trees W i .
- the contribution of the roots is determined by multiplying together the mother scaling coefficient ⁇ stored in the root of each wavelet tree W i , because in such case the N th order integral coefficient C N is one.
- a set of nodes [w 1 , . . . , w N ] is synchronously processed.
- the set of nodes [w 1 , . . . , w N ] includes one node w i from each of the wavelet trees W i .
- No two nodes w i in the set correspond to supports ⁇ j, k, l> that are completely disjoint from each other, because the wavelet trees W i are traversed on direct paths.
- a contribution to the integral u is determined for the set of nodes [w 1 , . . . , w N ]. In some embodiments, the contribution of the set of nodes [w 1 , . . .
- w N is determined by separating the nodes into a group of null nodes and a group of the non-null nodes, determining a contribution of the null nodes, and determining a contribution of the non-null nodes.
- the contribution of the null nodes is limited to the contribution of their parent nodes, which is not ignored even though the nodes themselves are null.
- the contribution of the non-null nodes is determined either by recursively expanding the non-null nodes to calculate the contribution of subsets of the non-null nodes, or by iterating through the non-null nodes to build a table that accumulates the magnitude of the contribution of the non-null nodes.
- a set of child nodes [w 1 , . . . , w N ] is synchronously processed.
- the set of child nodes [w 1 , . . . , w N ] includes one node w i from each of the wavelet trees W i , the one node being the immediate child of the node most recently processed. Because the child nodes w i immediately depend from the most recently processed nodes, the wavelet trees W i are traversed along direct paths.
- the contribution of the set of child nodes [w 1 , . . . , w N ] may then be determined in the manner described above, and the integral may be incremented, and the process may be repeated for subsequent sets of child nodes until the last set of nodes is reached.
- traversing direct paths through wavelet trees W i in block 1608 of FIG. 16 comprises applying a tree-traversal algorithm to the wavelet trees.
- FIG. 19 illustrates in pseudo code 1900 an example tree-traversal algorithm 1902 for determining the integral u and embodiments of component routines, such as routine 1904 , routine 1906 , and routine 1908 .
- the algorithm 1902 is defined as FunctionProductIntegral in line 1 .
- the algorithm 1902 accepts as input a set of wavelet trees (W 1 , . . . , W N ), one for each function F i (v) whose product is being integrated.
- the integral u is initially incremented to the product of the mother scaling coefficients, by multiplying together the variable W i .dc of each wavelet tree in the set (W 1 , . . . , W N ).
- the N th order integral coefficient C N is one, because regardless of N the integral coefficient of a series of mother scaling functions ⁇ 0 is one and need not be determined to increment the integral u.
- a routine traverseAugTrees is called, which is the routine 1904 .
- the routine 1904 is configured to simultaneously process a set of nodes (w 1 , . . .
- the routine 1904 processes the set of nodes (W 1 .node, . . . , W N .node), which are the mother nodes that include the mother wavelet coefficients.
- the routine 1904 then iteratively calls itself to capture the contributions of later sets of nodes, traversing the set of wavelet trees (W 1 , . . . , W N ) from the top down along direct paths through the wavelet trees.
- the signed parent summation of the node w i which is stored in the variable parentsum of the node w i .
- the mother node w i that holds the mother wavelet coefficients has the value of the mother scaling coefficient dc as its signed parent summation.
- the signed parent summation is the signed parent summation of it's immediate parent node p i plus the sum of the wavelet coefficients stored in the immediate parent node p i , scaled by the magnitude of the product of two basis functions, one in the node w i and the other in the immediate parent node p i , as shown in equation (23):
- w i ⁇ parentsum p i ⁇ parentsum + 2 j - 1 ⁇ [ ( p i ⁇ ⁇ ⁇ sign ⁇ ⁇ ( 0 , q k , q l ) ) + ( p i ⁇ ⁇ ⁇ sign ⁇ ⁇ ( 1 , q k , q l ) ) + ( p i ⁇ ⁇ ⁇ sign ⁇ ⁇ ( 2 , q k , q l ) ) ] ( 23 )
- p i is the immediate parent of the node w i
- p i . ⁇ is the wavelet coefficient in the parent node p i corresponding to the basis function of type ⁇ 1
- p i . ⁇ is the wavelet coefficient in the parent node p i corresponding to the basis function of type ⁇ 2
- p i . ⁇ is the wavelet coefficient in the parent node p i corresponding to the basis function of type
- the variable w i .parentsum is inspired by Ng in “Triple product wavelet integrals for all-frequency relighting”, ACM Transactions on Graphics
- variable cum An accumulated parent summation is stored in a variable cum.
- the variable cum is initially set to one, which is the N th order integral coefficient C N of a series of mother scaling functions ⁇ 0 , regardless of N.
- the set of wavelet trees (W 1 , . . . , W N ) are traversed, the accumulated parent summation is incremented as described below.
- the routine 1904 will now be described.
- the routine 1904 is defined as traverseAugTrees, accepting as inputs the variable cum and the sets of nodes (w 1 , . . . , w N ).
- the nodes of the set (w 1 , . . . , w N ) are reorganized into a two sets of nodes: one being a set of non-null nodes (w 1 , . . . , w k ) and the other being a set of null nodes (w k+1 , . . . , w N ).
- the subscript i has denoted that a specific wavelet tree W i corresponds to a specific function F i (v), or alternatively that a specific node w i is a node of a specific wavelet tree W i .
- the subscript i merely indicates whether the node w i is null or non-null, with non-null nodes having subscripts w l to w k and null nodes having subscripts w k+1 to w N . It is likely that some of the nodes w i are null in embodiments in which non-linear approximation is performed.
- the routine 1904 returns if at most one of the nodes in the set (w 1 , . . . , w N ) is null.
- the N th order integral coefficient C N is zero, because each node w i only includes wavelet coefficients and the integral of each wavelet basis functions ⁇ 1 , ⁇ 2 , and ⁇ 3 is zero.
- the set of non-null nodes (w 1 , . . . , w k ) can contribute to the integral u, however, the contribution of the set of null nodes (w k+1 , . . . , w N ) is limited to the contribution of their parent nodes p i . Therefore, the contribution of the nodes (w 1 , . . . , w N ) to the integral u is determined by first updating the signed parent summation w i .parentsum for each node (w 1 , . . . , w N ) in line 4 , updating the accumulated parent summation cum with the contributions of only the null nodes (w k+1 , . .
- the routine traverseAugTrees 1904 then iteratively calls itself four times to independently process the next four sets of nodes, which are the immediate child nodes of the non-null nodes.
- the routine 1904 calls itself for the nodes (w 1 . ch[i], . . . , w k .ch[i]) in a loop, where ch[i] is the pointer to the child node and i is an integer from 0 to 3.
- the routine getProductIntegral 1906 which is called by the routine 1904 to determine the contribution of the non-null nodes (w 1 , . . . , w k ), recursively calculates the non-zero N th order integral coefficients C N using the first three cases of FIG. 15 .
- the routine 1906 accepts a plurality of nodes w i as input, initially processing the set of non-null nodes (w 1 , . . . , w k ).
- the routine 1906 recursively calls itself and three instances of a routine getWaveletProduct 1908 , passing in one fewer nodes with each call, and returning the sum of the four routines scaled by variables of the node not passed in for the call.
- the routine 1906 is scaled by the parentsum of the node w i not passed in and each return of the routine 1908 is scaled by one of the three wavelet coefficients of the node w i not passed in.
- the routine returns zero if only one node w i is passed in.
- the routine getWaveletProduct 1908 uses cases 4 , 6 , and 7 of FIG. 15 to evaluate the magnitude of the product where the type of the basis function appearing in the product is one of the wavelet basis functions.
- the routine getWaveletProduct 1908 accepts as input a plurality of nodes w i and three input parameters a, b, and c that differentiate the three different wavelet types.
- the routine getWaveletProduct 1908 recursively calls the routine getProductIntegral 1906 and three instances of itself, passing in one fewer nodes with each call, and returning the sum of the four routines scaled by variables of the node not passed in for the call, plus the parentsum variables of the fewer nodes scaled by one of the wavelet coefficients of the node not passed in for the call.
- the routine getWaveletProduct 1908 returns one of the wavelet coefficients if only one node w i is passed in.
- the embodiment of the tree-traversal algorithm FunctionProductIntegral 1902 may have a computational complexity on the order of O(m4 N ), where m is the number of significant basis coefficients f i,h retained after the nonlinear approximation, and N is the number of functions F i (v) whose product is being integrated.
- the algorithm 1902 can be optimized such that the computational complexity is on the order of O(mN).
- the embodiment of the routine getProductIntegral 1906 traverses the wavelet trees W i from the top down, recursively expanding the nodes w i to calculate the product of one fewer nodes, but in other embodiments of the routine the recursive expansion is eliminated to increase the speed of the algorithm.
- FIG. 20 illustrates in pseudo code 2000 an optimized tree-traversal algorithm 2002 for determining the integral u, and embodiments of component routines, such as the routine 2004 , the routine 2006 , the routine 2008 , and the routine 2010 .
- the algorithm 2002 is the same as the algorithm 1902 and the routine 2004 is the same as the routine 1904 described above.
- the routine getProductIntegral 2006 differs from the routine getProductIntegral 1906 .
- the routine getProductIntegral 2006 employs an intermediate table T [N], an embodiment of which is illustrated with example pseudo code 2100 in FIG. 21 .
- the table T [N] is defined to have N records, the fields of which are described with reference to a subset of nodes.
- the field ⁇ is defined, which stores the magnitude of the product of a subset of the nodes w i that have a scaling basis function ⁇ appearing in the product.
- the field ⁇ [ 0 ] is defined.
- the field ⁇ [ 0 ] stores the magnitude of the product of a subset of the nodes w i that have a wavelet basis function of type ⁇ 1 appearing in the product.
- the field ⁇ [ 1 ] is defined.
- the field ⁇ [ 1 ] stores the magnitude of the product of a subset of the nodes w i that have a wavelet basis function of type ⁇ 2 appearing in the product.
- the field ⁇ [ 2 ] is defined.
- the field ⁇ [ 2 ] stores the magnitude of the product of a subset of the nodes w i that have a wavelet basis function of type ⁇ 3 appearing in the product.
- the field cum is defined.
- the field cum stores the accumulated parent summation of the subset, meaning the sum of the parentsum variables of each node w i in the subset.
- the routine getProductIntegral 2006 incrementally builds the table T by iterating through the set of non-null nodes (w 1 , . . . , w k ). In line 2 , the routine 2006 returns zero if only one node w i is input into the routine. In lines 3 - 4 , a first record in the table T [ 1 ] is updated with the basis coefficients of the node w 1 . A field T [ 1 ]. ⁇ is set to zero because the node w 1 does not include a basis coefficient for the scaling basis function.
- a field T [ 1 ]. ⁇ [ 0 ] is updated with the wavelet coefficient for the basis function of type ⁇ 1
- ⁇ [ 1 ] is updated with the wavelet coefficient for the basis function of type ⁇ 2
- ⁇ [ 2 ] is updated with the wavelet coefficient for the basis function of type ⁇ 3 .
- the field T [ 1 ].cum is set to the signed parent summation of the node w 1 , because as mentioned above, the field cum accumulates the signed parent summations of a subset of nodes.
- the routine 2006 iterates through all of the remaining nodes w i except for the last node, updating a record [i] in the table T for each node.
- the field T [i].cum accumulates the signed parent summations of the nodes in the subset (w 1 , . . . , w i ) by multiplying the signed parent summation parentsum of the node w, by the value of the accumulated parent summation cum stored in the previous record, T [i ⁇ 1].cum.
- the field T [i]. ⁇ is updated with a value returned from a routine getP, and the fields T [i]. ⁇ [ 0 ], T [i]. ⁇ [ 1 ], and T [i]. ⁇ [ 2 ] are each respectively updated with a value returned from a routine getW, both of which routines are described below.
- the routine 2002 returns the value of getP for the last node w k , as described below.
- the routine getp(i) 2008 is defined on line 1 to accept the integer i as input.
- the routine returns zero if the value of i is one.
- the routine 2008 returns a magnitude of the product of the subset of the nodes (w 1 , . . . , w i ) if the basis function appearing in the product is the scaling basis function. Recall that a product of two basis functions is a scaling basis function if a child scaling basis function is multiplied by its parent basis function or if a wavelet basis function is multiplied by itself.
- routine 2008 returns the sum of the signed parent summation w i .parentsum multiplied by the stored magnitude of the product of scaling basis function type in the preceding record T [i ⁇ 1]. ⁇ , and each of the wavelet coefficients, w 1 . ⁇ [ 0 ], w 1 . ⁇ [ 1 ], and w 1 . ⁇ [ 0 ], multiplied by each of the stored magnitudes of the same wavelet type in the preceding record, T[i ⁇ 1]. ⁇ [ 0 ], T[i ⁇ 1]. ⁇ [ 1 ], and T[i ⁇ 1]. ⁇ [ 2 ], respectively.
- the routine getW(a, b, c, i) 2010 is defined on line 1 to accept the integer i as input and three input parameters a, b, and c that differentiate the three different wavelet types.
- the routine 2010 returns the wavelet coefficient of type a if the value of i is 1.
- the routine 2010 returns a magnitude of the product of the subset of the nodes (w 1 , . . . , w i ) if the basis function appearing in the product is the wavelet basis function of type a.
- the computational complexity of each of the tree-traversal algorithms is linearly related to m, the number of significant basis coefficients retained after the non-linear approximation is performed.
- the algorithm 1902 which is recursive, may have a computational complexity on the order of O(m4 N )
- the algorithm 2002 which employs the table, may have computational complexity on the order of O(mN).
- the computational complexity of the algorithm affects the speed with which the integral u is determined, and therefore reducing the computation complexity is desirable.
- the computational complexity can be further controlled by varying the traversal depth of the tree-traversal algorithm. Traversing at higher traversal depths denotes traversing subsets of nodes that have relatively lower scales and are located relatively closer to the root of the wavelet tree, while traversing at lower transversal depths denotes traversing subsets of nodes that include relatively higher scales and are located relatively farther from the root node.
- the traversal depth of the algorithm may be controlled, such that the need for fast computation can be balanced against the need for accurate computation on a case by case basis.
- FIG. 22 is an embodiment of a system 2200 for determining the integral u of the product of a plurality of functions F i (v).
- the system includes logic 2202 configured to project the functions F i (v) of the plurality of functions into the wavelet domain, logic 2204 configured to encode basis coefficients f i,h of each function in a wavelet tree W i , logic 2206 configured to perform non-linear approximation on the functions F i (v) to discard insignificant basis coefficients f i,h , and logic 2208 configured to traverse direct paths through the wavelet trees W i , where the N th order integral coefficients C N may be non-zero, to determine the integral u of the product of the functions F i (v) represented by the wavelet trees W i .
- FIG. 23 is a diagram illustrating an example scene 2300 .
- An object 2302 in the scene 2300 has a point x on a surface 2304 of the object, and a radiance B exiting the point x is a function of a direction of view ⁇ .
- determining the radiance of the point x requires integrating the product of a plurality of functions that contribute to the model, as shown in equation (26):
- FIG. 24 is a block diagram illustrating an embodiment of a method of rendering a graphical scene in which the radiance of a point x in the scene is determined by integrating the product of a plurality of functions contributing to a light transport model of the scene.
- the method 2400 will be described with reference to the example scene 2300 shown in FIG. 23 .
- the plurality of functions that contribute to the light transport model of the scene 2300 are determined.
- the plurality of functions include, for example, a distant environment lighting function L( ⁇ ), a bidirectional reflectance distribution function (BRDF) ⁇ (x, ⁇ ⁇ ), a local visibility function O L (x, ⁇ ), a cosine term (D ⁇ ) and a plurality of dynamic occlusion functions O i (x, ⁇ ).
- the distant environment lighting function L( ⁇ ) represents distant environment lighting as a function of a vector ⁇ , the vector ⁇ representing the incident direction of the light.
- the BRDF ⁇ (x, ⁇ ⁇ ) models the interaction of the incident light L with the surface 2304 of the object 2302 .
- the local visibility function O L (x, ⁇ ) represents the local visibility at the point x due to self-occlusion.
- the cosine term (D ⁇ ) represents Lambert's law: the exitant radiance B is directly proportional to the dot product of a vector D and the vector ⁇ , the vector D being a vector that is normal to the surface 2304 of the object 2302 at the point x.
- Each dynamic occlusion function O i (x, ⁇ ) represents the dynamic occlusion at the point x caused by an i th neighboring object 2306 in the scene 2300 , where i can be any integer from 1 to g, g being the total number of neighboring objects 2306 that contribute to the light transport model.
- Three neighboring objects 2306 are shown in FIG. 23 for illustrative purposes, although greater or fewer neighboring objects could be included.
- the cosine term (D ⁇ ) can be combined with the local visibility O L (x, ⁇ ) term as shown in equation (27):
- the exitant radiance B at the fixed point x is the integral of the product of g+3 functions, g being the number of neighboring objects 2306 that could dynamically occlude and cast a shadow upon the point x.
- the product of the functions is integrated with respect to all incident directions ⁇ surrounding the point x.
- each function that contributes to the light transport model of the scene is represented as a cubemap function 2310 , and in block 2402 determining the plurality of functions comprises determining the cubemap functions.
- Example cubemaps functions 2310 are shown in FIG. 23 , where the distant environment lighting function L( ⁇ ) is represented by the cubemap function 2312 , the BRDF ⁇ ( ⁇ ) is represented by the cubemap function 2314 , the local visibility function ⁇ L ( ⁇ ) is represented by the cubemap function 2316 , and three dynamic occlusion functions O 1 ( ⁇ ), O 2 ( ⁇ ), and O 3 ( ⁇ ) are represented by the cubemap functions 2318 , 2320 , and 2322 , respectively, one for each neighboring object 2306 in the scene 2300 . Again, three neighboring objects 2306 are illustrated by way of example.
- the cubemaps functions 2310 can be determined in a variety of ways that are known or will later be known to a person of skill in the art, one example embodiment of determining the cubemap functions is described below.
- data is collected about the scene by sampling the objects and lighting within the scene.
- the sampled data is then processed to create the cubemap functions 2310 .
- the sampled data may compiled interactively or in advance of run-time, and in cases in which the sampled data is compiled in advance, the cubemap functions 2310 may be pre-computed in advance or computed interactively.
- the lighting cubemap function 2312 is interactively determined from interactively sampled data of the high dynamic range illumination, as described in Debevec et al., “Recovering high dynamic range radiance maps from photographs,” In Proc. SIGGRAPH '97, 369-378, which is incorporated by reference herein in its entirety.
- the illumination may be sampled at a resolution of 6 ⁇ 64 ⁇ 64, where 6 denotes the number of faces 2308 of the cubemap and 64 ⁇ 64 denotes the number of samples taken per face.
- Sampling the illumination at a resolution that is the same as the resolution used to sample the visibility and BRDF may be desirable because, sampling at a higher resolution merely captures basis coefficients of a finer scale that will not contribute to the light transport model if comparable basis coefficients are not captured for other functions.
- the BRDF cubemap function 2314 is interactively determined from pre-computed data.
- the pre-computed data Prior to run-time, the pre-computed data is tabulated by, for example, sampling Phong BRDF's with a resolution in ⁇ r x ⁇ of up to (6 ⁇ 64 ⁇ 64) ⁇ (6 ⁇ 64 ⁇ 64), where ⁇ r is a reflection vector of the direction of view ⁇ about the vector D that is normal to the surface.
- the Phong BRDF's can have a shininess of up to, for example, 200 .
- the pre-computed BRDF data can be gathered as described in the Ng paper previously incorporated by reference.
- the BRDF cubemap 2314 is interactively interpolated from the tabulated data.
- the local visibility cubemap function 2316 is pre-computed using pre-computed data, and the dynamic occlusion cubemap functions 2318 , 2320 , and 2322 are determined interactively using pre-computed data.
- a local visibility field of the object is sampled at points x on its surface 2304 .
- a global visibility field is sampled in nearby surrounding regions, such as on a virtual ground plane of the object that is a lower plane of a bounding box of the object. Sampling the global visibility field is accomplished using schemes such as a planar sampling scheme and/or a spherical sampling scheme.
- the planar sampling scheme samples the visibility in the form of concentric circles on each object's virtual ground plane.
- the center of each concentric circle is the projection of the object center on the virtual ground plane, the radius of the concentric circles varying from about 0.05 r to about 10 r, r being a radius of the projection of the object on the virtual ground plane.
- the spherical sampling scheme samples the visibility of the region surrounding each scene entity in the form of concentric spheres.
- the centers of the concentric spheres may coincide with the centers of the concentric circles.
- Twenty concentric spheres may be used, the radius of the concentric spheres varying from about 0.2 R to about 6 R, R being the radius of the bounding sphere. Each concentric sphere is sampled at about 6 ⁇ 9 ⁇ 9.
- Such a sampling scheme is similar to the object occlusion field described in Zhou, et al., “Precomputed shadow field for dynamic scenes,” ACM Transactions on Graphics ( SIGGRAPH ' 05), 24, 3, 1196-1201, which is incorporated by reference herein in its entirety.
- the difference between the radiuses of neighboring concentric circles and spheres, in the planar and spherical sampling schemes respectively, increases linearly with increasing distance from the projection of the object center on the virtual ground plane.
- the local visibility cubemap function 2316 and the dynamic occlusion cubemap functions 2318 , 2320 , and 2322 are pre-computed from the sampled data by rasterizing the coarse model using graphics hardware. Each cubemap is rasterized at a resolution of 6 ⁇ 64 ⁇ 64.
- multiple objects 2302 , 2306 in the scene 2300 share the same geometry and visibility field, in which case each of the objects is represented by the same cubemap function 2310 . For example, if a scene includes multiple identical chairs, the cubemap function 2310 of the chair is determined only once.
- Equation (10) generically represents determining the integral u of the product of a plurality of functions including N generic functions F i (v).
- the N functions F i (v) are the functions that contribute to the light transport model, including the distant environment lighting function L( ⁇ ), the bi-directional reflectance distribution (BRDF) function ⁇ ( ⁇ ), the local visibility function combined with the cosine term ⁇ L ( ⁇ ), and a plurality of dynamic occlusion functions O i (x, ⁇ ), where i is an integer from 1 to g.
- the light transport model is known in the art, a through discussion of the model is omitted.
- the model may take other forms.
- some of the functions that contribute to the light transport model may be omitted, or additional functions may be included.
- the cosine term (D ⁇ ) need not be combined with the local visibility function O L (x, ⁇ ).
- O L local visibility function
- the cubemap S is employed, but in other embodiments other conventions such as a hemisphere can be employed. Additionally, the functions that contribute to the light transport model need not be represented as cubemap functions 2310 , or the cubemap functions can be determined in manners other than those described in the example embodiment above.
- each of the plurality of functions that contribute to the light transport model is projected into the wavelet domain, as described above with reference to block 1602 of FIG. 16 .
- the sampling resolution used to determine the cubemap function may determine the resolution n of the basis set B onto which the cubemap function is projected.
- the basis set B may have a resolution n of 7, although other resolutions may be used.
- the basis coefficients of each function are encoded in a wavelet tree W i .
- encoding the basis coefficients of the functions in the wavelet trees W i comprises encoding the basis coefficients of each face 2308 of each cubemap function 2310 in a separate wavelet tree W i .
- six wavelet trees W i are encoded for each cubemap function 2310 , one per face 2308 of the cubemap function 2310 .
- each function can be represented with greater of fewer wavelet trees W i .
- non-linear approximation is performed on each function to discard insignificant basis coefficients, as described above with reference to block 1606 of FIG. 16 .
- the non-linear approximation block 2408 is performed before the encoding block 2406 , the non-linear approximation block 2408 is performed on only a subset of the functions, or the non-linear approximation block 2408 is omitted completely.
- the distant environment lighting function L( ⁇ ) is approximated using a relatively larger number of basis coefficients than the other functions, such that the high-frequency components of the lighting are represented.
- the radiance B of the point x which is the integral of the product of the functions that contribute to the light transport model, is determined by traversing direct paths through the wavelet trees W i , where the N th order integral coefficients C N may be nonzero, as described above with reference to block 1608 of FIG. 6 .
- traversing direct paths through the wavelet trees W i may comprise performing the method 1800 described above with reference to FIG. 18 or applying a tree-traversal algorithm to the wavelet trees W i , such as either the algorithm 1902 or the algorithm 2002 described above with reference to FIG. 19 and FIG. 20 .
- traversing the wavelet trees W i may determine the radiance of the point x over one face 2308 of the cubemap S.
- each function is represented by a plurality of wavelet trees W i as a result of the faces 2308 of the cubmap functions 2310 being encoded in separate wavelet trees W i .
- traversing the wavelet trees W i comprises traversing sets of wavelet trees to determine the radiance B over face 2308 , each set corresponding to one face 2308 of the cubemap and each set including one wavelet tree W i for each function.
- the wavelet trees W i that correspond to a given face 2308 are traversed to determine the radiance B per face, and the six radiances B per face 2308 are summed to determine the radiance B over the entire cubemap S.
- the graphics rendering application may require three colors, one for each of three independent color channels.
- the radiance B over the entire cubemap S may represent one color value for the point x. This is because, for example, the lighting function L( ⁇ ) and BRDF function ⁇ ( ⁇ ) may be different for different color channels at a single point x.
- traversing the wavelet trees W i comprises iteratively traversing the wavelet trees to determine three color values for the point x. Therefore, the tree traversal is iterated six times, once per face of the cubemap to determine the first color, and the six iterations are repeated for the second and third color value.
- the tree-traversal is iterated eighteen times per point x, once per cubemap face 2308 per color channel.
- the depth to which the wavelet trees W i are traversed is interactively controlled, the purpose of which is described below.
- Rendering generally comprises, for example, using a graphics rendering application to rasterize the scene using graphics hardware.
- the graphics rendering application sets the color of the point x using the color values determined in block 2410 .
- the algorithm then iterates for the next point x, each visible point x being processed, a plurality of points x producing objects, and a plurality of objects producing the rendered scene.
- the method 2400 can be used to interactively render dynamic, high-glossy objects 2302 with realistic, all-frequency shadows.
- the shadows cast by neighboring objects 2306 on the object 2302 appear in the rendered scene due to the dynamic occlusion functions O i (x, ⁇ ), even if the objects are moving.
- the shadows cast on an object 2302 by itself also appear in the scene, due to the local visibility function ⁇ L ( ⁇ ).
- the shadows cast on the virtual ground plane of the objects are represented, because the visibility on the virtual ground plane was considered in creating the cubemap functions.
- the BRDF ⁇ ( ⁇ ) enables reproducing the lighting affects caused by materials and textures in the scene, including glossy materials
- the distant environment lighting function L( ⁇ ) can describe all-frequency lighting, such that specular highlights and non-diffuse shadows, including material specific highlights and shadows, appear in the rendered scene. Both the lighting and the direction of view can be varied, and the objects can be interactively manipulated. Note that any or all of the above-described effects can be simultaneously or individually produced, because each of the above-described functions simultaneously contributes to the integral B. Therefore, the method 2400 has applicability in fields such as industrial lighting and computer gaming, among others, in which fields interactive lighting is desirable.
- the speed of rendering and/or richness of the lighted scene can be interactively controlled by varying the traversal depth.
- Limiting the traversal to relatively higher (lower scale) nodes w i in the wavelet trees W i reduces the computational complexity, which is related, such as linearly related, to the number of nodes w i processed.
- the relatively lower (higher scale) nodes w i may not be traversed, and therefore the contributions of these nodes to the lighting of the scene are not considered.
- the lower nodes w i correlate to higher scales, generally representing more resolved or higher-frequency information, not traversing the lower nodes w i may eliminate higher-frequency components of shadows and view-dependent specularities from the light transport model and therefore the rendered scene. Conversely, traversing relatively lower nodes w i enables the contributions of relatively more basis coefficients to be considered, the additional basis coefficients including higher-frequency and/or more resolved lighting information. Therefore, the rendered scene may have more detail but may take longer to render due to the increased complexity of determining the lighting.
- FIG. 25 is a block diagram illustrating an embodiment of a system of rendering a graphical scene in which the radiance B of a point x in the scene is determined by integrating the product of a plurality of functions contributing to a light transport model of the scene.
- the system 2500 includes logic 2502 configured to determine a plurality of functions that contribute to a light transport model of a scene, logic 2504 configured to project the functions of the plurality of functions into the wavelet domain, logic 2506 configured to encode basis coefficients of each function in a wavelet tree, logic 2508 configured to perform non-linear approximation on the functions to discard insignificant basis coefficients, logic 2510 configured to traverse direct paths through the wavelet trees to determine the integral of the product of the functions that contribute to the light transport model, and logic 2512 configured to render the scene.
- FIG. 26 is a block diagram illustrating a method 2600 for approximating the integral of the product of a plurality of functions.
- the method 2600 is relatively less computationally complex and is relatively faster than the method of other embodiments; however, the method approximates the integral more so than the methods of other embodiments.
- the plurality of functions F i (v) whose product is being integrated are factored into sets of functions.
- the plurality of functions F i (v) includes N functions, and the N functions can be factored into a plurality of sets.
- the N functions are factored into two sets, a first set having functions F i (v) for i from 1 to p, and a second set having functions F i (v) for i from (p+1) to N:
- the product of the functions F i (v) in the set can be represented in the wavelet domain as a vector T.
- the product of the functions of the first set can be represented as a vector T 1 and the product of the functions of the second set can be represented as a vector T 2 , as shown in equation (30):
- the integral u of the product of the functions is the integral of the product of vectors, or alternatively, the inner product of the vectors.
- the integral u can be approximated by fixing at least one of the vectors in advance while allowing at least one of the vectors to vary. In cases in which at least one of the vectors is fixed, approximating the integral is relatively less computationally complex, and therefore relatively faster, than in cases in which none of the vectors are fixed. For example, in equation (31), the vector T 1 can be fixed while the vector T 2 varies, or vice versa.
- Equations (29) through (31) the N functions are factored into two sets and one of the sets is fixed
- the N functions can be factored into more than two sets, each of the sets having one or more functions, and that one or more of the sets can be fixed or can vary.
- the remainder of the discussion is directed to an embodiment in which all of the functions F i (v) are fixed except for one function that is permitted to vary, as shown in equations (32) to (34). In such an embodiment, the relative computational complexity is further decreased, and the relative speed of computation is further increased.
- a first vector T is determined.
- the first vector T represents the product of the set of fixed functions [F 1 (v), . . . , F N ⁇ 1 (v)] in the wavelet domain as a series of basis coefficients (t 1 , . . . , t M ) or alternatively as the sum of the series of basis coefficients t h scaling corresponding basis functions b h as shown in equation (33)
- T ( t 1 ⁇ , ... ⁇ , t h ⁇ , ... ⁇ , t M ) ⁇ ⁇
- t h is the basis coefficient corresponding to the h th basis function in the basis set ⁇
- M is the number of basis functions used to represent the product of the set functions in the wavelet domain.
- the first vector T is determined using a method 2700 described below with reference to FIG.
- determining the first vector T comprises pre-computing the first vector T prior to run-time.
- the first vector T can be pre-computed because the functions whose product is represented by the first vector T are fixed in advance of run-time.
- a second vector F is determined.
- the second vector F is the wavelet domain representation of the one varying function F N (v), expressing the function F N (v) as a series of basis coefficients (f 1 , . . . , f M ), or alternatively as the sum of a series of basis coefficients f h scaling corresponding basis functions b h , as shown in equation (34):
- Determining the second vector F can comprise, for example, projecting the one varying function F N (v) into the wavelet domain by performing a wavelet transform, encoding the basis coefficients (f 1 , . . .
- determining the second vector F comprises computing the second vector F at run-time. Computing the second vector at run time, such as interactively or in real-time, may be desirable because the function F N (v) is permitted to vary, in which case the second vector F varies also.
- the integral u is an approximation because the first vector T is fixed and does not vary.
- approximating the integral u using the method 2600 is relatively less computationally complex, and therefore relatively faster, than other methods.
- the method 2600 can be employed to approximate the integral u interactively and/or in real-time.
- both the second vector F and the inner product of the vectors are computed interactively and/or in real-time.
- FIG. 27 is a block diagram illustrating a method 2700 for determining the basis coefficients of a vector representing the product of the functions in the wavelet domain.
- the method 2700 is described with reference to an example embodiment, in which the plurality of functions is the set of fixed functions [F 1 (v), . . . , F N ⁇ 1 (v)] shown in equation (33).
- the method 2700 generally determines a vector that represents the product of a plurality of functions in the wavelet domain, independent of the method 2600 and regardless of the functions whose product is being represented.
- the product of a plurality of functions F i (v) can be expressed as a series of basis coefficients (t 1 , . . . , t M ) scaling corresponding basis functions.
- the series of basis coefficients (t 1 , . . . , t M ) constitutes a vector that represents the product of the plurality of functions F i (v) in the wavelet domain.
- the basis coefficients (t 1 , . . . , t M ) of the vector T can be determined by projecting the vector onto the basis functions of the basis set B.
- the k th basis coefficient t k of the vector T is the sum of a series contributing of products.
- Each contributing product in the series is the product of multiple basis coefficients f i,h and one N th order integral coefficient C N , the multiple basis coefficients including one basis coefficient f i,h from each of the N ⁇ 1 functions, and the N th order integral coefficient C N being the integral of the product of the basis functions b h that correspond to those basis coefficients f i,h along with the basis function b k that corresponds to basis coefficient t k being calculated.
- h is an integer from 1 to M and i is an integer from 1 to (N ⁇ 1), M being the number of basis functions b h used to represent a function F i (v) and (N ⁇ 1) being the number of functions F i (v) whose product is represented by the vector T.
- Equation (10) determines the integral u of the product of a plurality of functions F i (v), while equation (37) determines one basis coefficient t k of a vector T that represents the product of a plurality of functions F i (v) in the wavelet domain.
- equation (10) is expressed in terms of a plurality of functions F i (v) that includes N functions
- equation (37) is expressed in terms of a plurality of functions F i (v) that includes N ⁇ 1 functions.
- each contributing product in the series includes N basis coefficients and in equation (37), each contributing product in the series includes (N ⁇ 1) basis coefficients. While the number of basis coefficients in a contributing product depends on the equation, in either case the contributing product includes the N th order integral coefficient C N . This means that the order of the N th order integral coefficient C N matches the number of basis coefficients in equation (10), but is one greater than the number of basis coefficients in equation (37).
- the N th order integral coefficient C N is the integral of the N basis functions that correspond to the basis coefficients appearing in the product.
- the N th order integral coefficient C N in equation (37) is similar except that the basis function b k corresponding to the basis coefficient t k being determined is also included.
- the efficient solution to both lies in determining the N th order integral coefficient C N . In both cases the principles described above with reference to FIGS. 1-15 are applied.
- each function F i (v) whose product is to be represented in the wavelet domain is projected into the wavelet domain.
- the plurality of functions includes the functions F i (v) of the set of fixed functions [F 1 (v), . . . , F N ⁇ 1 (v)].
- Projecting the functions F i (v) into the wavelet domain comprises, for example, performing the wavelet transform on each function, as described above with reference to block 1602 of FIG. 16 .
- Each function F i (v) of the set is then represented as the series of basis coefficients f i,h scaling basis functions b h .
- each function F i (v) is encoded into one wavelet tree W i , although in other embodiments each function F i (v) can be represented using more than one wavelet tree.
- each function F i (v) of the set of fixed functions [F 1 (v), . . . , F N ⁇ 1 (v)] is encoded, and if one wavelet tree is used to represent each function in the set, then (N ⁇ 1) wavelet trees W i result.
- non-linear approximation is performed on each wavelet tree W i to discard insignificant basis coefficients f i,h .
- Non-linear approximation is described above with reference to block 1606 of FIG. 16 .
- the non-linear approximation block 2706 is performed before the encoding block 2704 , the non-linear approximation block 2704 is performed on only a subset of the functions F i (v), or the non-linear approximation block 2704 is omitted completely.
- the wavelet trees W i are traversed on direct paths, along which an N th order integral coefficient C N may be non-zero, to determine the basis coefficients t k of the vector T representing the product of the functions F i (v) in the wavelet domain. Traversing direct paths through the wavelet trees W i is generally described above with reference to block 1608 of FIG. 16 . However, unlike the embodiment of FIG. 16 in which the integral u is incremented as the wavelet trees W i are traversed, in this embodiment the basis coefficients t k of the vector T are determined.
- an output wavelet tree W 0 may be encoded as the input wavelet trees W i are traversed, the output wavelet tree W 0 having nodes w 0 into which the corresponding basis coefficients t k of the vector T are encoded. Therefore, in this embodiment, traversing direct paths comprises synchronously traversing a plurality of wavelet trees W i , the wavelet trees W i storing the basis coefficients of the functions [F 1 (v), . . . , F N ⁇ 1 (v)] whose product is being represented in the wavelet domain, simultaneously processing a set of nodes [w 1 , . . .
- wavelet trees W i may be synchronously traversed in embodiments in which each function [F 1 (v), . . . , F N ⁇ 1 (V)] is represented by exactly one wavelet tree W i .
- the term “traversing direct paths through the wavelet trees W i ” denotes that the nodes w i that are synchronously processed correspond to nodes in the basis function tree that lie on a single direct path through the basis function tree, as described above with reference to FIG. 7 .
- Traversing the wavelet trees W i only on the direct paths employs the principles described above: the N th order integral coefficient C N of basis functions may be nonzero if each of the basis functions lie on a single direct path through the basis function tree; however, the N th order integral coefficient C N is zero if the basis functions do not lie on a single direct path through the basis function tree.
- each basis coefficient t k is the sum of a series of contributing products, as shown in equation (37), each contributing product including one basis coefficient from each function [F 1 (v), . . . , F N ⁇ 1 (v)] and one N th order integral coefficient C N , which is the integral of the corresponding basis functions and the basis function b k whose basis coefficient t k is being determined.
- Confining the traversal to direct paths through the wavelet trees W i while avoiding the indirect paths enables accumulating contributing products that could contribute to the basis coefficient t k while avoiding those that necessarily do not contribute to the basis coefficient t k .
- traversing the wavelet trees W i on direct paths determines the basis coefficients t k of a vector T with the same accuracy but with fewer computations than other systems and methods.
- FIG. 28 is a block diagram illustrating an embodiment of a method 2800 for traversing direct paths through a plurality of wavelet trees W i to determine the basis coefficients t k of a vector T representing the product of the functions F i (v) in the wavelet domain, which can be employed in block 2708 of FIG. 27 .
- a basis coefficient in a root of an output wavelet tree W 0 is initially incremented with contributions of basis coefficients in roots of input wavelet trees W i .
- the contribution to the root of the output wavelet tree W 0 is determined by multiplying together the mother scaling coefficient stored in the root of each input wavelet tree W i , because in such case the N th order integral coefficient C N is one.
- a set of nodes [w 1 , . . . , w N ⁇ 1 ] of the input wavelet trees W i are synchronously processed.
- the set of nodes [w 1 , . . . , w N ⁇ 1 ] includes one node w i from each of the input wavelet trees W i .
- No two nodes w i in the set correspond to supports ⁇ j, k, l> that are completely disjoint from each other, because the input wavelet trees W i are traversed on direct paths.
- the contribution of the set of nodes [w 1 , . . . , w N ⁇ 1 ] is determined by separating the nodes into a group of null nodes and a group of non-null nodes, determining a contribution of the null nodes, and determining a contribution of non-null nodes.
- the contribution of null nodes is limited to the contribution of their parent nodes, which is not ignored even though the nodes themselves are null.
- the contribution of the non-null nodes is determined by iterating through the set of nodes to build a table that accumulates the magnitude of the contribution of the non-null nodes.
- basis coefficients t k of output nodes w 0 are incremented with contributions of the set of nodes [w 1 , . . . , w N ⁇ 1 ].
- both the basis coefficients t k of both the output node w 0 and the parent of the output node w 0 are updated.
- a set of child nodes is synchronously processed.
- the set of child nodes includes one node w i from each of the input wavelet trees W i , the one node w i being the immediate child of the node most recently processed. Because the child nodes immediately depend from the most recently processed nodes, the input wavelet trees W i are traversed along direct paths. The contribution of the set of child nodes may then be determined in the manner described above, and the basis coefficients t k of the output nodes w 0 may be incremented, and the process may be repeated for subsequent sets of child nodes until the last set of nodes is reached.
- traversing direct paths through the wavelet trees W i in block 2708 of FIG. 27 comprises applying a tree-traversal algorithm to the wavelet trees.
- FIG. 29 illustrates in pseudo code 2900 an example tree-traversal algorithm 2902 for determining the basis coefficients of a vector representing the product of a plurality of functions in the wavelet domain, and embodiments of component routines such as a routine 2904 , a routine 2906 , a routine 2908 , a routine 2910 , and a routine 2912 .
- the algorithm 2902 is defined as FunctionProduct in line 1 , accepting as input a set of wavelet trees (W 0 , . . . , W N ⁇ 1 ).
- W N ⁇ 1 include one wavelet tree for each function in the set of fixed functions [F 1 (v), . . . , F N ⁇ 1 (v)] whose product is being represented in the wavelet domain.
- the wavelet tree W 0 is an output wavelet tree into which basis coefficients determined by the algorithm 2902 are encoded, the basis coefficients being the basis coefficients t k of the vector T representing the product of a plurality of functions in the wavelet domain.
- the routine getCoefficients 2904 is called.
- the routine 2904 is configured to simultaneously process a set of nodes (w 1 , . . . , w N ⁇ 1 ) that includes one node w i from each wavelet tree W i and to encode the result of processing the nodes in the corresponding node w 0 of the output wavelet tree W 0 .
- the routine 2904 For its initial call, the routine 2904 processes the set of mother nodes (W 1 .node, . . . , W N ⁇ 1 .node) that include the mother wavelet coefficients. The routine 2904 then iteratively calls itself to process sets of nodes corresponding to higher scales and located at lower traversal depths, traversing the set of wavelet trees (W 1 , . . . , W N ⁇ 1 ) along the direct paths to determine and encode the basis coefficients in the output nodes w 0 . It is worth noting that in a single call to the algorithm 2902 , all of the basis coefficients of the vector are determined and encoded in the output wavelet tree W 0 .
- the routine getCoefficients 2904 is defined in line 1 to accept as input the variable cum, and a set of nodes (w 0 , . . . , w N ⁇ 1 ).
- the routine is initially called in line 3 of algorithm 2902 , the value one is passed into the routine for the variable cum.
- the variable cum is described above with reference to the pseudo code 1900 and 2000 , and therefore a complete discussion is omitted here.
- the nodes of the set of nodes (w 1 , . . . , w N ⁇ 1 ) are reorganized into a two sets of nodes: one being a set of non-null nodes (w 1 , . . .
- the subscript i has denoted that a specific wavelet tree W i corresponds to a specific function F i (v), or alternatively that a specific node w i is a node of a specific wavelet tree W i .
- the subscript i merely indicates whether the node w i is null or non-null, with non-null nodes having subscripts w 1 to w k and null nodes having subscripts w k+1 to w N ⁇ 1 . It is likely that some of the nodes w i are null in embodiments in which non-linear approximation is performed.
- the routine 2904 returns if all of the nodes in the set (w 1 , . . . , w N ⁇ 1 ) are null. This is because if all of the nodes are null, then all of the nodes of higher scales at lower traversal depths will also be null as a result of the non-linear approximation.
- the variable w i .parentsum is updated for each node in the set (w 1 , . . . , w N ⁇ 1 ). The variable parentsum is described above with reference to the pseudo code 1900 and 2000 , and therefore a complete discussion is omitted here.
- the routine updateParents 2906 is called, as described in detail below.
- the three wavelet coefficients ⁇ [ 0 ], ⁇ [ 1 ], and ⁇ [ 2 ] of the output node w 0 are updated with the value of cum multiplied by the return of the routine getW(i) 2912 .
- the routine 2904 then iteratively calls itself to four times to independently process the next four sets of nodes, which are the immediate child nodes of the non-null nodes.
- routine 2904 calls itself for the nodes (w 1 . ch[i], . . . , w k . ch[i]) in a loop, where ch[i] is the pointer to the child node and i is an integer from 0 to 3.
- the routine updateParents 2906 is defined in line 1 to accept as inputs the output node w 0 corresponding to the set of nodes (w 1 , . . . , w N ⁇ 1 ) currently being processed, and the variable cum multiplied by the return of getProductIntegral 2908 for the non-null nodes (w 1 , . . . , w k ) of the set currently being processed.
- the output node w 0 of the output wavelet tree W 0 is updated with a variable val, which is the product of the variable cum and the return of the routine getProductIntegral 2908 described below.
- output node w 0 is updated with the contributions of the non-null nodes (w 1 , . . . , w k ) in the set of nodes currently being processed, and the contributions of the parents of the null nodes (w k+1 , . . . , w N ⁇ 1 ) in the set currently being processed.
- the three basis coefficients t k in the parent of the output node w 0 are also updated with the product of the variable val, a sign, and the magnitude of a parent basis function multiplied by an immediate child basis function.
- the routine getProductIntegral 2908 is the exact same as the routine getProductIntegral 2006 described above. Further, the routines that it calls, including the routine getp(i) 2910 and the routine getW(i) 2912 , are the exact same as the routines getP(i) 2008 and getW(i) 2010 described above. Therefore, the reader is referred to the prior discussion.
- the output of the algorithm 2902 is the wavelet tree W 0 , and the nodes w 0 of the wavelet tree W 0 include the basis coefficients t k of the vector T that represents the product of the plurality of functions (F 1 (v), . . . , F N ⁇ 1 (v)) in the wavelet domain.
- the computational complexity of the algorithm 2902 is the order of O(mn), where m is the number of basis coefficients retained after the non-linear approximation and N is the number of functions F i (v) whose product is being represented in the wavelet domain. Note that the algorithm 2902 determines all of the basis coefficients in a single call and need not be applied iteratively.
- FIG. 30 is a block diagram illustrating a system 3000 for determining the wavelet domain representation of the product of a plurality of functions.
- the system 3000 includes logic 3002 configured to factor a plurality of functions into a set of fixed functions and one varying function, logic 3004 configured to determine a first vector that represents the product of the fixed functions in the wavelet domain, logic 3006 configured to determine a second vector that represents the one varying function in the wavelet domain, and logic configured to determine an inner product of the first vector and the second vector.
- the logic 3004 configured to determine a first vector that represents the product of the fixed functions in the wavelet domain may include logic 3012 configured to project the functions of the set of fixed functions into the wavelet domain, logic 3014 configured to encode basis coefficients of each fixed functions in a wavelet tree, logic 3016 configured to perform non-linear approximation on each fixed function, and logic 3018 configured to determine basis coefficients of a vector by traversing direct paths through the wavelet trees.
- Described above are systems and method for determining the integral u of the product of a plurality of functions, with reference to FIGS. 1-22 . Such systems and methods are applied to determine the radiance B of a point x in a scene using a light transport model of the lighting and objects in a scene, with reference to FIGS. 23-25 . Also described above are systems and methods for approximating the integral of the product of a plurality of functions by fixing at least some of the functions whose product is being integrated, with reference to FIGS. 26-30 . Such systems and method for approximating the integral are employed to approximate the radiance B of the point x in the scene, with reference to FIGS. 31-32 below.
- FIG. 31 is a block diagram illustrating an embodiment of a method 3100 for rendering a graphical scene by approximating the radiance B of a point x in the scene using a light transport model of the scene.
- the scene is a scene such as the scene 2300 described above with reference to FIG. 23 , and the light transport model of the scene is represented, for example, in equation (28), which is repeated below:
- a plurality of functions F i ( ⁇ ) that contribute to the light transport model of the scene are determined.
- the functions F i ( ⁇ ) can include the distant environment lighting function L( ⁇ ), the BRDF ⁇ ( ⁇ ), the local visibility function ⁇ L ( ⁇ ), and one or more dynamic occlusion functions O i ( ⁇ ). Determining the plurality of functions F i ( ⁇ ) is described above with reference to block 2402 of FIG. 24 .
- determining the functions F i ( ⁇ ) comprises determining cubemap functions 2310 , such as from sampled data in the scene, as discussed above.
- the sampled data may be compiled interactively or in advance of run-time, and in cases in which the sampled data is compiled in advance, the cubemap functions 2310 may be pre-computed or may be computed interactively. However, all of the cubemap functions 2310 do not need to be determined at the same time. More specifically, the cubemap functions 2310 that correspond to the functions that are fixed can be pre-determined, while the cubemap function that corresponds to the one varying function can be determined interactively.
- the distant environment lighting function L( ⁇ ) may be determined interactively, while the BRDF ⁇ ( ⁇ ), the local visibility function ⁇ L ( ⁇ ), and the one or more dynamic occlusion functions O i ( ⁇ ) may be computed in advance.
- the one varying function F N ( ⁇ ) is pre-determined and is unchangeable, but in other embodiments the one varying function F N ( ⁇ ) is determined interactively, such as in response to user input. For example, in one embodiment a user can select an object in the scene, and in response to the selection, the dynamic occlusion function O i ( ⁇ ) of the object is allowed to vary while the other functions are fixed.
- a first radiance transfer vector T is determined. Determining the first radiance transfer vector T is generally described above with reference to block 2604 of FIG. 26 .
- the first radiance transfer vector T represents the product of the set of fixed functions [F 1 ( ⁇ ), . . . , F N ⁇ 1 ( ⁇ )] in the wavelet domain as a series of basis coefficients (t 1 , . . . , t M ), or alternatively, as a series of basis coefficients t h scaling a series of basis functions b h , as shown in equation (39):
- determining the first radiance transfer vector T comprises determining a series of basis coefficients (t 1 , . . . , t M ). Using the method 2700 described above with reference to FIG. 27 , determining the series of basis coefficients (t 1 , . . .
- t M generally comprises projecting each function F i ( ⁇ ) in the set of fixed functions [F 1 ( ⁇ ), . . . , F N ⁇ 1 ( ⁇ )] into the wavelet domain (block 2702 ), encoding each function F i ( ⁇ ) in a wavelet tree W i (block 2704 ), subjecting each function F i ( ⁇ ) to non-linear approximation (block 2706 ), and traversing the wavelet trees W i along direct paths to determine the basis coefficients of the vector (block 2708 ).
- Traversing the wavelet trees W i along direct paths may comprise performing the method 2800 described above with reference to FIG. 28 or applying the tree-traversal algorithm 2902 , described above with reference to FIG. 29 .
- the output wavelet tree W 0 of the tree-traversal algorithm 2902 stores the basis coefficients (t 1 , . . . , t M ) of the first radiance transfer vector T.
- determining the first radiance transfer vector T comprises pre-computing the first radiance transfer vector T prior to run-time, although in other embodiments the first radiance transfer vector T is computed interactively. Also, in some embodiments, determining the first radiance transfer vector T comprises determining a plurality of first radiance transfer vectors T corresponding to distinct sets of fixed functions [F 1 ( ⁇ ), . . . , F N ⁇ 1 ( ⁇ )]. For example, if the lighting function L( ⁇ ) is permitted to vary, the functions in the set of fixed functions are different than if the BRDF ⁇ ( ⁇ ) is permitted to vary.
- determining the plurality of first radiance transfer vectors T comprises determining a plurality of sets of first radiance transfer vectors [T 1 , . .
- a second radiance transfer vector F is determined.
- the second radiance transfer vector F represents the one varying function F N ( ⁇ ) in the wavelet domain as a series of basis coefficients (f 1 , . . . , f M ), or alternatively, as a series of basis coefficients f h scaling a series of basis functions b h , as shown in equation (40):
- Determining the second radiance transfer vector F is generally described above with reference to block 2606 of FIG. 26 and can comprise projecting the one varying function F N ( ⁇ ) into the wavelet domain by performing a wavelet transform, encoding the basis coefficients (f 1 , . . . , f M ) of the second vector F in a wavelet tree W i , and performing non-linear approximation on the one varying function F N ( ⁇ ).
- determining the second radiance transfer vector T comprises determining a set of second radiance transfer vectors [F 1 , . . . , F 6 ], each vector F i of the set corresponding to one face 2308 of the cubemap function.
- determining the second radiance transfer vector F comprises iteratively determining the second radiance transfer vector F in response to changing conditions in the scene 2300 .
- the first radiance transfer vector T can be fixed because the functions [T 1 ( ⁇ ), . . . , T N ⁇ 1 ( ⁇ )] represented by the vector T do not change, the same is not true for the second radiance transfer vector F, which represents the one varying function F N ( ⁇ ). Therefore, it may be desirable to determine the first radiance transfer vector T once, while determining the second radiance transfer vector F iteratively and interactively, in response to changing conditions in the scene 2300 .
- an inner product of the first radiance transfer vector T and second radiance transfer vector F is determined. Taking the inner product of the first radiance transfer vector T and second radiance transfer vector F approximates the radiance B of the point x, as shown by re-writing equation (38) in terms of equation (39) and equation (40):
- the method 3100 can be employed to approximate the radiance B interactively and/or in real-time by taking the inner product of the two vectors interactively and/or in real-time.
- determining the inner product comprises determining inner products of a set of first radiance transfer vectors [T 1 , . . . , T 6 ] and a set of second radiance transfer vectors [F 1 , . . . , F 6 ] and summing the inner products together, each inner product corresponding to one face 2308 of the cubemap S and the sum of the inner products representing the radiance B over the entire cubemap S.
- the scene is rendered, as described above with reference to block 2412 of FIG. 24 .
- the radiance B for the point x determined in block 3110 is used by the graphics rendering application to set the color of the point x.
- the radiance B of the point x represents one color value for the point, but to render the scene the graphics rendering application requires three color values, one for each of three independent color channels. Therefore, in such embodiments the above blocks are iterated to independently process each of the three independent color channels, such that three color values are available to the graphics rendering application for the point x.
- the above steps are also iterated for each visible point x before the final scene is rendered, because a plurality of points x are combined to produce objects, and a plurality of objects are combined to produce the rendered scene.
- the method 3100 can be employed to generate all-frequency shadows in real-time.
- the method 3100 can be considered a method of just-in-time radiance transfer (JRT), unlike prior pre-computed radiance transfer (PRT) methods, such as those disclosed by Sloan et al. in “Precomputed radiance transfer for real-time rendering in dynamic-low-frequency lighting environments,” ACM Transactions on Graphics ( SIGGRAPH ' 02) 21, 3, 527-536, which is incorporated by reference herein in its entirety.
- JRT just-in-time radiance transfer
- PRT prior pre-computed radiance transfer
- Allowing only one function to vary is reasonable in some cases, such as in lighting design systems, in which the designer typically adjusts only one variable at a time.
- the designer may experiment with the lighting by varying the lighting function L( ⁇ ) without varying the direction of view ⁇ or the objects 2302 , 2306 in the scene 2300 .
- the designer may also render the scene from different directions of view ⁇ while maintaining the current lighting L( ⁇ ) and objects 2302 , 2306 in the scene 2300 .
- the designer may change the location of one object 2302 or 2306 in the scene 2300 while holding the lighting function L( ⁇ ) and direction of view ⁇ constant.
- the method 3100 can be employed to generate all-frequency shadows in real-time.
- the method 3100 employs pre-computed data on individual objects 2302 , 2306 in the scene 2300 instead of pre-animated models of the scene as a whole, the objects in the scene can be manipulated interactively, such as by cloning, scaling, and/or translating the objects. Even in such cases of interactive manipulation, the method 3100 can be is employed to render the objects with all-frequency shadows in real-time. Glossy materials are also supported, such that dynamic high-glossy objects can be rendered in real-time with realistic, all-frequency shadows.
- the method 3100 supports interactively changing the function selected as the one varying function F N ( ⁇ ).
- the one varying function F N ( ⁇ ) can be changed in real-time without repeating block 3106 .
- rendering the scene for a variety of lighting conditions in real-time reduces to iteratively determining the second radiance transfer vector F of the lighting function in real-time and taking the inner product of the two radiance transfer vectors T and F in real-time, because the first radiance transfer vector T for the set of fixed functions [ ⁇ ( ⁇ ), ⁇ L ( ⁇ ), O 1 ( ⁇ ), . . . , O g ( ⁇ )] was determined in advance.
- the one varying function F N ( ⁇ ) is interactively changed from the distant environment lighting function L( ⁇ ) to the first dynamic occlusion function O 1 ( ⁇ )
- rendering the scene for the moving object in real-time reduces to iteratively determining the second radiance transfer vector F of the dynamic occlusion function in real-time and taking the inner product of the two radiance transfer vectors in real-time, because the first radiance transfer vector T for the set of fix functions [L ( ⁇ ), ⁇ ( ⁇ ), ⁇ L ( ⁇ ), O 2 ( ⁇ ), . . . , O g ( ⁇ )] was pre-computed in advance.
- FIG. 32 is a block diagram illustrating an embodiment of a system 3200 for rendering a graphical scene by approximating the radiance of the point x in a scene using a light transport model of the scene.
- the system 3200 includes logic 3202 configured to determine a plurality of functions that contribute to a light transport model of a scene, logic 3204 configured to factor the plurality of functions into a set of fixed functions and one varying function, logic 3206 configured to determine a first radiance transfer vector for the set of fixed functions, logic 3208 configured to determine a second radiance transfer vector for the one varying function, logic 3210 configured to determine the inner product of the first and second radiance transfer vectors, and logic 3212 configured to render the scene.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
Abstract
Description
where u is the integral of the product of the plurality of functions, N is the total number of functions contributing to the product being integrated, and Fi(v) generically denotes the ith function in the product being integrated, i being any integer from 1 to N.
where bh(v) is a hth basis function in the wavelet basis set β, fi,h is the basis coefficient corresponding to the hth basis function, and M is the number of basis functions bh(v) used to represent the function Fi(v) in the wavelet domain. Replacing the function Fi(v) in equation (1) with its wavelet domain representation shown in equation (2) yields the wavelet domain representation of the integral of the product of the plurality of functions, as shown in equation (3):
φkl j(x,y)=2jφ0(2j x−k,2j y−l) (4)
Three wavelet basis functions ψ1
ψ1
ψ2
ψ3
The basis set 200 therefore includes one basis function for each basis function type at each support <j,k,l>, the basis function type indicating the shape of the basis function within the diagram, and the support indicating the size and location of the basis function within the diagram.
and an Nth order integral coefficient CN is defined as the integral of the Nth order basis product PN:
Substituting equation (9) into equation (3), the integral of the product of the plurality of functions is expressed in the wavelet domain according to equation (10):
In other words, the integral of the product of the plurality of functions u is represented in the wavelet domain as the sum of a series of contributing products. Each contributing product in the series is the product of multiple basis coefficients and one Nth order integral coefficient CN, the multiple basis coefficients including one basis coefficient fi,h from each of the N functions, and the Nth order integral coefficient CN being the integral of the product of the basis functions bh(v) that correspond to those basis coefficients fi,h. One contributing product appears in the series for each combination of N basis coefficients fi,h having one coefficient from each of the N functions, such that a total of MN contributing products appear in the series. It should be noted that in the basis coefficient fi,h, h is an integer from 1 to M and i is an integer from 1 to N, M being the number of basis functions bh used to represent the function Fi(v) and N being the number of functions Fi(v) whose product is being integrated.
P 2 =b 1 ·b 2 =+/−|P 2 |b P
ψkl j·ψkl j=2jφkl j (12)
ψ1
ψ2
ψ3
φkl j·ψkl j=2jψkl j (14)
φkl j·φkl j=2jφkl j (15)
b kl j+1 ·b kl j=+/−2j b kl j+1 (16)
P g =b 1 · . . . ·b g−1 ·b g =+/−|P g |b P
P g=(+/−|P g−1 |b P
where
is the determined by taking the sum of the scale of each basis function in the set of g functions and then subtracting the finest scale jo appearing in the set of g functions. As noted above, the finest scale jo is the scale of at least the basis function appearing in the
∫∫ψkl j dxdy=0 (20)
However, the integral of a scaling basis function φ is 2−j, as shown in equation (21):
∫∫φkl j dxdy=2−j (21)
In equation (22),
is the sum of the scales of the N basis functions and jo is the finest scale of the N functions. The sign is determined by multiplying together a series of signs, the series of signs including one sign for each parent basis function in the product PN, the sign for the parent basis function being the sign of the portion of the support of the parent basis function that is covered by its child basis functions, as described above.
where PN−1 is the product of the first (N−1) basis functions appearing in the ranking order and bN is the Nth basis function appearing in the ranking order.
-
- 1. bP
N−1 and bN are wavelet basis functions of the same type, and both have identical support. In this case, CN=|PN−1|. - 2. Both bP
N−1 and bN are both the mother scaling function. In this case, Cn=1. - 3. bP
N−1 is a scaling basis function, and bN is a parent basis function of bPN−1 . In this case, CN=±2j×CN−1 where j is the scale of bN and where the sign is the sign of the portion of the support of bN that is covered by the support of bPN−1 .
Otherwise, the basis function type of the product PN is a wavelet basis function and therefore, the Nth order integral coefficient CN is zero. In such case, one of the following rules describes the ranked basis product PN=PN−1·bN: - 4. bP
N−1 and bN have identical supports. bPN−1 is a scaling basis and bN is a wavelet basis function. In this case, |PN|=4j×CN−1 and bPN is a wavelet basis function of the same type and support as bN. - 5. bP
N−1 and bN have identical supports. bPN−1 is a wavelet basis function, bN is a child scaling basis function. In this case, |PN|=2j×|PN−1| and bPN is a wavelet basis function of the same type and support as bPN−1 . - 6. bP
N−1 and bN have identical supports. Each are wavelet basis functions of different basis function types. In this case, |PN|=2j×|PN−1| and bPN is the wavelet basis function of the third type and the same support. - 7. bP
N−1 is a child basis function and bN is its parent basis function. bPN−1 is a wavelet basis function. In this case, |PN|=±2j×PN−1| where j is the scale of bN and the sign is the sign of the portion of the support of bN that is covered by the support of bPN−1 . bPN is a wavelet basis function of the same type and support bPN−1 .
- 1. bP
where pi is the immediate parent of the node wi, pi.α is the wavelet coefficient in the parent node pi corresponding to the basis function of type ψ1, pi.β is the wavelet coefficient in the parent node pi corresponding to the basis function of type ψ2, pi.γ is the wavelet coefficient in the parent node pi corresponding to the basis function of type ψ3, (qk, ql) is the quadrant of the immediate parent node pi that is covered by the node wi, as described below with reference to equation (24), and sign is an array described below with reference to equation (25).
q k =
The quadrant (qk, ql) is used to determine the sign of the signed parent summation in conjunction with the array sign that stores the signs of the four quadrants of the three mother wavelet functions ψ1 0, ψ2 0, and ψ3 0 respectively, as shown in equation (25):
sign[3][2][2]={1, −1, 1, −1; 1, 1, −1, −1; 1, −1, −1, 1} (25)
A person of skill may note that the variable wi.parentsum is inspired by Ng in “Triple product wavelet integrals for all-frequency relighting”, ACM Transactions on Graphics (SIGGRAPH '04) 23, 3, 477-487, which is incorporated by reference herein in its entirety.
where ÕL(x,φ) represents the combined local visibility function OL(x, φ) and cosine term (D·φ). For a fixed point x and direction of view θ, equation (27) is simplified to equation (28):
Thus, the exitant radiance B at the fixed point x is the integral of the product of g+3 functions, g being the number of
For each set, the product of the functions Fi(v) in the set can be represented in the wavelet domain as a vector T. Continuing the above example, the product of the functions of the first set can be represented as a vector T1 and the product of the functions of the second set can be represented as a vector T2, as shown in equation (30):
In cases in which the products of the functions in the set are represented as vectors, the integral u of the product of the functions is the integral of the product of vectors, or alternatively, the inner product of the vectors. For example, the integral of the product of the functions shown in equation (29) can alternatively be expressed as shown in equation (31):
u=∫(T 1 ·T 2)dv= T 1 ,T 2 (31)
where T1 and T2 are the vectors defined in equation (29), and <T1,T2> denotes the inner product of the vectors.
In equation (32), the set of fixed functions is the set [F1(v), . . . , FN−1(v)], and the one varying function is the function FN(v).
In equation (33), th is the basis coefficient corresponding to the hth basis function in the basis set β, and M is the number of basis functions used to represent the product of the set functions in the wavelet domain. The first vector T is determined using a
Determining the second vector F can comprise, for example, projecting the one varying function FN(v) into the wavelet domain by performing a wavelet transform, encoding the basis coefficients (f1, . . . , fM) of the second vector F in a wavelet tree WN, and performing non-linear approximation on the one varying function FN(v), as described above with reference to
u≅∫T·F n(v)dv≅ T,F =(t 1 f 1 + . . . +t M f M) (35)
In equation (35), the integral u is an approximation because the first vector T is fixed and does not vary. However, because the first vector T is fixed, approximating the integral u using the
t k = T,b k (36)
Replacing the vector T in equation (36) with the product of the plurality of functions from equation (33) yields equation (37):
In
Factoring the functions is generally described above with reference to block 2602 of
Therefore, determining the first radiance transfer vector T comprises determining a series of basis coefficients (t1, . . . , tM). Using the
Determining the second radiance transfer vector F is generally described above with reference to block 2606 of
In equation (41), the radiance B is an approximation because the first radiance transfer vector T is fixed and does not vary. However, because the first radiance transfer vector T is fixed, approximating the radiance B using the
Claims (16)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/680,831 US8164592B2 (en) | 2006-07-13 | 2007-03-01 | Systems and methods for graphical rendering |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US83065406P | 2006-07-13 | 2006-07-13 | |
US11/680,831 US8164592B2 (en) | 2006-07-13 | 2007-03-01 | Systems and methods for graphical rendering |
Publications (2)
Publication Number | Publication Date |
---|---|
US20080016138A1 US20080016138A1 (en) | 2008-01-17 |
US8164592B2 true US8164592B2 (en) | 2012-04-24 |
Family
ID=38950503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/680,831 Expired - Fee Related US8164592B2 (en) | 2006-07-13 | 2007-03-01 | Systems and methods for graphical rendering |
Country Status (1)
Country | Link |
---|---|
US (1) | US8164592B2 (en) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014671A (en) * | 1998-04-14 | 2000-01-11 | International Business Machines Corporation | Interactive retrieval and caching of multi-dimensional data using view elements |
US20020009233A1 (en) * | 2000-06-14 | 2002-01-24 | Beatrice Pesquet-Popescu | Color encoding and decoding method |
US6476805B1 (en) * | 1999-12-23 | 2002-11-05 | Microsoft Corporation | Techniques for spatial displacement estimation and multi-resolution operations on light fields |
US6509902B1 (en) * | 2000-02-28 | 2003-01-21 | Mitsubishi Electric Research Laboratories, Inc. | Texture filtering for surface elements |
US20050041024A1 (en) * | 2003-08-20 | 2005-02-24 | Green Robin J. | Method and apparatus for real-time global illumination incorporating stream processor based hybrid ray tracing |
US7061489B2 (en) | 2003-08-15 | 2006-06-13 | Microsoft Corporation | Precomputed radiance transfer for rendering objects |
-
2007
- 2007-03-01 US US11/680,831 patent/US8164592B2/en not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014671A (en) * | 1998-04-14 | 2000-01-11 | International Business Machines Corporation | Interactive retrieval and caching of multi-dimensional data using view elements |
US6476805B1 (en) * | 1999-12-23 | 2002-11-05 | Microsoft Corporation | Techniques for spatial displacement estimation and multi-resolution operations on light fields |
US6509902B1 (en) * | 2000-02-28 | 2003-01-21 | Mitsubishi Electric Research Laboratories, Inc. | Texture filtering for surface elements |
US20020009233A1 (en) * | 2000-06-14 | 2002-01-24 | Beatrice Pesquet-Popescu | Color encoding and decoding method |
US7061489B2 (en) | 2003-08-15 | 2006-06-13 | Microsoft Corporation | Precomputed radiance transfer for rendering objects |
US20050041024A1 (en) * | 2003-08-20 | 2005-02-24 | Green Robin J. | Method and apparatus for real-time global illumination incorporating stream processor based hybrid ray tracing |
Non-Patent Citations (28)
Title |
---|
Berman, et al., "Multiresolution Painting and Compositing," Dept. of Computer Science and Engineering, University of Washington, pp. 85-90, Jul. 1994. |
Blinn, et al., "Texture and Reflection in Computer Generated Images," Commun of the ACM vol. 19, No. 10, pp. 542-547, Oct. 1976. |
Clarberg, et al., "Wavelet Importance Sampling: Efficiently Evaluating Products of Complex Functions," ACM Transactions on Graphics, vol. 24, No. 3, pp. 1166-1175, Jul. 2005. |
Debevec, et al., "Recovering High Dynamic Range Radiance Maps from Photographs," In Proc. SIGGRAPH, pp. 369-378, Aug. 1997. |
Devore, "Nonlinear-approximation," Acta Numerica 7, pp. 51-150, 1998. |
Dorsey, et al., "Interactive Design of Complex Time Dependant Lightng," IEEE Computer Graphics and Applications vol. 15, No. 2, pp. 26-36, Mar. 1995. |
Gortler, et al., "Wavelet Radiosity," pp. 221-230, Sep. 1993. |
James, et al., "Precomputing Interactive Dynamic Deformable Scenes," ACM Transactions on Graphics vol. 22, No. 3, pp. 1-18, Sep. 2003. |
Kautz, et al. "Hemispherical Rasterization for Self-Shadowing of Dynamic Objects," In Proc. of Eurographics Symposium on Rendering, pp. 179-184, Nov. 22, 2004. |
Kautz, et al., "Fast Arbitrary BRDF Shading for Low-Frequency Lighting Using Spherical Harmonics," In Proceedings of the 13th Eurographics Workshop on Rendering, pp. 291-296, Jun. 26-28, 2002. |
Kontkanen, et al., "Ambient Occlusion Fields," In Proc. of ACM SIGGRAPH 2005 Symposium on Interactive 3D Graphics and Games, ACM Press, Apr. 3-6, 2005. |
Kristensen, et al, "Precomputed Local Radiance Transfer for Real-Time Lighting Design," ACM Transactions on Graphics vol. 24, No. 3, pp. 1208-1215, Jul. 2005. |
Lehtinen, et al., "Matrix radiance transfer," Symposium on Interactive 3D Graphics, Proceedings of the 2003, symposium on Interactive 3D graphics, Monterey, California, Session: Session 3: light table of contents, pp. 59-64, Year of Publication: 2003, ISBN:1-58113-645-5. |
Liu, et al.; "All-Frequency Precomputed Radiance Transfer for Glossy Objects," In Proceedings of Eurographics Symposium on Rendering, pp. 337-344, 2004. |
Ng, et al., "All-Frequency Shadows Using Non-Linear Wavelet Lighting," ACM Transactions on Graphics (SIGGRAPH) vol. 22, No. 3, pp. 376-381, Jul. 2003. |
Ng, et al., "Triple Product Wavelet Integrals for All-Frequency Relighting,". ACM Transactions on Graphics (SIGGRAPH) vol. 23, No. 3, pp. 477-487, Aug. 2004. |
Nimeroff, et al., "Efficient Re-Rendering of Naturally Illuminated Environments," 5th Eurographics Rendering Workshop, pp. 359-374, Jun. 2004. |
Pellacini, et al., "L.pics: a Hybrid Hardware-Accelerated Relighting Engine for Computer Cinematography," ACM Transactions on Graphics (SIGGRAPH) vol. 24, No. 3, pp. 464-470, Jul. 2005. |
Shapiro, J.M., "Embedded Image Coding Using Zerotrees of Wavelet Coefficients," IEEE Transactions on Signal Processing SP, 41, pp. 3445-3462, Dec. 1993. |
Sloan, et al., "Bi-Scale Radiance Transfer," ACM Transactions on Graphics (SIGGRAPH) vol. 22, No. 3, pp. 370-375, Jul. 2003. |
Sloan, et al., "Clustered Principal Components for Precomputed Radiance Transfer," ACM Transactions on Graphics (SIGGRAPH) vol. 22, No. 3, pp. 382-391, Jul. 2003. |
Sloan, et al., "Local Deformable Precomputed Radiance Transfer," ACM Transactions on Graphics (SIGGRAPH) vol. 24, No. 3, pp. 1216-1224, Jul. 2005. |
Sloan, et al., "Precomputed Radiance Rransfer for Real-Rime Rendering in Dynamic, Low-Frequency Lighting Environments," ACM Transactions on Graphics (SIGGRAPH) vol. 21, No. 3, pp. 527-536, Jul. 2002V. |
Stollnitz, et al., "Wavelets for Computer Graphics: A Primer," IEEE Computer Graphics and Applications, 15(3) pp. 1-40, Sep. 1994. |
Sun et al., "Generalized Wavelet Product Integral for Rendering Dynamic Glossy Objects," ACM Transactions on Graphics (SIGGRAPH Jul. 2006) vol. 25, Issue 3, pp. 955-966. |
Sun, et al., "Inside Just-in-time Radiance Transfer," International Conference on Computer Graphics and Interactive Techniques, ACM SIGGRAPH 2006 Sketches, Boston, Massachusetts, Session: Sketches: let there be light Article No. 170, Year of Publication: 2006, ISBN:1-59593-364-6. |
Wang, et al., "All-Frequency Relighting on Non-Diffuse Objects Using Separable BRDF Approximation," In Proceedings of Eurographics Symposium on Rendering, pp. 345-354, 2004. |
Zhou, et al., "Precomputed Shadow Fields For Dynamic Scenes," ACM Transactions on Graphics (SIGGRAPH) vol. 24, No. 3, pp. 1196-1201, Jul. 2005. |
Also Published As
Publication number | Publication date |
---|---|
US20080016138A1 (en) | 2008-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Clarberg et al. | Wavelet importance sampling: efficiently evaluating products of complex functions | |
Heckbert | Simulating global illumination using adaptive meshing | |
Bonneel et al. | Displacement interpolation using Lagrangian mass transport | |
US6792073B2 (en) | Method and apparatus for radiotherapy treatment planning | |
Sun et al. | Generalized wavelet product integral for rendering dynamic glossy objects | |
US7496619B2 (en) | System and methods of nonuniform data sampling and data reconstruction in shift invariant and wavelet spaces | |
US7692661B2 (en) | Method of creating and evaluating bandlimited noise for computer graphics | |
Fiorini | How random is your tomographic noise? A number theoretic transform (NTT) approach | |
CN100386780C (en) | Systems and methods for robust sampling for real-time relighting of objects in natural lighting environments | |
Christensen et al. | Wavelet radiance | |
Shen et al. | Image denoising using a tight frame | |
Gershbein et al. | Textures and radiosity: Controlling emission and reflection with texture maps | |
US7423641B2 (en) | Computer graphics systems and methods generating smooth feature lines for subdivision surfaces | |
US11983854B2 (en) | Denoising images rendered using Monte Carlo renderings | |
US8164593B2 (en) | Systems and methods for graphical rendering | |
US7672476B2 (en) | Bandlimited noise for computer graphics | |
Frese et al. | Adaptive wavelet graph model for Bayesian tomographic reconstruction | |
US10475238B2 (en) | Hölder adaptive image synthesis | |
US8102394B2 (en) | Computer graphics using meshless finite elements for light transport | |
Leahy et al. | An optimal technique for constraint-based image restoration and reconstruction | |
US8232993B2 (en) | Systems and methods for graphical rendering | |
US7940267B2 (en) | Systems and methods for graphical rendering | |
Du Toit | Radial basis function interpolation | |
JP4749470B2 (en) | Image composition method, computer graphic system, and computer program | |
US20240127530A1 (en) | Method, electronic device, and computer program product for generating target object |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: UNIVERSITY OF CENTRAL FLORIDA RESEARCH FOUNDATION, Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SUN, WEIFENG, DR.;MUKHERJEE, AMAR, DR.;REEL/FRAME:019182/0004 Effective date: 20070412 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |