WO2010062790A1 - Procédé infographique pour regrouper des sources de lumière par sommet et interpoler une couleur et une direction en tant que seule entité - Google Patents
Procédé infographique pour regrouper des sources de lumière par sommet et interpoler une couleur et une direction en tant que seule entité Download PDFInfo
- Publication number
- WO2010062790A1 WO2010062790A1 PCT/US2009/063629 US2009063629W WO2010062790A1 WO 2010062790 A1 WO2010062790 A1 WO 2010062790A1 US 2009063629 W US2009063629 W US 2009063629W WO 2010062790 A1 WO2010062790 A1 WO 2010062790A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- vertex
- light source
- polygon
- light sources
- aggregate
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
Definitions
- the present invention relates generally to computer graphics, and more specifically to dynamic lighting used in computer graphics.
- Lighting in computer graphics refers to the placement of lights in a scene to achieve some desired effect.
- the lighting process involves lighting the pixels in the polygons that form a computer model.
- Dynamic lighting refers to the process of computing lighting calculations in real time to account for real-time variations, such as changes in game state, player's and characters' positions, camera movement, etc.
- One embodiment provides a method for use in computer graphics, comprising: establishing a surface that is represented by at least one polygon that includes a plurality of vertices; establishing one or more light sources that are configured to illuminate the surface; and computing an aggregate light source position for each vertex of the polygon, wherein the computation for each vertex includes averaging directions from the vertex to the one or more light sources.
- Another embodiment provides a storage medium storing a computer program executable by a processor based system, the computer program causing the processor based system to execute steps comprising: establishing a surface that is represented by at least one polygon that includes a plurality of vertices; establishing one or more light sources that are configured to illuminate the surface; and computing 5 an aggregate light source position for each vertex of the polygon, wherein the computation for each vertex includes averaging directions from the vertex to the one or more light sources.
- Another embodiment provides an apparatus for use in computer graphics, comprising: a display; and a processor based system coupled to the display and o configured to establish on the display a surface that is represented by at least one polygon that includes a plurality of vertices, establish one or more light sources that are configured to illuminate the surface, and compute an aggregate light source position for each vertex of the polygon, wherein the computation for each vertex includes averaging directions from the vertex to the one or more light sources.
- Another embodiment provides a method for use in computer graphics, comprising: establishing a surface that is represented by at least one polygon that includes a plurality of vertices; establishing one or more light sources that are configured to illuminate the surface; for each vertex of the polygon, computing at least one vector quantity that represents an aggregation of a visual attribute and a o direction of each of the one or more light sources; and interpolating the computed vector quantities across the polygon to provide at least one interpolated vector quantity value for each of a plurality of pixels included in the polygon.
- Another embodiment provides a storage medium storing a computer program executable by a processor based system, the computer program causing the 5 processor based system to execute steps comprising: establishing a surface that is represented by at least one polygon that includes a plurality of vertices; establishing one or more light sources that are configured to illuminate the surface; for each vertex of the polygon, computing at least one vector quantity that represents an aggregation of a visual attribute and a direction of each of the one or more light sources; and 0 interpolating the computed vector quantities across the polygon to provide at least one interpolated vector quantity value for each of a plurality of pixels included in the polygon.
- Another embodiment provides an apparatus for use in computer graphics, comprising: a display; and a processor based system coupled to the display and configured to establish a surface that is represented by at least one polygon that includes a plurality of vertices, establish one or more light sources that are configured to illuminate the surface, for each vertex of the polygon, compute at least one vector 5 quantity that represents an aggregation of a visual attribute and a direction of each of the one or more light sources, and interpolate the computed vector quantities across the polygon to provide at least one interpolated vector quantity value for each of a plurality of pixels included in the polygon.
- FIG. 1 is a flow diagram illustrating a method for use in computer graphics lighting in accordance with an embodiment of the present invention
- FIG. 2 is a screen shot illustrating a surface represented by polygons that is illuminated by light sources to be used in accordance with embodiments of the present invention
- FIG. 3 is a graph illustrating a falloff function in accordance with an embodiment of the present invention
- 5 FIGS. 4A and 4B are photographs illustrating the falloff function in accordance with embodiments of the present invention.
- FIGS. 5A and 5B are diagrammatic views illustrating interpolation per- pixel across a polygon in accordance with an embodiment of the present invention
- FIG. 6 is a diagrammatic view illustrating an analysis of aggregation of 0 light sources in accordance with an embodiment of the present invention
- FIG. 7 is a flow diagram illustrating a method for use in computing an aggregate light position in accordance with an embodiment of the present invention
- FIGS. 8A, 8B, 8C and 8D are diagrammatic views illustrating an application of the method shown in FIG. 7 in accordance with an embodiment of the present invention
- FIGS. 9A and 9B are photographs illustrating the results of a weight factor in accordance with embodiments of the present invention.
- FIG. 10 is a diagrammatic view illustrating computation of an aggregate light color in accordance with an embodiment of the present invention.
- FIG. 11 is a diagram illustrating the summing of multiple input vectors to form a result vector
- FIG. 12 is a flow diagram illustrating a method for use in computer graphics lighting in accordance with an embodiment of the present invention.
- FIG. 13 is a diagrammatic view illustrating an application of a step of the method shown in FIG. 12 in accordance with an embodiment of the present invention.
- FIG. 14 is a block diagram illustrating a processor based system that may be used to run, implement and/or execute the methods and/or techniques shown and described herein in accordance with embodiments of the present invention.
- per-pixel lighting or “pixel lighting”
- per-vertex lighting or “vertex lighting”
- pixel lighting the lighting equation is evaluated per-pixel, which means the light is computed at every pixel of the model.
- Per-pixel lighting provides good quality but is expensive to implement.
- Per-vertex lighting only calculates the lighting at the vertices of the computer model and then interpolates the lighting over the surface of the model. Per-vertex lighting is less expensive to implement than per-pixel lighting but does not provide as good of quality.
- Some of the embodiments of the present invention provide a hybrid approach to lighting which uses aspects of both per-vertex lighting and per-pixel lighting. For example, in some embodiments the method starts with techniques used in per-vertex lighting, but then some calculations are done per-pixel to improve the quality.
- FIG. 1 illustrates the general flow of a method 100 according to an embodiment of the present invention.
- the method 100 may be used for providing dynamic lighting in computer graphics.
- a surface is established that is represented by at least one polygon.
- a triangle or other polygon mesh may be used to define the shape of an object to be rendered.
- one or more light sources are established that are configured to illuminate the surface.
- a scene of a video game or other computer simulation may include a character defined by a triangle mesh that is illuminated by several different light sources, such as ambient light, directional lighting, and/or omni lighting.
- FIG. 2 illustrates an example of these first two steps.
- a polygon mesh that defines the shape of a human hand 202 is established on a display 204.
- the surface of the human hand 202 is represented by at least one polygon, in this case many triangles 206, with each triangle including three vertices.
- One or more light sources 208, 210, 212, and 214 are established on the display 204 that are configured to illuminate the surface of the human hand 202.
- the light sources are aggregated per- vertex.
- the positions of the light sources are aggregated, and then the colors of the light sources are aggregated. More specifically, in step 106 an aggregate light source position is computed for each vertex of each of the polygons. As will be discussed in detail below, the computing of the aggregate light source position for each vertex includes averaging the directions from the vertex to the one or more light sources. In step 108, an aggregate light source color is computed for each vertex of the polygon.
- step 110 the computed aggregate light source positions for the vertices of each polygon are interpolated per-pixel across the polygon.
- This step which may be performed by a pixel shader, provides an interpolated aggregate light source position value for each of the pixels in the polygon.
- step 112 the computed aggregate light source colors for the vertices of each polygon are interpolated across the polygon. This provides an interpolated aggregate light source color value for each of the pixels in the polygon.
- linear interpolation may be used for the interpolation of both the aggregate light source positions and colors.
- step 114 the pixels are lit using each pixel's respective interpolated aggregate light source position value and color value.
- the method 100 provides a solution that provides better quality lighting than per- vertex lighting. This is at least partly due to some calculations being performed per-pixel. Yet, the solution is less expensive and requires less processing power than per-pixel lighting in the multi-light scenario. Because the method 100 uses less processing power than per-pixel lighting, it works well for implementing dynamic lighting, i.e. the process of computing lighting calculations in real time to account for real-time variations, such as changes in game state, player's and characters' positions, camera movement, etc. As such, the method 100 may be used, for example, to provide the primary or non-primary source of dynamic direct lighting in computer simulations, such as video games. The method 100 may be referred to herein as a method of providing dynamic lighting or a method of providing dynamic vertex lights. The later term should not be confused with conventional vertex lighting.
- the solution provided by the method 100 is significantly less expensive than per-pixel lighting for at least two reasons.
- the falloff function is a scaled and biased cosine curve (from positive peak to negative peak), as follows:
- This band-limited function which is illustrated in FIG. 3, was chosen to minimize interpolation artifacts due to per-vertex evaluation. That is, it helps to minimize the artifacts that are caused by the Gouraud interpolation of per-vertex values across the triangle. It has been found to be smooth, inexpensive, and having a first derivative that approaches 0 as the function itself approaches 0.
- FIGS. 4 A and 4B show identical directional lights shining straight down.
- a linear falloff is used, while in FIG. 4B the above cosine curve falloff is used. Both falloff functions were set to reach zero at the same distance.
- the method 100 may be used with many different types of lights, which for example may include but is not limited to, directional, omni (point), and ambient lights.
- directional lights may be converted to point lights before combining/aggregating.
- the directional and omni lights may be combined into a single (interpolated) representation.
- the interpolated representation for directional and omni lights is a world space position and an RGB color.
- the ambient lights may be combined into a separate RGB interpolator. It was mentioned above that in step 106 an aggregate light source position is computed for each vertex of each polygon, and then in step 110 the computed positions are interpolated per-pixel across each polygon. It has been found that interpolating a position rather than a direction provides good results.
- interpolating a position can make the visuals appear independent of tessellation. Furthermore, it is believed that with this representation, a single vertex light can appear indistinguishable from a single pixel light (other than the falloff function) regardless of mesh tessellation.
- FIGS. 5 A and 5B illustrate the benefits of interpolating a position per-pixel rather than a direction.
- FIG. 5 A which illustrates the interpolation of directions, shows the edge of polygon 502 that has its surface positioned perpendicular to the page.
- the polygon 502 includes vertices A and B.
- a light source L represents an aggregated light source for both vertex A and vertex B.
- a light vector 504 at vertex A points in the direction towards the light source L, and a light vector 506 at vertex B points in the direction towards the light source L.
- the results of interpolating the directions of vectors 504 and 506 across the polygon 502 are illustrated at a pixel 508 between vertices A and B. As shown, combining vectors 504 and 506 produces a light vector 510 for pixel 508.
- the calculation is represented by the following equation:
- FIG. 5B illustrates the interpolation of the position of the light source L across the polygon 502. The result is that the pixel 508 sees the light source L in a world space position that is consistent with vertices A and B. This causes a light vector 512 for pixel 508 to point directly at the light source L.
- the calculation is represented by the following equation:
- computing the aggregate light source position for each vertex includes averaging the directions from the vertex to the one or more light sources.
- a discussion will now be provided of a method of computing the aggregate light source position in accordance with an embodiment of the present invention.
- FIG. 6 illustrates a naive approach to computing an aggregate light position.
- light 0 and light 1 illuminate vertex V. It will be assumed that with falloff, the intensities generated at vertex V by light 0 and light 1 are equal.
- the aggregate light position is computed by simply averaging the positions of light 0 and light 1. The result of this computation is an aggregate light position 602.
- the light direction from the aggregate light position 602 at vertex V is much closer to the direction from light 1 than the direction from Light 0. This result is undesirable because the distant light, i.e. light 1, is over-emphasized.
- a better and more balanced result would be an aggregate light position 604. Therefore, it has been found that simply averaging positions has the effect of exaggerating the importance of distant lights.
- embodiments of the present invention provide a method in which the positions of the light sources are aggregated while dividing the weight of each light source by the length of a vector from the light source to the vertex, to avoid over-emphasizing distant lights. This causes the averaging to essentially be performed on directions, while still using positions for input data and result.
- using a position as the result is beneficial when the computation is performed per-vertex because it provides good results when interpolated over the triangles or other polygons. That is, although the interpolated representation uses positions, it is believed that for best visual results their directions should be averaged.
- FIG. 7 illustrates a method 700 of computing an aggregate light position in accordance with an embodiment of the present invention.
- the world vertex position is subtracted from each world light position to create relative vectors.
- the world vertex position is the position of the vertex for which lights are being combined.
- the relative vectors are averaged. In some embodiments, the averaging uses weights divided by the vector lengths. Then in step 706, the vertex position is added back at the end.
- the method 700 may be illustrated by the following equation (4):
- L agg is the aggregate light position
- L 1 is the light position for Light i
- V is the position of the vertex for which lights are being combined
- W 1 is the light weight for Light i based on the intensity of Light i at V
- n is number of lights in the current light context.
- FIGS. 8 A, 8B, 8C and 8D An example application of the method 700 is illustrated in FIGS. 8 A, 8B, 8C and 8D.
- FIG. 8A shows a vertex V and two light sources L 0 and L 1 .
- a light vector 802 points to light source Lo, and a light vector 804 points to light source Li.
- the position of the vertex V has been subtracted from the position of each of the light sources L 0 and Li to create relative vectors 806 and 808.
- the relative vectors 806 and 808 are averaged, which results in vector 810.
- the averaging of the relative vectors 806 and 808 may use a weight of each light source Lo and Li divided by a length of a vector to the light source, i.e. light vectors 802 and 804 (FIG. 8A).
- the averaging of unit light vectors may use a weight of each light source Lo and Li divided by an accumulated weight.
- the weight of each light source Lo and Li may be based on an intensity of the light source at the vertex V.
- the position of the vertex V is added to the result of the averaging of the relative vectors 806 and 808, which provides the aggregate light source position 812. As illustrated, the aggregate light source position 812 is approximately located on the line connecting the original light sources L 0 and L 1 .
- the method can be seen as converting the positions into normalized directions, averaging those, and then converting the result back to a position.
- Another advantage of this method is the ease of combining directional lights with omni lights. Specifically, for a directional light the unit-length direction can simply be accumulated. There is no need to divide the weight by the vector length since it is already normalized. In the case of a mesh lit by a single normalized light, the interpolated "light position" is offset by a unit-length vector from each vertex.
- the weight of each light source is based on an intensity of the light source at the vertex. In some embodiments, only the light intensity is used when calculating light weight (W 1 ) and RGB is ignored. It has been found that this approximation provides a good appearance and has tangible workflow benefits for artists. Namely, an artists can change the color of the light without changing the interpolated light position.
- the weight factor may be computed using the falloff function multiplied by the light intensity multiplied by the luminance of the light's color.
- dropping the luminance of the light's color and using only the intensity and falloff are believed to provide better results. Namely, ignoring the light color is believed to produce better visuals.
- FIG. 9A illustrates the result when the luminance of the light's color is used
- FIG. 9B illustrates the result when the luminance of the light's color is not used and only scalar intensity is used.
- lights are combined without regard for shadowing. Since lights are 5 combined without regard for shadowing, it is desirable in some embodiments to reduce the contributions of lights which are back facing to the vertex. Otherwise, in cases where lights are shining in roughly opposite directions, the light behind the mesh will influence the lighting color and direction, causing severe artifacts. It is desirable to use a smooth function to reduce back facing light contributions, otherwise l o the abrupt changes in position along side-facing vertices will cause artifacts.
- a function that may be used is the dot-product between the light direction and the vertex normal, scaled and biased to a 0..1 range:
- W 1 is the weight of Light i
- N v is the vertex normal at the vertex V
- L 1 is the light direction of Light i at vertex V.
- the next step is to compute an aggregate light source color for each vertex of the polygon (step 108 of FIG. 1).
- the back facing light factor described above tends to have consequences on computing the aggregate color. Specifically, once the back facing factor is added into the aggregate direction computation, the results become more sensitive to the exact method used to combine the light colors into the final aggregate color. Many
- one method that may be used is to multiply the light colors (attenuated by falloff) by the saturated (clamped) dot product between the individual light direction and the aggregate light direction. This means that the aggregate light direction needs to be computed first. Therefore, in some embodiments, computing the dynamic lights described herein becomes a two-pass process: in the first pass the aggregate position/direction is computed (step 106 of FIG. 1), and in the second pass the aggregate color is computed (step 108 of FIG. 1).
- C agg is the aggregate light color at the Vertex V
- C 1 is the color of Light i attenuated by the distance between Light i and Vertex V
- L 1 is the direction of Light i at Vertex V
- L agg is the aggregate light direction calculated earlier.
- FIG. 10 An example application of this method of computing the aggregate light color is illustrated in FIG. 10.
- a vertex V and two light sources 1002 and 1004 are shown.
- Co is the color of light source 1002 attenuated by the distance between light source 1002 and vertex V.
- Ci is the color of light source 1004 attenuated by the distance between light source 1004 and vertex V.
- L 0 is the direction of light source 1002 at vertex V
- Li is the direction of light source 1004 at vertex V.
- the aggregate light source color C agg for vertex V is computed by first multiplying the color Co by the saturated dot product between the direction L 0 and the direction L agg , then multiplying the color Ci by the saturated dot product between the direction Li and the direction L agg , and then summing the results. Therefore, in some embodiments, computing the aggregate light source color for each vertex of a polygon comprises, for each vertex, multiplying an attenuated color of each light source by a saturated dot product between a direction of the light source and a result of the averaging directions from the vertex to the one or more light sources, and then summing the results.
- N the vertex normal
- FIG. 11 illustrates the summing of multiple input vectors to form a result vector.
- the length of the result vector is equal to the sum of the projections of the input vectors onto the result vector. That is, when adding multiple vectors V 1 , the result vector V is equal to the sum of the projections OfV 1 onto V.
- RGB color values This suggests a straightforward generalization from achromatic luminance values to RGB color values. Therefore, extending to RGB provides:
- the colors of the light sources are aggregated in a physically principled manner to produce a single value, which is less expensive than using three values (for R, G, and B).
- the above sections state that the computed dynamic lights are passed to the pixel shader for interpolation as one direction and one color. This is actually a slight simplification. Namely, in some embodiments, two colors are actually passed to the pixel shader. That is, in some embodiments, every dynamic light is marked with whether it is affected by shadows or not. In practice, whether the light casts shadows may be used for this determination.
- the color aggregation occurs as listed above, but into two separate accumulators for shadowed and unshadowed lights. In the pixel shader the shadowed light color is multiplied by the shadowing factor and then added to the unshadowed light color. The result is a single color used in the shader.
- the method of computing an aggregate light source color for each vertex may account for shadowed and unshadowed lights. By way of example, this may be done by determining whether the aggregate light source for each vertex casts shadows. For each vertex in which an aggregate light source casts shadows, a shadowed light source color is provided.
- light sources 5 are aggregated per-vertex.
- a two-pass process is used in which the aggregate position/direction is computed in a first pass (step 106 of FIG. 1), and then the aggregate color is computed in a second pass (step 108 of FIG. 1). The results of these computations are separately interpolated across the polygon per-pixel.
- the method comprises generating three independent vectors for R, G and B.
- the three vectors may be represented as follows:
- the tessellation-dependent artifacts can be solved by interpolating independent R, G and B vectors.
- the method comprises generating three independent vectors for R, G and B as described above, and then interpolating the independent R, G and B vectors across the polygon.
- This embodiment provides good results, but because three independent R, G and B vectors are interpolated, an additional interpolator may be needed. Additional information may be found in the paper by ERIC TABELLION and ARNAULD LAMORLETTE, entitled "An Approximate Global Illumination System for Computer Generated Films," ACM Trans. Graph, vol. 23, no. 3, 2004, pp. 469-476, which is hereby fully incorporated by reference herein in its entirety.
- FIG. 12 illustrates a method 1200 according to an embodiment of the present invention that uses the concept of interpolating a vector quantity directly. Specifically, in step 1202 a surface is established that is represented by at least one polygon that includes a plurality of vertices, and in step 1204 one or more light sources are established that are configured to illuminate the surface. These steps may be performed in the same or similar manner as described above.
- step 1206 for each vertex of the polygon, at least one vector quantity is computed that represents an aggregation of a visual attribute and a direction of each of the one or more light sources.
- the visual attribute may comprise a luminance value
- only one vector quantity is computer per vertex.
- the single vector quantity may comprise a summation of the luminance value multiplied by the direction for each of the one or more light sources, as shown in Equation (17) above.
- FIG. 13 illustrates an example of the monochromatic light scenario.
- a polygon 1302 which has its surface positioned perpendicular to the page, includes two vertices V 0 and V 1 .
- Three light sources L 0 , L 1 , and L 2 are configured to illuminate the surface of the polygon 1302.
- a vector quantity X is computed that comprises a summation of the luminance value multiplied by the direction for each of the three light sources Lo, L 1 , and L 2 .
- the vector quantity X is what will be interpolated across the polygon 1302 to the pixels between the two vertices Vo and Vi.
- the visual attribute comprises a color value.
- the at least one vector quantity may comprise a summation of the color value multiplied by the direction for each of the one or more light sources.
- the at least one vector quantity may comprise first, second, and third vector quantities that each correspond to a different color value.
- the first, second, and third vector quantities may respectively correspond to Red, Green, and Blue color values, as shown in Equations (18), (19), and (20) above, and as described in the independent R, G and B vector scenario above.
- the first vector quantity comprises a summation of a red color value multiplied by the direction for each of the one or more light sources
- the second vector quantity comprises a summation of a green color 5 value multiplied by the direction for each of the one or more light sources
- the third vector quantity comprises a summation of a blue color value multiplied by the direction for each of the one or more light sources.
- step 1208 the computed vector quantities are interpolated per-pixel across the polygon to provide at least one interpolated vector quantity value o for each of a plurality of pixels included in the polygon.
- this results in one interpolated vector quantity value for each pixel
- in the RGB color scenario this results in three interpolated vector quantity values for each pixel.
- linear interpolation may be used for the interpolation.
- each of the pixels may be lit using the5 interpolated vector quantity value(s), as shown in step 1210.
- the first approach involves aggregating the position and color of the lights according to novel methods and then separately interpolating the values across the polygon. This approach is reasonably inexpensive o and provides good quality dynamic lights.
- the techniques for light aggregation may be used in baked vertex lighting. This allows baked vertex lighting to be treated as yet another vertex light at render time.
- the second approach involves computing at least one vector quantity that represents an aggregation of a visual attribute and a direction 5 of each of the light sources and then interpolating the vector quantities across the polygon.
- Both the first and second approaches may be used, for example, to provide the primary or non-primary source of dynamic direct lighting in computer simulations, such as video games. Both approaches may be used to support at least three types of dynamic lights, such as directional, omni and ambient lights. 0
- the methods and techniques described herein may be utilized, implemented and/or run on many different types of systems, devices and apparatuses.
- Examples of such systems, devices and apparatuses include, but are not limited to, computers, entertainment systems, game consoles, portable entertainment systems/game devices, DVD players, Blu-ray disc players, hand-held devices, personal digital assistants (PDA), cell phones, smart phones, etc.
- PDA personal digital assistants
- FIG. 14 illustrates an example of a processor based system 1400 that may be used for implementing, executing and/or running any of the methods and techniques described herein.
- the processor based system 1400 may comprise a stand alone system or device, or it may be part of, or included in, any of the systems, devices and apparatuses listed above, or some other system, device or apparatus.
- the processor based system 1400 may comprise any type of system having one or more processors.
- the processor based system 1400 may include, but is not required to include, a central processing unit (CPU) 1402, a graphics processing unit (GPU) 1404, a random access memory (RAM) 1406, a mass storage unit 1408, and a display 1410.
- CPU central processing unit
- GPU graphics processing unit
- RAM random access memory
- mass storage unit 1408 a display 1410.
- These components may be included in the same device or apparatus, or they may comprise separate devices or apparatuses.
- One or more components of the system 1400 may be used for implementing any system, device or apparatus mentioned above, such as for example a computer, entertainment system, game console, etc. However, the use of the system 1400 or any portion thereof is not required.
- the CPU 1402 and/or GPU 1404 may be used to execute or assist in executing the steps of the methods and techniques described herein, such as the methods and techniques described above for aggregating light sources per- vertex in computer graphics. Furthermore, various content, images, computer models, surfaces, light sources, etc., may be rendered on the display 1410.
- the display 1410 may comprise any type of display and may be used for rendering the computer models, surfaces, light sources, etc., described above. For example, the display 1410 may be used for the display 204 (FIG. 2) described above.
- the mass storage unit 1408 may include or comprise any type of computer readable storage or recording medium or media.
- the computer readable storage or recording medium or media may be fixed in the mass storage unit 1408, or the mass storage unit 1408 may optionally include removable storage media 1412, such as a digital video disk (DVD), Blu-ray disc, compact disk (CD), USB storage device, floppy disk, or other media.
- DVD digital video disk
- CD compact disk
- USB storage device floppy disk
- the mass storage unit 1408 may comprise a disk drive, a hard disk drive, flash memory device, USB storage device, Blu-ray disc drive, DVD drive, CD drive, floppy disk drive, etc.
- the mass storage unit 1408 or removable storage media 1412 may be used for storing code that implements the methods and techniques described herein, such as code for performing the above-described dynamic lighting.
- one or more of the embodiments, methods, 5 approaches, and/or techniques described above may be implemented in a computer program executable by a processor based system.
- processor based system may comprise the processor based system 1400, or a computer, entertainment system, game console, portable entertainment system/game device, etc.
- Such computer program may be used for executing various steps and/or features of o the above-described methods and/or techniques. That is, the computer program may be used for causing or configuring a processor based system to achieve the functions described above.
- such computer program may be used for implementing any embodiment of the above-described computer graphics lighting methods.
- such computer program may be used for implementing5 a vertex shader, pixel shader, or similar tool, using any one or more of the above described embodiments, methods, approaches, and/or techniques.
- the computer program may comprise a video game, role-playing game (RPG), or other computer simulation.
- program code modules, loops, subroutines, etc., within the computer program may be used for executing o various steps and/or features of the above-described methods and/or techniques.
- the above-described computer program may be stored or embodied on a computer readable storage or recording medium or media.
- the computer program may be stored or embodied on a computer readable storage or recording medium or media, such as may be included in the RAM5 1406, the mass storage unit 1408, and/or the removable storage media 1412. That is, any of the storage devices, such as the RAM 1406, the mass storage unit 1408, and/or the removable storage media 1412, may be used for storing the code for the computer program.
- any of such storage devices may serve as a tangible computer storage medium for embodying a computer program for causing a console, system, 0 computer, or other processor based system to execute or perform the steps of any of the methods and/or techniques described herein.
- some embodiments of the present invention provide a storage medium storing a computer program executable by a processor based system, the computer program causing the processor based system to execute steps comprising: establishing a surface that is represented by at least one polygon that includes a plurality of vertices; establishing one or more light sources that are configured to illuminate the surface; and computing an aggregate light source position for each 5 vertex of the polygon, wherein the computation for each vertex includes averaging directions from the vertex to the one or more light sources.
- some embodiments of the present invention provide a storage medium storing a computer program executable by a processor based system, the computer program causing the processor based system to execute steps o comprising: establishing a surface that is represented by at least one polygon that includes a plurality of vertices; establishing one or more light sources that are configured to illuminate the surface; for each vertex of the polygon, computing at least one vector quantity that represents an aggregation of a visual attribute and a direction of each of the one or more light sources; and interpolating the computed 5 vector quantities across the polygon to provide at least one interpolated vector quantity value for each of a plurality of pixels included in the polygon.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
L'invention porte sur un procédé à utiliser en infographie qui comprend l'établissement d'une surface qui est représentée par au moins un polygone qui comprend une pluralité de sommets, l'établissement d'une ou de plusieurs sources de lumière qui sont configurées pour éclairer la surface, et le calcul d'une position de source de lumière regroupée pour chaque sommet du polygone, le calcul pour chaque sommet comprenant l'obtention d'une moyenne des directions allant du sommet à la ou aux sources de lumière. Un autre procédé comprend, pour chaque sommet du polygone, le calcul d'au moins une quantité vectorielle qui représente une agrégation d'un attribut visuel et d'une direction de chacune de la ou des sources de lumière, et l'interpolation des quantités vectorielles calculées dans l'ensemble du polygone pour obtenir au moins une valeur de quantité vectorielle interpolée pour chacun d'une pluralité de pixels inclus dans le polygone.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/323,340 US20100128038A1 (en) | 2008-11-25 | 2008-11-25 | Method and apparatus for interpolating color and direction as one entity in computer graphics |
US12/323,306 US8355022B2 (en) | 2008-11-25 | 2008-11-25 | Method and apparatus for aggregating light sources per-vertex in computer graphics |
US12/323,306 | 2008-11-25 | ||
US12/323,340 | 2008-11-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2010062790A1 true WO2010062790A1 (fr) | 2010-06-03 |
Family
ID=42226001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2009/063629 WO2010062790A1 (fr) | 2008-11-25 | 2009-11-06 | Procédé infographique pour regrouper des sources de lumière par sommet et interpoler une couleur et une direction en tant que seule entité |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2010062790A1 (fr) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010048444A1 (en) * | 1998-07-17 | 2001-12-06 | James T. Hurley | System and method for fast phong shading |
US20040130552A1 (en) * | 1998-08-20 | 2004-07-08 | Duluk Jerome F. | Deferred shading graphics pipeline processor having advanced features |
US20070206008A1 (en) * | 2000-02-25 | 2007-09-06 | The Research Foundation Of The State University Of New York | Apparatus and Method for Real-Time Volume Processing and Universal Three-Dimensional Rendering |
-
2009
- 2009-11-06 WO PCT/US2009/063629 patent/WO2010062790A1/fr active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010048444A1 (en) * | 1998-07-17 | 2001-12-06 | James T. Hurley | System and method for fast phong shading |
US20040130552A1 (en) * | 1998-08-20 | 2004-07-08 | Duluk Jerome F. | Deferred shading graphics pipeline processor having advanced features |
US20070206008A1 (en) * | 2000-02-25 | 2007-09-06 | The Research Foundation Of The State University Of New York | Apparatus and Method for Real-Time Volume Processing and Universal Three-Dimensional Rendering |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8355022B2 (en) | Method and apparatus for aggregating light sources per-vertex in computer graphics | |
US20100128038A1 (en) | Method and apparatus for interpolating color and direction as one entity in computer graphics | |
JP3021368B2 (ja) | 画素の法線ベクトルを用いたバンプマッピングレンダリング方法及びそれを具現するレンダリング装置 | |
Cohen et al. | Real-Time high dynamic range texture mapping | |
US7006090B2 (en) | Method and computer program product for lighting a computer graphics image and a computer | |
McAllister et al. | Efficient rendering of spatial bi-directional reflectance distribution functions | |
US8803879B1 (en) | Omnidirectional shadow texture mapping | |
US7212206B2 (en) | Method and apparatus for self shadowing and self interreflection light capture | |
US20080122856A1 (en) | Systems and methods for providing controllable texture sampling | |
US7990377B2 (en) | Real-time rendering of light-scattering media | |
JP4975159B2 (ja) | グラフィックシステム、グラフィックス画像を生成する方法およびプログラムにおける無色光のライティング | |
JP4223244B2 (ja) | 画像生成システム、プログラム及び情報記憶媒体 | |
US5892516A (en) | Perspective texture mapping circuit having pixel color interpolation mode and method thereof | |
US8190403B2 (en) | Real-time rendering of light-scattering media | |
JP4167358B2 (ja) | 画像生成システム及び情報記憶媒体 | |
JP4159082B2 (ja) | 画像生成システム、プログラム及び情報記憶媒体 | |
Fujita et al. | Hardware-Assisted Relief Texture Mapping. | |
WO2010062790A1 (fr) | Procédé infographique pour regrouper des sources de lumière par sommet et interpoler une couleur et une direction en tant que seule entité | |
JP4704615B2 (ja) | 画像生成システム、プログラム及び情報記憶媒体 | |
Ikkala et al. | DDISH-GI: Dynamic Distributed Spherical Harmonics Global Illumination | |
Czuczor et al. | Photon Map Gathering on the GPU. | |
Hoffman | Crafting physically motivated shading models for game development | |
Steiner | Post processing effects | |
Wynn | Implementing bump-mapping using register combiners | |
JP2010033302A (ja) | 画像生成システム、プログラム及び情報記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09829700 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 09829700 Country of ref document: EP Kind code of ref document: A1 |