Ray tracing with automatic exposure

By using ray tracing technology and virtual light meter in video game rendering frames, the uneven exposure problem caused by traditional automatic exposure algorithms is solved, and a stable and consistent rendering effect is achieved, improving the user experience.

CN114245907BActive Publication Date: 2025-08-19NVIDIA CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202080058143.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-08-18
Filing Date
2020-08-17
Publication Date
2025-08-19
Estimated Expiration
2040-08-17

AI Technical Summary

Technical Problem

Traditional automatic exposure algorithms can easily lead to uneven exposure in video game rendering frames, especially in rapidly changing scenarios, affecting user experience and visual effects.

Method used

Using ray tracing technology, the incident light value is sampled in the virtual environment through a virtual light meter, the automatic exposure settings of the rendered frame are determined, and the exposure value is adjusted to maintain consistency in combination with the screen space buffer and the time filter.

Benefits of technology

It realizes stable exposure of rendered frames under different scenes and lighting conditions, improves the consistency of user experience and visual effects, and reduces the problems of noise and improper exposure.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114245907B_ABST
    Figure CN114245907B_ABST
Patent Text Reader

Abstract

In various examples, a virtual light meter can be implemented in conjunction with ray tracing techniques to determine incident light values—e.g., incident irradiance, incident radiosity, etc.—to adjust automatic exposure values for a rendered frame. For example, for any location in a virtual game environment, one or more rays can be used to sample the incident light over a sampling pattern (e.g., a hemispherical sampling pattern). As a result, incident light values can be sampled near an object of interest in a scene or frame so that the exposure value is consistent or stable regardless of the composition of the rendered frame.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Proper exposure levels for rendered frames in applications like video games can provide a greater sense of realism while also allowing players to more easily navigate the game environment. Automatic exposure in games typically achieves a pleasing balance by analyzing the pixels of the rendered scene and adjusting the brightness or exposure based on the pixel values. For example, in a scenario where some pixels are bright and others are dark, the determined exposure value may correspond to a balance between bright and dark pixels, so that every pixel is correctly exposed. However, these traditional methods often struggle when everything in the image is either dark or bright. For example, if the image is too dark, the automatic exposure algorithm may increase the exposure level to the point where everything in the image is too bright. Similarly, if the image is too bright, the automatic exposure algorithm may decrease the exposure level to the point where everything in the image is too dark. As another example, if the subject of a scene is captured against a bright background—for example, a person standing with their back to the sky—the automatic exposure algorithm may appropriately expose the pixels depicting the sky but underexpose the subject (for example, as a silhouette). Furthermore, abrupt changes in composition between frames—from dark to light or vice versa—often result in corresponding rapid changes in exposure or brightness, which are not only inaccurate for natural perception but also produce noise due to the rapid changes. For example, when the camera pans across a dark surface to reveal a piece of white paper, a conventional auto-exposure algorithm may overexpose the frame when only the table is in the frame, and then quickly switch to an underexposed frame when the white paper comes into view. However, because the actual lighting conditions surrounding the table may not have changed, this rapid switch from overexposure to underexposure does not create a natural or ideal presentation of the rendered frame. As a result, conventional auto-exposure algorithms may result in frame sequences that degrade the user experience by making the game more challenging (e.g., due to improper exposure of potentially relevant subjects in the frame), while also producing less appealing visuals. Summary of the Invention

[0002] Embodiments of the present disclosure relate to applying ray tracing techniques to perform automatic exposure in frames of graphics rendering. Systems and methods for implementing virtual light meters are disclosed that use ray tracing to determine incident light values to adjust automatic exposure settings for rendered frames. For example, one or more rays can be used to sample incident light on a sampling shape (e.g., a hemisphere or photometric hemisphere) at any location in a virtual environment (e.g., as incident radiance, incident irradiance, and / or light intensity). Thus, compared to traditional processes, incident light can be sampled near objects of interest in a scene or frame so that exposure values are consistent or stable regardless of the composition of the rendered frame. In addition, because the light readings may be independent of the reflectivity or other surface features of the object, the exposure value determined based on the output of the virtual light meter is more likely to produce a correct exposure value - even for objects with unusual surface features. For example, in the case of a white sheet of paper on a dark table—the white sheet of paper being the object of interest in the scene—a virtual ray-tracing light meter can be implemented near the white sheet of paper in the virtual scene (e.g., above, next to, in front of, etc.) to measure the incident light so that the exposure value of the rendered frame is adapted to correctly expose the white sheet of paper. In such an example, if the camera were to pan across the black table in frames that alternately include and omit the white sheet of paper, the exposure value can remain consistent because the exposure value is not determined based on the pixels of the rendered frame, but rather based on the output of the virtual light meter.

[0003] In some scenes, there may be subjects, objects, or surfaces that are brighter than the white paper, such as the sky, specular reflections, or emissive surfaces. Therefore, to account for not only the white paper, but also other subjects, objects, or surfaces of the scene, the exposure value from the virtual light meter can be used to set an upper limit for exposure, and the exposure value can be adjusted based on the pixels of the rendered image—for example, to reduce exposure for things that may be brighter than the white paper. A similar process can be performed for dark surfaces, where the automatic exposure value from the virtual light meter can be used as a lower limit, and the exposure value can be adjusted based on the pixels of the rendered image—for example, to increase exposure for things that may be darker than the table, where the table is the main subject of the frame. BRIEF DESCRIPTION OF THE DRAWINGS

[0004] The present system and method for ray tracing for automatic exposure are described in detail below with reference to the accompanying drawings, wherein:

[0005] Figure 1 is a block diagram of an automatic exposure system according to some embodiments of the present disclosure;

[0006] Figures 2A-2B depicts an example visualization of using a virtual light meter to determine exposure values for a rendered frame according to some embodiments of the present disclosure;

[0007] Figure 2Cdepicts an example visualization of using computed ray tracing data from a screen-space buffer as a virtual light meter to determine exposure values for a rendered frame, according to some embodiments of the present disclosure;

[0008] Figure 3 depicts a flow chart illustrating a method of determining exposure values using a virtual light meter according to some embodiments of the present disclosure;

[0009] Figure 4 depicts a flow chart illustrating a method for determining exposure values using computed ray tracing data from a screen-space buffer as a virtual light meter, according to some embodiments of the present disclosure;

[0010] Figure 5 is a block diagram of an example content streaming system suitable for implementing some embodiments of the present disclosure;

[0011] Figure 6 is a block diagram of an example computing device suitable for implementing some embodiments of the present disclosure; and

[0012] Figure 7 is a block diagram of an example data center suitable for implementing some embodiments of the present disclosure. DETAILED DESCRIPTION

[0013] The disclosed systems and methods relate to applying ray tracing techniques to perform automatic exposure in frames of graphics rendering. Although primarily described with respect to a virtual environment corresponding to a video game application, this is not intended to be limiting. For example, the disclosed systems and methods can be implemented for any application that includes a virtual or semi-virtual (e.g., augmented or mixed reality) environment, such as virtual reality (VR) applications, augmented reality (AR) applications, computer-aided design (CAD) applications, simulation applications (e.g., robotics simulation, vehicle simulation, etc.), and / or other application types.

[0014] refer to Figure 1 , Figure 1is an example automatic exposure system 100 (also referred to herein as "system 100") in accordance with some embodiments of the present disclosure. It should be understood that this and other arrangements described herein are set forth by way of example only. Other arrangements and elements (e.g., machines, interfaces, functions, commands, functional groupings, etc.) may be used in addition to or in place of those shown, and some elements may be omitted entirely. Furthermore, many of the elements described herein are functional entities that may be implemented as discrete or distributed components or in conjunction with other components, and in any suitable combination and location. The various functions described herein as being performed by entities may be performed by hardware, firmware, and / or software, or any combination thereof. For example, the various functions may be performed by a processor executing instructions stored in a memory. In some embodiments, the features, functions, and / or components of system 100 may be similar to Figure 5 Example content streaming system 500 and / or Figure 6 For example, in some embodiments and with respect to Figure 5 , the automatic exposure system 100 can correspond to a content streaming application, and the method described herein for determining exposure values for rendered frames can be performed by one or more application servers 502 to generate rendered frames that can be streamed to one or more client devices 504.

[0015] The automatic exposure system 100 may include, but is not limited to, an object determiner 104, one or more virtual light meters 106, a screen-space buffer 108, an exposure determiner 110, a temporal filter 112, and / or an image renderer 114. The object determiner 104 may determine one or more objects in the virtual environment. For example, the object may correspond to a potential object for which exposure values are to be determined. In some embodiments, a single object may be determined, while in other embodiments, any number of objects may be determined. Objects may include people, animals, buildings, static objects, dynamic actors, and / or other object types. In some embodiments, the object determiner 104 may determine one or more objects to generate exposure values based on the use of application data. For example, the application data may indicate one or more specific objects that are the focal point of a scene. Similar to a storyboard that a director may use to determine where or who to focus a scene, the application data may be analyzed to determine one or more objects for each frame. Thus, application data, which may represent application state information (e.g., game state information), may be used to determine objects and their positions in the virtual environment. The object type may vary depending on the application type. For example, in a game with avatars or characters, the avatars or characters may be objects. For games without characters, such as games with buildings, vehicles, etc., the object may correspond to a building, vehicle, or other type of object. In some embodiments, the object of a frame may vary on a per-frame or per-scene basis. For example, for some frames, the object may correspond to an avatar, in other frames, the object may correspond to an item, and in other frames, the object may correspond to a structure.

[0016] In some embodiments, the object determiner 104 may use ray tracing to determine one or more objects (eg, persons 210A, 210B, buildings 212, etc.) of a scene or frame. Figure 2AIn visualization 200A, one or more rays 204 may be cast from virtual camera 206 (e.g., in directions around the center of the field of view) into virtual environment 202, and the intersection of rays 204 with one or more objects may be used to determine one or more objects. For example, one or more rays 204 may intersect person 210. In some embodiments, for example, where a single object is to be used, the object closest to virtual camera 206 may be used (e.g., the object determined to be the shortest distance from virtual camera 206 as determined using sampled data from rays 204), or an object identified as a particular type of object may be used. For example, while building 212 may be intersected by one or more rays 204, person 210 may be selected as the object for which exposure values should be determined based on object selection criteria (e.g., criteria indicating that a person or other animated actor should be exposed). In the absence of an animated actor, exposure may be measured at a certain distance from virtual camera 206 (e.g., two meters, four meters, etc.) using a secondary object type (e.g., a building) and / or using other criteria.

[0017] For example, in a gaming application (e.g., a first-person shooter (FPS) gaming application), the frame can be exposed to resemble the natural perception of the human eye. In such an embodiment, the subject can be a character or avatar controlled by the user and viewed from a first-person perspective. Therefore, the virtual light meter 106A can be placed in front of or above the avatar, or in a position where the avatar is not in the frame (e.g., because the perspective is from the avatar's eyes), and the virtual light meter 106 can be placed at a certain position in front of the virtual camera 206 (e.g., directly in front, a certain distance in front, etc.) to measure the incident light (e.g., incident radiance, irradiance, light intensity, etc.) at the avatar's location. As a result, when the avatar moves from a dark building to an outdoor location, the exposure value can be adjusted so that the frame is exposed to allow navigation when inside the building, but not too bright when outside. In such an example, if the virtual light meter 106 is not used, the frame can be exposed based on the brighter exterior, which may cause the frame to be underexposed even when the avatar or player is still inside the building (e.g., the frame may appear too dark to navigate inside the building).

[0018] Reference again Figure 1 , one or more virtual light meters 106 can be instantiated or placed at one or more locations in the virtual environment. As described herein, the one or more locations can correspond to one or more objects. The one or more virtual light meters 106 can measure incident light by projecting sampling rays from one or more locations of the one or more virtual light meters 106 and in a sampling pattern or shape (e.g., a hemisphere or lobe). The sampling rays can be taken from their source—e.g., at the light probe 220 ( Figure 2B)'s position - is traced through the environment until a sampling ray 222 hits a light source (e.g., to trace the path that the light beam will take in the virtual world). In some embodiments, but not limited to, hundreds of sampling rays may be cast per virtual light meter 106 per frame - e.g., approximately 1,000 sampling rays. For example, using 600 to 1,400 sampling rays may produce high-quality incident light measurements that may be used to determine exposure levels for producing high-quality rendered frames. However, this number is not intended to be limiting, and a different number of sampling rays may be used without departing from the scope of this disclosure. When performing ray tracing for rendering, potentially millions of rays may be cast per frame. Therefore, by adding more than approximately 1,000 rays per virtual light meter 106 per frame, the runtime of the rendering operation may be minimally impacted while still producing high-quality results.

[0019] One or more virtual light meters 106 can measure incident light, and the incident light value can be used to determine exposure values for one or more frames. For example, incident light can be measured by evaluating the incident radiance near one or more objects—e.g., how much light is incident near the objects. In addition to or in lieu of irradiance, irradiance, light intensity, and / or other light measurements can be evaluated using sampled light projected from the location of one or more virtual light meters 106.

[0020] refer to Figure 2B 2B, one or more virtual light meters 106 (e.g., light meters 106B and 106C) may include a probe 220 and one or more sampling rays 222 projected in a sampling pattern 224 around the probe 220—e.g. Figure 2B . The sampling pattern or shape of one or more virtual light meters 106 can be oriented in any direction, depending on the embodiment. As non-limiting examples, the sampling shape can be oriented so that the bottom of the hemisphere is parallel to the ground plane, can be oriented so that the bottom of the hemisphere is perpendicular to the direction of the light ray 204 intersecting the object, or can be oriented so that the bottom of the hemisphere is perpendicular to the object or its surface. In some embodiments, instead of a hemisphere, the sampling shape can correspond to a portion of a sphere or hemisphere - for example, used as a spot light meter for incident light from a more focused direction. For example, a focused measurement lobe can be used as a spot light meter to "expose the face of a subject." The measurement lobe can be placed near or on the face of a subject in the virtual environment, which can generate an appropriate incident light reading for the face of the subject.

[0021] Furthermore, depending on the embodiment, the position of the probe 220 of one or more virtual light meters 106 may be located at different locations. Figure 2AAs shown, one or more virtual light meters 106A can be positioned in front of a subject, such as in front of the subject's face. This can allow for measurement of incident light on the subject's face—similar to exposing an image to properly illuminate a person's face. As another example, and with respect to Figure 2B , virtual light meters 106B and 106C can be placed above the subject so that shadows from the subject do not interfere with light measurements. For example, by placing one or more virtual light meters 106 above the subject, the incident light measurements can more accurately reflect the amount of light falling on the subject from any direction, rather than just the amount of light on the subject's face, side, or chest. As another example, one or more virtual light meters 106 can be instantiated in a direction perpendicular to the light cast from virtual camera 206, thereby setting an exposure level for the subject based on the amount of incident light near the subject from the perspective of virtual camera 206. In some embodiments, reference Figure 2C In visualization 200C, a virtual light meter 106D can be instantiated at a position and orientation such that incident light about the surface normal of an object is measured. In such an example, the surface normal information can be retrieved from the screen-space buffer 108 as described herein, so that calculated incident light information—e.g., from a diffuse light buffer—can be reused as one or more virtual light meters 106D for determining exposure values.

[0022] In addition, regarding Figure 1 and 2C As shown, the screen-space buffer 108 can be used to determine light characteristics corresponding to locations in the virtual environment 202, which can be used to determine exposure values for one or more frames. For example, but not limited to, the screen-space buffer 108 can store ray-traced light information for a scene or frame 208. Thus, instead of using a virtual light meter 106 for a location in the virtual environment (e.g., instead of instantiating virtual light meter 106D), the ray-traced light information stored in the screen-space buffer 108 can be reused as one or more virtual light meters 106. In some embodiments, the screen-space buffer 108 can correspond to a ray-traced indirect diffuse light buffer. For example, and with respect to Figure 2CWhen the screen-space buffer 108 is filled, rays 204 can be cast for each pixel 230 of the frame 208 from the perspective of the virtual camera 206. These rays 204 can be used to populate a geometry buffer that defines surface normals for objects in the virtual environment. Ray tracing can be performed at locations in the virtual environment to estimate lighting information, and the resulting samples can be stored in the screen-space buffer 108. The resulting samples can be denoised by averaging neighboring pixels 230 and smoothing these values over time. As a result, each pixel 230 of the frame 208 can include information similar to that calculated using one or more virtual light meters 106. For example, the correspondence between each pixel 230 and a location in the virtual environment 202 can be based on the fact that rays 204 are known, the orientation of the object or surface of the object can be known, and the light entering the surface of the object or object can be known based on sampling light information at the surface using ray tracing. This information can be stored for each pixel 230 and used to determine lighting information, which is used to determine an exposure value. In an embodiment, lighting information of the screen-space buffer 108—eg, incident radiance, irradiance, light intensity, etc.—may be encoded using spherical harmonics.

[0023] In some embodiments, screen-space buffer 108 information corresponding to only a subset of pixels 230 may be used to determine lighting information—e.g., radiosity, irradiance, light intensity, etc.—and a corresponding exposure value for the frame. For example, pixel grid 232 may be analyzed to determine which pixel 230 in pixel grid 232 should be used to determine exposure. Pixel grid 232 may be located at the center of frame 208 such that the center pixel of frame 208 is included within pixel grid 232 and / or located at the center of pixel grid 232. The grid may be rectangular, square, and / or other shapes. For example, but not limited to, pixel grid 232 may include an 8x8, 16x16, 24x24, or 32x32 grid centered on frame 208. In embodiments, by centering pixel grid 230 on frame 208, an exposure value may be set for the center of the field of view of virtual camera 206, which may correspond to—or more likely correspond to—a meaningful portion of virtual environment 202 for frame 208. However, in other embodiments, the pixel grid 232 may not be centered in the frame 208, or may be dynamically positioned on a frame-by-frame or scene-by-scene basis. For example, application data may be used to determine one or more locations of one or more objects in the virtual environment 202, and the pixel grid 232 may be selected to correspond to the one or more locations.

[0024] In some embodiments, every pixel 230 within the pixel grid 232 may be used, while in other embodiments, a subset of the pixels 230 in the pixel grid 232 may be used. For example, an analysis of an object, object, or environmental feature corresponding to each pixel 230 in the pixel grid 232 may be performed. Thus, in a situation where exposure is to be set for one or more objects of a particular type (e.g., a person, an animal, a figure, a building, a car, etc.), pixels 230 having light information for locations in the virtual environment 202 corresponding to the one or more objects of the particular type may be used. In other embodiments, certain objects or environmental features may be filtered out from consideration—e.g., the sky, the sun, clouds, trees, etc. Thus, in any embodiment, the pixels 230 within the pixel grid 232 may be analyzed to determine the objects in the virtual environment to which the pixels 230 correspond, and a subset of the pixels 230 may be selected.

[0025] Once pixel 230 is selected, illumination values from screen-space buffer 108 corresponding to pixel 230 within the grid of pixels 232 may be used to determine a final illumination value. In some embodiments, the illumination value of each pixel 230 (which corresponds to the illumination value at the location in the virtual environment corresponding to pixel 230) may be averaged or weighted to determine a final illumination value—e.g., for incident radiance, irradiance, and / or light intensity.

[0026] Reference again Figure 1 Once the illumination values from one or more virtual light meters 106 and / or screen-space buffer 108 are determined, these values may be used to determine an exposure value by the exposure determiner 110. In some embodiments, the illumination value used to determine the exposure may be an average or weighted value corresponding to two or more virtual light meters 106 and / or two or more pixels 230 from the screen-space buffer 108. For example, the weighting may be determined based on the distance of the object from the viewer (e.g., from the virtual camera 206) and / or may be predefined. As a non-limiting example, where the illumination value corresponds to an incident irradiance value, the exposure value may be expressed as a power of two (e.g., 2 n ) is used to determine the exposure value (EV) because exposure follows a logarithmic scale. The calculated value can then be clamped to a range between 0 and 1, and the resulting value can be rescaled to a range of -1 to 6 corresponding to the exposure value. However, this is not intended to be limiting, and other methods can be used to calculate the correlation between the exposure value and the irradiance, radiometry, light intensity, and / or other lighting values without departing from the scope of the present disclosure.

[0027] In some embodiments, the frame exposure values calculated using one or more virtual light meters 106 and / or screen-space buffer 108 can be weighted or averaged to account for more traditional automatic exposure techniques. For example, using ray tracing to determine the lighting characteristics or values used to determine exposure may return accurate results for diffuse surfaces (e.g., a subject), but may be less accurate for the sky. Therefore, the exposure values determined using one or more virtual light meters 106 and / or screen-space buffer 108 can be used as clamps for upper and / or lower exposure values. Thus, the exposure value can be calculated using more traditional techniques, such as by analyzing each pixel of a frame or image, finding the darkest and brightest pixels, generating a histogram, and then determining exposure based on this information. This is not intended to be limiting, and exposure values using other techniques (e.g., using tone mapping) can be used. Once the exposure value is determined, it can be compared to one or more clamps determined using one or more virtual light meters 106 and / or screen-space buffer 108. In the event that the exposure value is below the upper exposure value clamp and / or above the lower exposure value clamp, the exposure value can be used to determine the final exposure value for the frame. For example, the exposure value from the conventional technique can be used directly, can be averaged with the exposure value determined using one or more virtual light meters 106 and / or the screen space buffer 108, and / or can be weighted relative to the exposure value determined using one or more virtual light meters 106 and / or the screen space buffer 108. In the event that the exposure value determined using the conventional technique is greater than the upper exposure value clamp and / or less than the lower exposure value clamp, the exposure value can be ignored or discarded for the particular frame. Thus, the final exposure value can be generated to be accurate for one or more particular objects of the frame, and can also be adjusted to find a balance between the one or more objects of the frame and other environmental features of the frame (such as the sky).

[0028] In some embodiments, exposure determiner 110 may use a temporal filter 112 to adjust the exposure value of a frame based on the exposure values of one or more previous frames. For example, the final exposure value of a current frame may be determined by weighting the determined exposure value of the frame to take into account one or more previous frames. In some embodiments, this may be recursive (e.g., a moving average), such that the exposure value of the current frame is weighted based on the exposure values of previous frames to determine the final value for the current frame. This final value may then be used to weight the exposure value of the next frame, and so on. In other embodiments, the exposure value of the current frame may be weighted based on one or more exposure values of one or more previous frames without recursion. In any example, when taking into account one or more previous frames to weight the exposure value of the current frame, the weight of the exposure value of the current frame may be less than the weight of the one or more previous frames to smooth the transition between exposure levels. As a non-limiting example, the exposure value of the previous frame may be weighted 95%, and the exposure value of the current frame may be weighted 5%. As another non-limiting example, the exposure value of the previous frame may have a weight of 90%, and the exposure value of the current frame may have a weight of 10%. However, in other embodiments, the weight of the current frame may be greater than the weight of one or more previous frames.

[0029] Thus, in an example where a virtual light meter 106 is instantiated per frame using 1,000 sample rays and the frame rate is 60 frames per second (fps), 60,000 sample rays may be cast per minute. The exposure values determined from each frame may be weighted over time, and the result may be a smooth exposure over time that does not jump from frame to frame, but rather transitions smoothly. Where a temporal filter 112 is used, the temporal filter 112 may be reset for a new scene or for some inter-application criteria that causes a reset. For example, when a user is navigating a virtual environment in a video game and arrives at a location in the game where a cutscene is to be played, the temporal filter 112 may be reset at the start of the cutscene so that the exposure values from the navigation of the virtual environment do not affect the exposure values of the cutscene.

[0030] The image renderer 114 can render an image or frame. For example, the frame can be rendered using ray tracing, can be rendered using other techniques such as rasterization, or a combination thereof. The exposure value of the rendered frame can be adjusted based on the exposure value determined from the exposure determiner 110. In some examples, the exposure value can be used to render the frame, or the exposure value can be used to adjust the frame after rendering. In the case where the automatic exposure system 100 is included in a cloud streaming environment—for example, Figure 5In an example content streaming system 500, rendered frames can be encoded and streamed to an end-user device (e.g., client device 504). In other embodiments, the auto-exposure system 100 can be executed by a local system, such as a laptop, desktop, tablet, game console, smartphone, etc. In such examples, rendering can be performed locally, or it can be performed remotely and the rendered frames can be updated locally using the auto-exposure system 100.

[0031] Now refer to Figure 3-4 , each block of the methods 300 and 400 described herein includes a computing process that can be performed using any combination of hardware, firmware, and / or software. For example, various functions can be performed by a processor executing instructions stored in a memory. The methods 300 and 400 can also be embodied as computer-usable instructions stored on a computer storage medium. The methods 300 and 400 can be provided by a standalone application, a service, or a hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few. In addition, as an example, with respect to Figure 1 Methods 300 and 400 are described for the automatic exposure system 100. However, these methods 300 and 400 may additionally or alternatively be performed by any one system or any combination of systems, including but not limited to those described herein.

[0032] Now refer to Figure 3 , Figure 3 A flowchart illustrating a method 300 for determining an exposure value using a virtual light meter according to some embodiments of the present disclosure is depicted. At block B302, the method 300 includes determining an object in a virtual environment. For example, the object determiner 104 may be used to determine a location of an object in the virtual environment.

[0033] At block B304, the method 300 includes instantiating a virtual light meter at a location corresponding to the object in the virtual environment. For example, one or more virtual light meters 106 can be instantiated in the virtual environment to measure incident light at a location corresponding to the object. The location corresponding to the object can include being in front of, above, beside, on the face of, touching, and / or at a distance (e.g., one inch, six inches, one foot, one meter, etc.) from the object in the virtual environment.

[0034] At block B306, method 300 includes sampling an incident light value at the location of the virtual light meter based on projecting light from the location of the virtual light meter. For example, sampling light 222 may be projected from sampling probe 220 of virtual light meter 106 in a sampling pattern, such as a hemispherical sampling pattern, to evaluate or measure the incident light value at the location. The incident light value may correspond to incident irradiance, incident radiometry, light intensity, and / or other light values.

[0035] At block B308, method 300 includes determining an exposure value based on the incident light value.For example, the incident light value may be used to determine the exposure value.

[0036] At block B310, method 300 includes rendering a frame representing the virtual environment based on the exposure value. For example, frame 208 may be rendered from the perspective of virtual camera 206. Frame 208 may be rendered using the exposure value, or the exposure value may be used to adjust the rendered frame.

[0037] refer to Figure 4 , Figure 4 A flow chart illustrating a method 400 for using calculated ray-traced data from a screen-space buffer as a virtual light meter for determining exposure values, according to some embodiments of the present disclosure, is depicted. At block B402, method 400 includes calculating incident light values for locations within a virtual environment. For example, rays can be cast from the perspective of virtual camera 206 to intersect objects, surfaces, subjects, and / or the like within the virtual environment. Ray tracing can then be performed to measure incident light values at the objects, surfaces, subjects, and / or the like within the virtual environment.

[0038] At block B404, the method 400 includes associating incident light values with pixels of the image in the screen-space buffer. For example, incident light values corresponding to objects, surfaces, etc. may be stored with corresponding pixels 230 of the screen-space buffer 108. For example, incident light values measured at intersection locations of rays 204 cast from pixels of the virtual camera 206 may be associated with corresponding pixels 230 in the screen-space buffer.

[0039] At block B406, method 400 includes determining a subset of pixels within a pixel grid located at the center of the image that correspond to one or more objects. For example, pixels 230 within pixel grid 232 may be analyzed to determine which pixels correspond to objects of interest—e.g., people, buildings, cars, animals, etc.—rather than the sky.

[0040] At block B408, method 400 includes determining a subset of incident light values corresponding to the subset of pixels from the screen-space buffer.For example, incident light values corresponding to pixel 230 from the subset of pixels may be determined.

[0041] At block B410, method 400 includes calculating an exposure value for the image based on a subset of incident light values. For example, the incident light values may be weighted, averaged, and / or otherwise processed to determine a final incident light value for the frame, and an exposure value may be determined based on the final incident light value. The final exposure value may be used to render the frame and / or adjust the exposure of the rendered frame.

[0042] Example content streaming system

[0043] Now refer to Figure 5 , Figure 5 is an example system diagram for a content streaming system 500 according to some embodiments of the present disclosure. Figure 5 Includes (one or more) application servers 502 (which may include Figure 6 ), client device(s) 504 (which may include components, features, and / or functionality similar to the example computing device 600 of Figure 6 ) and network(s) 506 (which may be similar to the network(s) described herein). In some embodiments of the present disclosure, system 500 may be implemented. Application sessions may correspond to game streaming applications (e.g., NVIDIA GeFORCE NOW), remote desktop applications, simulation applications (e.g., autonomous or semi-autonomous vehicle simulation), computer-aided design (CAD) applications, virtual reality (VR) and / or augmented reality (AR) streaming applications, deep learning applications, and / or other application types.

[0044] In system 500, for an application session, client device(s) 504 may only receive input data in response to input to input device(s), transmit the input data to application server(s) 502, receive encoded display data from application server(s) 502, and display the display data on display 524. Thus, more computationally intensive calculations and processing are offloaded to application server(s) 502 (e.g., rendering (specifically ray or path tracing) for the graphical output of the application session is performed by the GPU(s) of the game server(s) 502). In other words, the application session is streamed from application server(s) 502 to client device(s) 504, thereby reducing the graphics processing and rendering requirements of client device(s) 504.

[0045] For example, with respect to instantiation of an application session, client device 504 can display a frame of the application session on display 524 based on receiving display data from application server(s) 502. Client device 504 can receive input to one of the input device(s) and generate input data in response. Client device 504 can transmit the input data to application server 502 via communication interface 520 and via network 506 (e.g., the Internet), and application server 502 can receive the input data via communication interface 518. The CPU can receive the input data, process the input data, and transmit the data to the GPU, which causes the GPU to generate a rendering of the application session. For example, the input data can represent movement of a user's character in a game session of a gaming application, firing a weapon, reloading, passing a ball, turning a vehicle, etc. Rendering component 512 can render the application session (e.g., representing the results of the input data), and rendering capture component 514 can capture the rendering of the application session as display data (e.g., as image data capturing a rendered frame of the application session). Rendering of the application session may include ray or path-traced lighting and / or shading effects computed using one or more parallel processing units (such as GPUs), which may further utilize one or more specialized hardware accelerators or processing cores to execute the ray or path tracing techniques of one or more application servers 502. In some embodiments, one or more virtual machines (VMs)—e.g., including one or more virtual components such as vGPUs, vCPUs, etc.—may be used by application servers 502 to support the application session. Encoder 516 may then encode the display data to generate encoded display data, and the encoded display data may be transmitted to client device 504 via network 506 via communication interface 518. Client device 504 may receive the encoded display data via communication interface 520, and decoder 522 may decode the encoded display data to generate display data. Client device 504 may then display the display data via display 524.

[0046] Example computing device

[0047] Figure 6FIG6 is a block diagram of an example computing device 600 suitable for implementing some embodiments of the present disclosure. Computing device 600 may include an interconnect system 602 that directly or indirectly couples the following devices: memory 604, one or more central processing units (CPUs) 606, one or more graphics processing units (GPUs) 608, a communication interface 610, input / output (I / O) ports 612, I / O components 614, a power supply 616, one or more presentation components 618 (e.g., a display), and one or more logic units 620. In at least one embodiment, computing device 600 may include one or more virtual machines (VMs), and / or any of its components may include virtual components (e.g., virtual hardware components). For non-limiting examples, one or more GPUs 608 may include one or more vGPUs, one or more CPUs 606 may include one or more vCPUs, and / or one or more logic units 620 may include one or more virtual logic units. Thus, computing device 600 may include discrete components (eg, a complete GPU dedicated to computing device 600 ), virtual components (eg, a portion of a GPU dedicated to computing device 600 ), or a combination thereof.

[0048] although Figure 6 The various blocks of are shown as being connected via an interconnect system 602 having wires, but this is not intended to be limiting and is provided for clarity only. For example, in some embodiments, a presentation component 618 such as a display device may be considered an I / O component 614 (e.g., if the display is a touch screen). As another example, the CPU 606 and / or the GPU 608 may include memory (e.g., the memory 604 may represent a storage device in addition to the memory of the GPU 608, the CPU 606, and / or the other components). In other words, Figure 6 The term computing device is illustrative only. No distinction is made between categories such as "workstation," "server," "laptop," "desktop," "tablet," "client device," "mobile device," "handheld device," "game console," "electronic control unit (ECU)," "virtual reality system," and / or other device or system types, as all are considered within the Figure 6 within the range of computing devices.

[0049] Interconnect system 602 can represent one or more links or buses, such as an address bus, a data bus, a control bus, or a combination thereof. Interconnect system 602 can include one or more links or bus types, such as an industry standard architecture (ISA) bus, an extended industry standard architecture (EISA) bus, a video electronics standard association (VESA) bus, a peripheral component interconnect (PCI) bus, a peripheral component interconnect express (PCIe) bus, and / or another type of bus or link. In some embodiments, there is a direct connection between components. As an example, CPU 606 can be directly connected to memory 604. In addition, CPU 606 can be directly connected to GPU 608. In the case where there is a direct or point-to-point connection between components, interconnect system 602 can include a PCIe link to perform the connection. In these examples, it is not necessary to include a PCI bus in computing device 600.

[0050] Memory 604 may include any of a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by computing device 600. Computer-readable media can include volatile and non-volatile media and removable and non-removable media. By way of example and not limitation, computer-readable media can include computer storage media and communication media.

[0051] Computer storage media may include volatile and non-volatile media and / or removable and non-removable media implemented in any method or technology for storing information such as computer-readable instructions, data structures, program modules, and / or other data types. For example, memory 604 may store computer-readable instructions (e.g., representing programs and / or program elements, such as an operating system). Computer storage media may include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage devices, magnetic cassettes, magnetic tape, magnetic disk storage devices or other magnetic storage devices, or any other medium that can be used to store the desired information and that can be accessed by computing device 600. As used herein, computer storage media does not include signals themselves.

[0052] Computer storage media may embody computer-readable instructions, data structures, program modules, and / or other data types in a modulated data signal such as a carrier wave or other transmission mechanism, and include any information delivery media. The term "modulated data signal" may refer to a signal that has one or more of its characteristics set or changed in such a manner as to encode information into the signal. By way of example and not limitation, computer storage media may include wired media such as a wired network or a direct wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Any combination of the above should also be included within the scope of computer-readable media.

[0053] The CPU 606 can be configured to execute at least some of the computer-readable instructions to control one or more components of the computing device 600 to perform one or more of the methods and / or processes described herein. Each of the CPUs 606 can include one or more cores (e.g., one, two, four, eight, twenty-eight, seventy-two, etc.) capable of processing a large number of software threads simultaneously. The CPU 606 can include any type of processor and can include different types of processors, depending on the type of computing device 600 implemented (e.g., a processor with fewer cores for mobile devices and a processor with more cores for servers). For example, depending on the type of computing device 600, the processor can be an Advanced RISC (ARM) processor implemented using Reduced Instruction Set Computing (RISC) or an x86 processor implemented using Complex Instruction Set Computing (CISC). The computing device 600 can also include one or more CPUs 606 in addition to one or more microprocessors or supplementary coprocessors such as math coprocessors.

[0054] In addition to or in place of the CPU 606, the GPU 608 may also be configured to execute at least some computer-readable instructions to control one or more components of the computing device 600 to perform one or more of the methods and / or processes described herein. One or more GPUs 608 may be integrated GPUs (e.g., with one or more CPUs 606) and / or one or more GPUs 608 may be discrete GPUs. In embodiments, one or more GPUs 608 may be coprocessors for one or more CPUs 606. The computing device 600 may use the GPU 608 to render graphics (e.g., 3D graphics) or perform general-purpose computing. For example, the GPU 608 may be used for general-purpose computing on a GPU (GPGPU). The GPU 608 may include hundreds or thousands of cores capable of processing hundreds or thousands of software threads simultaneously. The GPU 608 may generate pixel data for outputting an image in response to a rendering command (e.g., a rendering command received from the CPU 606 via a host interface). The GPU 608 may include graphics memory, such as display memory, for storing pixel data or any other suitable data (e.g., GPGPU data). Display memory can be included as part of memory 604. GPU 608 can include two or more GPUs operating in parallel (e.g., via a link). The link can connect the GPUs directly (e.g., using NVLINK) or through a switch (e.g., using NVSwitch). When combined, each GPU 608 can generate pixel data or GPGPU data for different portions or different outputs (e.g., a first GPU for a first image and a second GPU for a second image). Each GPU can include its own memory or can share memory with other GPUs.

[0055] In addition to or in lieu of the CPU 606 and / or GPU 608, the logic unit 620 may be configured to execute at least some computer-readable instructions to control one or more components of the computing device 600 to perform one or more methods and / or processes described herein. In embodiments, the CPU 606, GPU 608, and / or logic unit 620 may perform any combination of methods, processes, and / or portions thereof, either separately or in conjunction. The one or more logic units 620 may be part of and / or integrated within the one or more CPUs 606 and / or the one or more GPUs 608, and / or the one or more logic units 620 may be discrete components of or otherwise external to the CPU 606 and / or GPU 608. In embodiments, the one or more logic units 620 may be processors of the one or more CPUs 606 and / or the one or more GPUs 608.

[0056] Examples of logic unit 620 include one or more processing cores and / or components thereof, such as a tensor core (TC), a tensor processing unit (TPU), a pixel vision core (PVC), a vision processing unit (VPU), a graphics processing cluster (GPC), a texture processing cluster (TPC), a streaming multiprocessor (SM), a tree traversal unit (TTU), an artificial intelligence accelerator (AIA), a deep learning accelerator (DLA), an arithmetic logic unit (ALU), an application-specific integrated circuit (ASIC), a floating point unit (FPU), an input / output (I / O) element, a peripheral component interconnect (PCI) or a peripheral component interconnect express (PCIe) element, etc.

[0057] The communication interface 610 may include one or more receivers, transmitters, and / or transceivers that enable the computing device 600 to communicate with other computing devices via an electronic communication network, including wired and / or wireless communications. The communication interface 610 may include components and functionality that enable communication over any of a number of different networks, such as wireless networks (e.g., Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee, etc.), wired networks (e.g., via Ethernet or InfiniBand communications), low-power wide-area networks (e.g., LoRaWAN, SigFox, etc.), and / or the Internet.

[0058] The I / O ports 612 can enable the computing device 600 to be logically coupled to other devices including I / O components 614, presentation components 618, and / or other components, some of which can be built into (e.g., integrated into) the computing device 600. Illustrative I / O components 614 include a microphone, a mouse, a keyboard, a joystick, a game pad, a game controller, a satellite dish, a browser, a printer, a wireless device, and the like. The I / O components 614 can provide a natural user interface (NUI) that processes user-generated air gestures, voice, or other physiological input. In some instances, the input can be transmitted to an appropriate network element for further processing. The NUI can implement any combination of voice recognition, stylus recognition, facial recognition, biometric recognition, gesture recognition on and adjacent to the screen, air gestures, head and eye tracking, and touch recognition associated with the display of the computing device 600 (as described in more detail below). The computing device 600 can include a depth camera such as a stereo camera system, an infrared camera system, an RGB camera system, touch screen technology, and combinations thereof for gesture detection and recognition. Additionally, computing device 600 may include an accelerometer or gyroscope to enable motion detection (e.g., as part of an inertial measurement unit (IMU)). In some examples, the output of the accelerometer or gyroscope may be used by computing device 600 to render immersive augmented or virtual reality.

[0059] The power supply 616 may include a hardwired power supply, a battery power supply, or a combination thereof. The power supply 616 may provide power to the computing device 600 to enable the components of the computing device 600 to operate.

[0060] The presentation component 618 may include a display (e.g., a monitor, a touch screen, a television screen, a head-up display (HUD), other display types, or a combination thereof), speakers, and / or other presentation components. The presentation component 618 may receive data from other components (e.g., the GPU 608, the CPU 606, etc.) and output the data (e.g., as images, video, sound, etc.).

[0061] Sample Data Center

[0062] Figure 7 An example data center 700 is shown, which may be used in at least one embodiment of the present disclosure. The data center 700 may include a data center infrastructure layer 710, a framework layer 720, a software layer 730, and an application layer 740.

[0063] like Figure 7 As shown, the data center infrastructure layer 710 may include a resource coordinator 712, grouped computing resources 714, and node computing resources ("node CRs") 716(1)-716(N), where "N" represents any complete positive integer. In at least one embodiment, the node CRs 716(1)-716(N) may include, but are not limited to, any number of central processing units ("CPUs") or other processors (including accelerators, field programmable gate arrays (FPGAs), graphics processors or graphics processing units (GPUs), etc.), memory devices (e.g., dynamic read-only memory), storage devices (e.g., solid-state drives or disk drives), network input / output ("NW I / O") devices, network switches, virtual machines ("VMs"), power modules and cooling modules, etc. In some embodiments, one or more of the node CRs 716(1)-716(N) may correspond to a server having one or more of the above-mentioned computing resources. Furthermore, in some embodiments, nodes CR 716 ( 1 )- 716 (N) may include one or more virtual components, such as vGPUs, vCPUs, etc., and / or one or more of nodes CR 716 ( 1 )- 716 (N) may correspond to virtual machines (VMs).

[0064] In at least one embodiment, the computing resources 714 of grouping can include the separate grouping (not shown) of the node CR716 housed in one or more racks, or can be housed in many racks (also not shown) in the data center of each geographical location. The separate grouping of the node CR716 in the computing resources 714 of grouping can include the computing, network, memory or storage resources that can be configured or assigned to the grouping supporting one or more workloads. In at least one embodiment, several node CR716 comprising CPU, GPU and / or other processors can be grouped in one or more racks to provide computing resources to support one or more workloads. One or more racks can also include any number of power modules, cooling modules and / or network switches in any combination.

[0065] Resource coordinator 722 may configure or otherwise control one or more nodes CR 716(1)-716(N) and / or grouped computing resources 714. In at least one embodiment, resource coordinator 722 may comprise a software design infrastructure ("SDI") management entity for data center 700. Resource coordinator 722 may comprise hardware, software, or some combination thereof.

[0066] In at least one embodiment, Figure 7 As shown, the framework layer 720 may include a job scheduler 732, a configuration manager 734, a resource manager 736, and a distributed file system 738. The framework layer 720 may include a framework that supports the software 732 of the software layer 730 and / or one or more applications 742 of the application layer 740. The software 732 or the application 742 may include web-based service software or applications, such as those provided by Amazon Web Services, Google Cloud, and Microsoft Azure. The framework layer 720 may be, but is not limited to, a free and open source software network application framework, such as Apache Spark, which can utilize the distributed file system 738 for large-scale data processing (e.g., "big data"). TM(hereinafter referred to as "Spark"). In at least one embodiment, the job scheduler 732 may include a Spark driver to facilitate scheduling of workloads supported by the various layers of the data center 700. In at least one embodiment, the configuration manager 734 may be capable of configuring the different layers, such as the software layer 730 and the framework layer 720 including Spark and a distributed file system 738 for supporting large-scale data processing. The resource manager 736 may be capable of managing the mapping or allocation of clustered or grouped computing resources to support the distributed file system 738 and the job scheduler 732. In at least one embodiment, the clustered or grouped computing resources may include the grouped computing resources 714 at the data center infrastructure layer 710. The resource manager 1036 may coordinate with the resource coordinator 712 to manage these mapped or allocated computing resources.

[0067] In at least one embodiment, the software 732 included in the software layer 730 may include software used by at least a portion of the node CRs 716(1)-716(N), the grouped computing resources 714, and / or the distributed file system 738 of the framework layer 720. The one or more types of software may include, but are not limited to, Internet web page search software, email virus scanning software, database software, and streaming video content software.

[0068] In at least one embodiment, the one or more applications 742 included in the application layer 740 may include one or more types of applications used by at least a portion of the node CRs 716(1)-716(N), the grouped computing resources 714, and / or the distributed file system 738 of the framework layer 720. The one or more types of applications may include, but are not limited to, any number of genomics applications, cognitive computing, and machine learning applications, including training or inference software, machine learning framework software (e.g., PyTorch, TensorFlow, Caffe, etc.), and / or other machine learning applications used in conjunction with one or more embodiments.

[0069] In at least one embodiment, any of the configuration manager 734, resource manager 736, and resource coordinator 712 can implement any number and type of self-modification actions based on any number and type of data acquired in any technically feasible manner. The self-modification actions can relieve the data center operator of the data center 700 from making potentially poor configuration decisions and can avoid underutilized and / or poorly performing portions of the data center.

[0070] The data center 700 may include tools, services, software, or other resources for training one or more machine learning models or using one or more machine learning models to predict or infer information according to one or more embodiments described herein. For example, a machine learning model may be trained by calculating weight parameters according to a neural network architecture using the software and computing resources described above with respect to the data center 700. In at least one embodiment, using the weight parameters calculated by one or more training techniques, the resources described above with respect to the data center 700 may be used to infer or predict information using a trained machine learning model corresponding to one or more neural networks, such as but not limited to those described herein.

[0071] In at least one embodiment, the data center 700 may use a CPU, an application-specific integrated circuit (ASIC), a GPU, an FPGA, and / or other hardware (or corresponding virtual computing resources) to perform training and / or reasoning using the aforementioned resources. In addition, one or more of the aforementioned software and / or hardware resources may be configured as a service to allow users to train or perform information reasoning, such as image recognition, speech recognition, or other artificial intelligence services.

[0072] Sample network environment

[0073] A network environment suitable for implementing embodiments of the present disclosure may include one or more client devices, servers, network attached storage (NAS), other backend devices, and / or other device types. The client devices, servers, and / or other device types (e.g., each device) may be configured to: Figure 6 The backend device 700 may be implemented on one or more instances of the computing device 600 of the embodiment of the present invention—for example, each device may include similar components, features and / or functions of the computing device 600. In addition, in the case of implementing a backend device (e.g., a server, NAS, etc.), the backend device may be included as part of the data center 700, examples of which are described herein with respect to FIG. Figure 7 Describe in more detail.

[0074] The components of the network environment can communicate with each other through the network, which can be wired, wireless, or both. The network can include multiple networks, or a network of networks. For example, the network can include one or more wide area networks (WANs), one or more local area networks (LANs), one or more public networks (e.g., the Internet and / or the Public Switched Telephone Network (PSTN)), and / or one or more private networks. In the case where the network includes a wireless telecommunications network, components such as base stations, communication towers, or even access points (and other components) can provide wireless connections.

[0075] Compatible network environments may include one or more peer-to-peer network environments (in which case the server may not be included in the network environment), and one or more client-server network environments (in which case one or more servers may be included in the network environment). In a peer-to-peer network environment, the functionality described herein with respect to the server may be implemented on any number of client devices.

[0076] In at least one embodiment, the network environment may include one or more cloud-based network environments, distributed computing environments, combinations thereof, and the like. The cloud-based network environment may include a framework layer, a job scheduler, a resource manager, and a distributed file system implemented on one or more servers, which may include one or more core network servers and / or edge servers. The framework layer may include a framework for supporting software at the software layer and / or one or more applications at the application layer. The software or application may include network-based service software or application programs, respectively. In an embodiment, one or more client devices may use network-based service software or application programs (e.g., by accessing the service software and / or application programs via one or more application programming interfaces (APIs)). The framework layer may be, but is not limited to, a type of free and open source software network application framework that may, for example, use a distributed file system for large-scale data processing (e.g., "big data").

[0077] A cloud-based network environment can provide cloud computing and / or cloud storage that performs any combination of the computing and / or data storage functions described herein (or one or more portions thereof). Any of these various functions can be distributed across multiple locations from a central or core server (e.g., one or more data centers that can be distributed across a state, region, country, global, etc.). If the connection to the user (e.g., client device) is relatively close to an edge server, the core server can assign at least a portion of the functionality to the edge server. A cloud-based network environment can be private (e.g., limited to a single organization), public (e.g., available to many organizations), and / or a combination thereof (e.g., a hybrid cloud environment).

[0078] Client devices may include Figure 6The client device 600 may be embodied as a personal computer (PC), a laptop computer, a mobile device, a smartphone, a tablet computer, a smartwatch, a wearable computer, a personal digital assistant (PDA), an MP3 player, a virtual reality head-mounted display, a global positioning system (GPS) or device, a video player, a camera, a surveillance device or system, a vehicle, a watercraft, an aircraft, a virtual machine, a drone, a robot, a handheld communication device, a hospital device, a gaming device or system, an entertainment system, an in-vehicle computer system, an embedded system controller, a remote control, an appliance, a consumer electronic device, a workstation, an edge device, any combination of these described devices, or any other suitable device.

[0079] The present disclosure can be described in the general context of machine-usable instructions or computer code executed by a computer or other machine such as a personal digital assistant or other handheld device, including computer-executable instructions such as program modules. Generally, program modules including routines, programs, objects, components, data structures, etc. refer to code that performs a specific task or implements a specific abstract data type. The present disclosure can be practiced in a variety of system configurations, including handheld devices, consumer electronics, general-purpose computers, more specialized computing devices, etc. The present disclosure can also be practiced in a distributed computing environment where tasks are performed by remote processing devices linked through a communication network.

[0080] As used herein, the statement "and / or" with respect to two or more elements should be interpreted as referring to only one element or combination of elements. For example, "element A, element B and / or element C" may include only element A, only element B, only element C, element A and element B, element A and element C, element B and element C, or elements A, B and C. In addition, "at least one of element A or element B" may include at least one of element A, at least one of element B, or at least one of element A and at least one of element B. Further, "at least one of element A and element B" may include at least one of element A, at least one of element B, or at least one of element A and at least one of element B.

[0081] The subject matter of the present disclosure is described in detail herein to meet statutory requirements. However, the description itself is not intended to limit the scope of the present disclosure. On the contrary, the inventors have contemplated that the claimed subject matter may also be embodied in other ways to include steps that are different from the steps described herein in conjunction with other current or future technologies, or combinations of similar steps. Moreover, although the terms "step" and / or "block" may be used herein to imply different elements of the method employed, these terms should not be interpreted as implying any particular order among or between the various steps disclosed herein, unless the order of the steps is explicitly described.

Claims

1. A method comprising: Casting one or more rays from the virtual camera into the virtual environment; determining one or more objects in the virtual environment based at least in part on the one or more intersection points of the one or more rays; instantiating one or more virtual light meters at one or more locations in the virtual environment corresponding to the one or more objects; sampling incident light at the one or more locations of the one or more virtual light meters based at least in part on executing a ray tracing algorithm to cast a plurality of rays from the one or more locations of the one or more virtual light meters; determining an exposure value based at least in part on the incident light; and A frame representing the virtual environment is rendered based at least in part on the exposure value. The method of claim 1 , wherein the projecting of the plurality of light rays is in a sampling pattern. The method of claim 2 , wherein the sampling pattern corresponds to a hemisphere. 4 . The method of claim 3 , wherein the bottom of the hemisphere is positioned along one of the following: parallel to a ground plane in the virtual environment or perpendicular to a direction of a ray cast from a virtual camera that intersects the object. The method of claim 1 , wherein the one or more locations are one of above or in front of the one or more objects. The method of claim 1 , wherein rendering the frame is from the perspective of a virtual camera in the virtual environment.

7. The method according to claim 6, wherein: The method is performed in a cloud computing environment.

8. The method of claim 1 , wherein determining the one or more objects in the virtual environment comprises: An object position of the object is determined from application data and the exposure value is calculated at least partially based on the object.

9. A system comprising: one or more processors; and one or more memory devices having stored thereon instructions that, when executed using the one or more processors, cause the one or more processors to perform operations comprising: Casting one or more rays from the virtual camera into the virtual environment; determining one or more objects in the virtual environment based at least in part on the one or more intersection points of the one or more rays; instantiating one or more virtual light meters at one or more locations in the virtual environment corresponding to the one or more objects; sampling incident irradiance at one or more locations of the one or more virtual light meters based at least in part on executing a ray tracing algorithm at the one or more locations; determining an exposure value based at least in part on the incident irradiance at the one or more locations; and A frame representing the virtual environment from the perspective of the virtual camera is rendered based at least in part on the exposure value.

10. The system of claim 9, wherein the ray tracing algorithm comprises: For each virtual light meter, a plurality of light rays are projected from a corresponding position of the virtual light meter.

11. The system of claim 10, wherein the rays are projected from the corresponding positions and around a sampling hemisphere.

12. The system of claim 9, wherein the one or more positions include at least one of a first position above the one or more objects, a second position adjacent to the one or more objects, or a third position in front of the faces of the one or more objects.

13. A method comprising: Calculate the incident light value for a position within the virtual environment; Associating, in a screen-space buffer, the incident light value with a pixel of an image corresponding to the position and the viewpoint of a virtual camera in the virtual environment; determining a subset of the pixels corresponding to one or more objects within a pixel grid centered in the image; determining, from the screen-space buffer, a subset of the incident light values corresponding to the subset of pixels; as well as An exposure value for the image is calculated based at least in part on the subset of incident light values. The method of claim 13 , wherein calculating the incident light value is performed using ray tracing. The method of claim 13 , wherein the screen-space buffer corresponds to an indirect diffuse light buffer.

16. The method of claim 13, wherein determining the subset of pixels comprises: determining a set of pixels corresponding to the pixel grid; and filtering out pixels corresponding to the sky of the virtual environment from the pixel set.

17. The method of claim 13, wherein the pixel grid comprises a rectangular grid including each center pixel of the image, the rectangular grid including sides no greater than 24 pixels in length.

18. The method of claim 13, further comprising generating the image based at least in part on the exposure value.

19. The method of claim 13, wherein the incident light values are averaged and the exposure value is calculated based at least in part on the averaged incident light values.

20. The method of claim 13, wherein the position within the virtual environment is determined at least in part based on casting a ray from the virtual camera into the virtual environment.

Citation Information

Patent Citations

  • Method and apparatus for computing indirect lighting for global illumination rendering in 3-D computer graphics

    US8223148B1

  • Method and apparatus for irradiance computation in 3-D computer graphics

    US8314797B1