Depth ray layer for reducing visual noise
The depth ray shader replaces the pixel value of the three-dimensional scene in 3D applications, solving the problem of insufficient contrast between the foreground object and the background object, realizing the reduction of visual noise and improving contrast, and maintaining the user's perception of the shape and depth of the background object.
Patent Information
- Application Number
- CN202411963371.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2018-07-23
- Filing Date
- 2019-06-19
- Publication Date
- 2025-04-18
AI Technical Summary
In 3D applications, the contrast between the foreground object and the background object is insufficient, especially when the user moves, resulting in an increase in visual noise and affecting the user experience.
Using a depth ray shader, by receiving the depth map and defining the color gradient, the depth value is assigned to each sequential step in the color gradient, replacing the pixel values of the selected portion of the three-dimensional scene to reduce visual noise and improve contrast.
It effectively reduces visual noise, improves the contrast between the foreground object and the background object, maintains the shape and depth of the virtual object, and has low computing cost, and does not interfere with the user's 3D experience.
Smart Images

Figure CN119850806A_ABST
Abstract
Description
[0001] This invention patent application is a divisional application of the invention patent application with international application number PCT / US2019 / 037845, international application date June 19, 2019, application number 201980049112.7 entering the Chinese national phase, and name “Depth Ray Layer for Reducing Visual Noise”. Background Art
[0002] When designing application graphics and user interfaces, software developers strive to ensure that the selected pixel colors, textures, and shading provide adequate contrast between foreground objects and background objects. When there is a low level of contrast between foreground objects and background objects (such as when white text is placed on a beige background), the foreground objects may become difficult to see. In addition, some developers strive to comply with regulatory anti-discrimination guidelines that define set color contrast requirements, such as to ensure that people with visual impairments (e.g., color blindness) have equal access to services. For this reason, many computer operating systems provide adjustable contrast settings that allow users to selectively increase the contrast level between foreground objects and background objects displayed on a computer screen.
[0003] Because foreground and background objects may frequently shift relative to each other in 3D applications, the challenges associated with ensuring adequate contrast between foreground and background objects increase significantly for software developers working in the rapidly emerging 3D virtual reality and / or augmented reality technology industries. BRIEF DESCRIPTION OF THE DRAWINGS
[0004] Figure 1 An example graphics system is illustrated that selectively replaces portions of a three-dimensional scene rendered by a processor with pixel values that reduce background noise while also preserving depth and shape of objects in the three-dimensional scene.
[0005] Figure 2 Illustrated are images of a processor rendered scene before and after application of an example depth ray layer.
[0006] Figure 3 Another example depth ray layer applied to a processor rendered three dimensional scene is illustrated.
[0007] Figure 4 Still another example depth ray layer applied to a processor rendered three dimensional scene is illustrated.
[0008] Figure 5 Example operations for applying a depth ray layer to reduce visual noise in a processor-rendered three-dimensional scene are illustrated.
[0009] Figure 6An example schematic diagram of a processing device suitable for implementing aspects of the disclosed technology is illustrated. Summary of the invention
[0010] A system for reducing visual noise in a three-dimensional scene includes a depth ray shader that receives a depth map that specifies a depth associated with each pixel in the three-dimensional scene and assigns depth values to colors that span a color gradient between a first pixel value and a second pixel value. In one embodiment, each sequential step in the color gradient between the first pixel value and the second pixel is assigned to a corresponding depth that increases in magnitude relative to a reference point. The depth ray shader is further executable to provide instructions executable by a graphics engine to replace a selected portion of the three-dimensional scene with a depth ray layer that changes each pixel in the selected portion to take a pixel value defined within the color gradient to correspond to a depth of a pixel included within the color gradient that corresponds to the depth associated with the pixel by the depth map.
[0011] This summary is provided to introduce a selection of concepts that are further described below in the detailed description in a simplified form. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. These and various other features and advantages will become apparent by reading the following detailed description. DETAILED DESCRIPTION
[0012] In 3D applications, objects are usually designed to appear to float in space relative to other objects and be fixed in the same coordinate system as the user. When the user moves around, the relative positions of the foreground object and the background object are displaced relative to each other based on the position of the user. For example, the user can walk from left to right in front of the foreground object, or even walk around the foreground object. During this movement, the background object is displaced in position relative to the foreground object consistent with the user's line of sight. As a result, the alignment between the background object and the foreground object may change continuously. This often occurring, user-dependent change in the alignment between the foreground object and the background object increases the difficulty in ensuring continuous sufficient contrast throughout the entire 3D experience of the user. As used herein, "sufficient contrast" refers to a contrast ratio (contrast ratio) that satisfies a defined threshold. In some jurisdictions, other regulatory guidelines provide a minimum contrast ratio that may depend on the size of the text or other graphics on the screen.
[0013] A common approach for reducing background noise (and thereby increasing contrast) is to use various visual effects to blur the background areas of the scene, which may interfere with the user's ability to interpret foreground objects. For example, the background area of the scene may be blurred to reduce texture, and text may then be presented on top of the blurred area. Blurring may be computationally expensive to implement, and therefore may not be feasible in all applications. Furthermore, blurring in 3D environments is also known to cause annoyance to some users.
[0014] Yet another approach for ensuring adequate foreground and background contrast is to simply "erase" background objects in areas that overlap or are adjacent to foreground objects. For example, a floating white text may be presented against a solid black rectangle in the middle of a scene, compared to an isolated floating text directly adjacent to (with edges touching) pixels representing the background of the scene. However, in virtual reality applications, sudden disruptions in 3D continuity are known to cause user discomfort, including disorientation, dizziness, and in some cases motion sickness. For these reasons, it is desirable to provide a solution that ensures adequate contrast while still preserving the user's general perception of the shape of background objects and the depth associated with those objects.
[0015] The technology disclosed herein provides a graphics technique that can be implemented to selectively reduce noise (and thereby improve contrast) by changing selected pixel values to replace the color and texture of background objects with depth-based pixel values selected from a sliding-scale color gradient (referred to herein as a "depth ray layer"). According to one embodiment, the depth ray layer is selectively drawn during an immersive 3D experience to control the color and contrast of underlying (e.g., background) objects. The depth ray layer defines a smooth color ramp, where each step along the ramp is assigned to a corresponding increasing or decreasing distance from the user. For example, increasingly darker shades of blue can be assigned to increasingly greater distances from the user.
[0016] The application of the depth ray layer has the effect of masking defined areas of the scene to remove the original background color and texture. The original pixel values are replaced with values from a smooth color ramp that are selected based on the depth of the corresponding scene object relative to the user. This technique preserves the shape of virtual objects and the apparent depth of these virtual objects relative to the user, while also reducing noise at a low computational cost and without causing user disorientation or disrupting the user's 3D experience. As further explained below, the depth ray layer can be applied to mask the background of the entire 3D scene or selectively mask a portion of the 3D scene (such as a portion behind foreground text).
[0017] Figure 1 An example graphics system 100 is illustrated that selectively replaces portions of a three-dimensional scene rendered by a processor with pixel values that reduce background noise while also preserving the depth and shape of objects in the three-dimensional scene. As used herein, "noise" refers to low levels of contrast, such as when foreground and background colors are similar and the ratio of the two exceeds a predefined threshold. The graphics system 100 is incorporated within a processing device 102 that includes a memory 110 that stores one or more applications that can be executed by a central processing unit (CPU) 112. In addition to the CPU 112, the processing device 102 may include a graphics processing unit (GPU) 108 that executes rendering instructions from various applications to render graphics within the field of view of a user 106 (e.g., either as pixels on a screen or projected into a three-dimensional space).
[0018] exist Figure 1 , the memory 110 is shown as including two applications - a depth ray shader 104 and a VR / AR application 114. As used herein, a "VR / AR" application refers to any virtual reality or augmented reality application that provides a 3D experience to a user. Typically, the depth ray shader 104 can be executed to selectively change pixel values to improve the visual contrast of graphics generated by the VR / AR application 114 while retaining the shapes and relative depths associated with various graphical objects. Although the operation of the depth ray shader 104 is primarily discussed with respect to noise reduction in 3D applications (e.g., where objects are frequently shown as shifted relative to each other), it should be understood that the same or similar techniques may be similarly implemented with equal effectiveness to reduce noise in 2D applications. Thus, in some implementations, the VR / AR application 114 is a 2D application.
[0019] Although the processing device 102 may take various forms (e.g., a mobile device, a desktop computer, a tablet) in different implementations, in Figure 1 , the processing device 102 is shown as a head mounted device (HMD) that uses one or more optical systems to project virtual content within the field of view of the user 106. In this implementation, the HMD device is configured for operation in one or more mixed reality usage modes, such as a virtual reality mode (in which the user sees only the virtual surroundings) or an augmented reality mode (in which the user sees one or more projected virtual objects next to the real world surroundings).
[0020] In various implementations, the depth ray shader 104 may be implemented in different ways, such as in the form of a plugin for the VR / AR application 114, an operating system tool, or as part of an application programming interface (API) of the GPU 108 (e.g., within the GPU API 130).
[0021] When selectively invoked by the VR / AR application 114, the depth ray shader 104 provides instructions to the GPU API 130 to render a depth ray layer 116 to modify a subset of pixels within a graphics scene (hereinafter referred to as "scene 118") that are being actively rendered by the VR / AR application 114. The depth ray layer 116 can be understood as a mask that is applied to modify the values of a subset of scene pixels to improve contrast in associated areas.
[0022] In one embodiment, depth ray layer 116 is applied to discrete pixel regions of scene 118, such as Figure 1 The generally rectangular region shown (having curvature to indicate the apparent three-dimensional presence of the user within the scene 118) may include one or more background objects within the scene 118 and / or a portion of the scene 118 that appears adjacent to a foreground object (e.g., text) that spans the scene 118 based on the current line of sight of the user 106. In still other implementations, the depth ray layer 116 is applied to all pixels of the scene 118, rather than to a subset of the scene 118. The depth ray layer 116 may be—as in Figure 1 As in - defined as selectively excluding pixels defined as representing foreground object(s) (e.g., by excluding the white text shown in scene 118).
[0023] In one embodiment, the VR / AR application 114 selectively calls the depth ray shader 104 to render the depth ray layer 116 in response to satisfaction of predetermined scene criteria, such as when certain menu options are being presented or when there is a possibility that user movement (e.g., looking around) may cause foreground and background objects with insufficient contrast to move into alignment with each other.
[0024] The depth ray shader 104 has access to a depth map 128 that defines the z-direction depth of various objects within the scene 118 relative to the user 106. Figure 1 , the depth ray shader 104 retrieves the depth map 128 from the depth buffer 126 managed by the GPU API 130. The depth ray shader 104 uses the depth map 128 to select new pixel values for a predefined set of pixels associated with the depth ray layer 116. Repurposing the depth buffer 126 in this manner allows the depth ray layer 116 to be implemented with minimal processing cost.
[0025] The depth ray shader 104 defines a smooth color ramp 120, also referred to herein as a color gradient. Figure 1 , but the smooth color ramp 120 may include one or more hues (colors) that vary from one another in at least one of a tint, tone, and shade. For example, the smooth color ramp 120 may include a range of blue pixel values ranging from a light blue shade to a dark blue shade. Figure 1 As shown, the smooth color ramp 120 extends between a first pixel value 122 and a second pixel value 124, and has a smooth ramp of variable pixel values (e.g., varying lightness, hue, and / or shade) therebetween. The depth ray shader 104 assigns depth values of increasing magnitude to each sequential step in the smooth color ramp 120. For example, a particular light shade pixel value may be assigned to an object depth of one meter from the user 106, while a particular medium shade pixel value is assigned to an object depth of four meters from the user 106, and a particular dark shade pixel value is assigned to an object depth of ten meters from the user 106.
[0026] In different implementations, the values of the smooth color ramp 120 may be selected in different ways. In one embodiment, the first pixel value 122 is set to correspond to the shallowest depth value currently in the depth map 128 (e.g., the closest object), and the second pixel value 124 is set to correspond to the deepest depth value currently represented in the depth map 128 (e.g., the farthest object). The actual chromaticity (s) included in the color gradient may be similarly predefined. In one embodiment, the color (s) included in the smooth color ramp 120 are selected based on the color (s) of the foreground object (s) located adjacent to the pixel (e.g., a predefined subset of pixels) of the depth ray layer 116 (such as the pixel adjacent to the depth ray layer 116 and / or the foreground object overlapping such pixel along the user's line of sight). In another implementation, the foreground object is selected based on the personalized preferences of the user 106, and the color (s) included in the smooth color ramp 120 are selected based on the preferences defined in the user's identity profile (profile) for the VR / AR application 114.
[0027] Using the smooth color ramp 120 and a depth map 128 associated with the scene 118, the depth ray shader 104 identifies pixel values from the smooth color ramp 120 corresponding to each pixel represented by the depth map 128 that is also included in a predefined subset of pixels to be affected by application of the depth ray layer 116. The predefined subset of pixels is hereinafter referred to as a predefined depth ray region.
[0028] For each pixel in the predefined depth ray region, the depth ray shader 104 selectively changes the pixel value (e.g., as initially defined by the VR / AR application 114) to take on a value included within the smooth color ramp 120 that is assigned to the z-depth (as defined by the depth map 128) of the corresponding pixel in the scene 118. For example, the predefined depth ray region may be a discrete pixel region that includes one or more background objects of the scene 118. Of these objects, those objects that are defined to appear to be at a closer proximity to the user 106 may have pixel values that represent dark tones similar to the dark tones represented by the first pixel value 122, while those pixels that are defined to appear to be at a farther proximity to the user 106 may have pixel values that represent dark tones similar to the dark tones represented by the second pixel value 124.
[0029] In some applications (such as Figure 2-3 ), the predefined depth ray region includes a discrete pixel region (e.g., a region inside a closed parameter, such as a rectangular pixel region), but excludes a selected subset of pixels associated with a defined foreground object within the boundaries of the discrete pixel region. Similarly, as with respect to Figure 4 As shown in more detail, in other implementations, the depth ray layer 116 may include discrete pixel regions that are partially or completely within the boundaries of one or more foreground objects, such as to give the appearance that the foreground objects are transparent.
[0030] In each use case, the depth ray layer 116 uniformly reduces or eliminates visual noise that would otherwise be apparent in corresponding pixels of the scene 118. In effect, the depth ray layer 116 removes scene texture, but preserves the shape and depth of scene objects, thereby ensuring adequate contrast between different objects enclosed within the depth ray layer 116 and / or between the depth ray layer 116 and foreground objects excluded from the depth ray layer 116.
[0031] Figure 2 Images (202 and 204) of a processor-rendered three-dimensional scene (hereinafter "scene 200") are illustrated before and after application of an example depth ray layer 210. Scene 200 includes several objects designed to appear at different depths from a user. The before image 202 of scene 200 illustrates white text 208 being rendered in the foreground of the scene next to various background objects (e.g., the foreground text and background objects are overlapping along the user's line of sight). Here, various textures in the background of the scene create visual noise (areas with low contrast to the foreground text) that make portions of the white text difficult to read.
[0032] A subsequent image 204 of the scene 200 illustrates the reduction in noise achieved by applying the depth ray layer 210 to discrete pixel regions of the scene 200. Various properties of the depth ray layer 210 may be related to Figure 1 The properties of the foreground text are the same or similar to those described above. Here, the discrete pixel region surrounded by the depth ray layer 210 is a generally rectangular region extending horizontally across the center of the user's field of view. The discrete pixel region has a boundary (e.g., shown by the white line delimiting the depth ray layer 210), and all pixels inside the boundary except those corresponding to the foreground text are included in the depth ray layer 210. Thus, the foreground text is excluded from the depth ray layer 210 and is not affected by it.
[0033] As about Figure 1 As described, the depth ray layer 210 may be generated by a depth ray shader that defines a color gradient and assigns a different depth (z value coordinate) relative to the user to each incremental step in the color gradient. In one embodiment, the depth ray shader retrieves depth information associated with each pixel of the scene 200, such as by accessing data in an existing depth buffer associated with a virtual reality application that generates the scene 200. The depth ray generator changes each pixel predefined to be included in the depth ray layer 210 to take a pixel value corresponding to the retrieved pixel depth (z value) selected from the defined color gradient.
[0034] In the example depth ray layer 210, shallower depths (smaller z-values) are associated with whiter shades, while increasing darkness of shades corresponds to distances of increasing depth. Due to the application of the depth ray layer 210, the user enjoys an uninterrupted awareness of the shape and distance of each object in the scene 200, while also being provided with a guaranteed minimum contrast that makes foreground objects (such as white text) easy to decipher.
[0035] because Figure 2 is depicted in black and white, so the reduction in noise illustrated by the subsequent image 204 is not as visually prominent as in other real-world applications of the technique, where the color gradient scale of the depth ray layer 210 may be selected to ensure a sufficiently high minimum level of contrast with the foreground text. For example, if the foreground text is white, and the color gradient is a range of blues (from light blue to dark blue), the lightest blue in the depth ray layer 210 may be selected to provide a sufficient degree of contrast with the foreground white text 208. While the depth ray layer 210 may be designed to ensure any minimum contrast ratio, one embodiment of the technique implements a minimum contrast ratio of 4.5 to 1 (e.g., between the foreground text and the colors in the depth ray layer 210).
[0036] Figure 3 The explanation is applied to include Figure 2 Another depth ray layer 310 of a processor rendered three-dimensional scene ("scene 300") having features identical or similar to those of scene 200 is shown. Figure 3 In the depth ray layer 310, according to Figure 2 The depth ray layer 210 of FIG. 310 maps the color gradient to various depths in the opposite manner as shown in FIG. 310 . Here, dark tones with decreasing darkness correspond to distances with increasing depth. Thus, shallower depths (smaller z values) are associated with darker dark tones, and deeper depths are associated with shallower dark tones. Other aspects of the depth ray layer 310 that are not described in detail may be similar to those described with respect to FIG. Figure 1 and 2 The aspects described are the same or similar.
[0037] Figure 4 Yet another example depth ray layer 410 is illustrated being applied to a three-dimensional scene ("scene 400") rendered by a processor. Scene 400 includes several selectable icons that appear in the foreground in front of a puppy avatar 406. As shown, one of these selectable icons, icon 408, is designed to appear semi-transparent when aligned with puppy avatar 406. Depth ray layer 410 changes the pixel values within the boundaries of icon 408 to illustrate the shape of puppy avatar 406 while mitigating visual noise. As a result, the outline of puppy avatar 406 is visible in the area within icon 408. Figure 2-3 Compared to the example depth ray layer in , depth ray layer 410 affects pixels exclusively within the boundaries of foreground objects. In this example, depth ray layer 410 includes two pixel values—one pixel value corresponding to the depth associated with puppy avatar 406, and another pixel value corresponding to the depth associated with the depth of the scene behind puppy avatar 406.
[0038] Figure 5 Illustrated are example operations 500 for applying a depth ray layer to reduce visual noise within a processor rendered three dimensional scene. A trigger detection operation 502 determines whether current scene conditions satisfy predetermined criteria for triggering application of a depth ray layer.
[0039] In different embodiments, the predefined criteria may take different forms, and the depth ray layer may be applied in response to satisfaction of a range of defined conditions. In one embodiment, the predefined criteria are deemed satisfied when a user provides input requesting that a menu option (e.g., text and / or icon) be presented in the foreground of a scene. In another embodiment, the predefined criteria are satisfied when there is a threshold probability of insufficient contrast occurring (such as when a scene includes background objects and foreground objects of similar colors that could potentially form an alignment if the user takes a particular action). In yet another embodiment, the predefined criteria are satisfied when a user provides input to intentionally trigger the application of a depth ray layer (such as by selecting a "high contrast" option from an application menu).
[0040] If the trigger detection operation 502 determines that the current scene conditions do not meet the predefined criteria for triggering the application of the depth ray layer, then a wait operation 504 is entered until the predefined criteria are met.
[0041] Once the trigger detection operation 502 determines that the current scene conditions do meet the predefined criteria, a depth map retrieval operation 506 retrieves a depth map corresponding to the three-dimensional scene. The depth map specifies the depth associated with each pixel in the predefined subset affected by the depth ray layer. In one embodiment, the depth map retrieval operation 506 retrieves the depth map from an already existing depth buffer associated with an application that actively generates processor executable instructions for rendering in the three-dimensional scene.
[0042] A definition operation 508 defines a color gradient that includes a smooth ramp of shades, tints, and / or tones between a first color and a second color. In one embodiment, the color gradient includes different shades, tones, and tints of the same chromaticity. For example, the color gradient defines a range of red that ranges from light to dark or vice versa.
[0043] The depth assignment operation 510 assigns depths of increasing magnitude to each sequential step represented by the color gradient. In one embodiment, the depth map assignment operation 510 is performed by scaling the range of depth values included in the depth map to encompass the entire range of pixel values represented by the color gradient. For example, a first end of the color gradient may be defined to correspond to the shallowest (minimum Z value) depth included in the depth map, while a second end of the color gradient may be defined to correspond to the deepest (maximum Z value) depth included in the depth map.
[0044] Pixel replacement operation 512 provides the graphics engine with one or more instructions executable to selectively replace each pixel in a predefined subset of scene pixels with a new pixel value selected from the color gradient, which new pixel value is also assigned (via assignment operation 510) to the depth map to the same depth associated with the corresponding scene pixel.
[0045] Figure 6 An example schematic diagram of a processing device 600 suitable for implementing various aspects of the disclosed technology is illustrated. The processing device 600 includes one or more processing units 602, a memory 604, a display 606, and other interfaces 608 (e.g., buttons). The memory 604 generally includes both volatile memory (e.g., RAM) and non-volatile memory (e.g., flash memory). An operating system 610 (such as Microsoft Operating system, Microsoft The Microsoft Windows Phone operating system or a specific operating system designed for a gaming device) resides in the memory 604 and is executed by the processor unit(s) 602, but it should be understood that other operating systems may be employed.
[0046] One or more applications 612 (such as Figure 1 The processing device 600 includes a depth ray shader 104 (e.g., a depth ray shader 104) loaded in the memory 604 and executed by the processing unit(s) 602 on the operating system 610. The application 612 can receive input from various input devices such as a microphone 634, an input accessory 635 (e.g., a keypad, a mouse, a stylus, a touchpad, a game pad, a racing wheel, a joystick), or various environmental sensors 636 such as one or more cameras, proximity sensors, etc. The processing device 600 includes a projection optics 632 for projecting virtual objects of the application 612 when operating in a VR or AR device mode. The processing device 600 further includes a power supply 616, which is powered by one or more batteries or other power sources and provides power to other components of the processing device 600. The power supply 616 can also be connected to an external power source (not shown) that overrides or recharges the internal battery or other power source.
[0047] The processing device 600 includes one or more communication transceivers 630 and antennas 638 to provide network connectivity (e.g., mobile phone networks, Bluetooth ). The processing device 600 may also include various other components, such as a positioning system (e.g., a global positioning satellite transceiver), one or more accelerometers, one or more cameras, an audio interface (e.g., a microphone 634, an audio amplifier and speaker, and / or an audio jack), and a storage device 628. Other configurations may also be used.
[0048] In an example implementation, the mobile operating system, various applications (e.g., a deep ray shader), and other modules and services may have hardware and / or software embodied by instructions stored in the memory 604 and / or storage device 628 and processed by the processor unit(s) 602. The memory 604 may be the memory of a host device or an accessory coupled to the host.
[0049] The processing device 600 may include various tangible computer-readable storage media and intangible computer-readable communication signals. Tangible computer-readable storage may be embodied by any available media that can be accessed by the processing device 600, and includes both volatile and non-volatile storage media, removable and non-removable storage media. Tangible computer-readable storage media do not include intangible and transient communication signals, but include volatile and non-volatile, removable and non-removable storage media implemented in any method or technology for storing information such as computer-readable instructions, data structures, program modules or other data. Tangible computer-readable media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical disk storage, cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other tangible media that can be used to store the desired information and can be accessed by the processing device 600. In contrast to tangible computer-readable storage media, intangible computer-readable communication signals may embody computer-readable instructions, data structures, program modules or other data residing in a modulated data signal such as a carrier wave or other signal transmission mechanism. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, intangible communication signals include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.
[0050] Some embodiments may include articles of manufacture. Articles of manufacture may include tangible storage media for storing logic. Examples of storage media may include one or more types of processor-readable storage media capable of storing electronic data, including volatile or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writable or rewritable memory, etc. Examples of logic may include various software elements, such as software components, programs, applications, computer programs, applications, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, operating segments, methods, processes, software interfaces, application program interfaces (APIs), instruction sets, computing codes, computer codes, code segments, computer code segments, text, values, symbols, or any combination thereof. For example, in one implementation, an article of manufacture may store executable computer program instructions that, when executed by a computer, cause the computer to perform methods and / or operations according to the various implementations described. Executable computer program instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, etc. Executable computer program instructions can be implemented according to a predefined computer language, manner or syntax for instructing a computer to perform a specific operation segment. These instructions can be implemented using any suitable high-level, low-level, object-oriented, visual, compiled, and / or interpreted programming language.
[0051] An example system disclosed herein includes a depth ray shader that receives a depth map defining a depth associated with each of a plurality of pixels forming a three-dimensional scene, and defines a color gradient between a first pixel value and a second pixel value, wherein each sequential step in the color gradient between the first pixel value and the second pixel value is associated with a corresponding depth of increasing magnitude. The depth ray shader provides instructions executable by a graphics engine to apply a depth ray layer to a selected portion of the three-dimensional scene to change each pixel in the selected portion of the three-dimensional scene to take a pixel value selected from the color gradient corresponding to the depth associated with the pixel by the depth map.
[0052] In another example system according to any of the foregoing systems, the selected portion of the three-dimensional scene is bounded by a perimeter that surrounds at least one foreground object defined by pixels that are within the perimeter and excluded from the depth ray layer. In yet another example system according to any of the foregoing systems, the depth ray layer modifies pixel values of at least one background object of the three-dimensional scene.
[0053] In a further example system of any of the foregoing systems, the selected portion of the three dimensional scene includes a transparent foreground object, and the depth ray layer alters pixel values within the boundaries of the transparent foreground object to illustrate a shape of the at least one background object.
[0054] In yet another example system of any of the foregoing systems, the depth ray shader defines a color gradient based on pixel values of at least one foreground object in a selected portion of the three-dimensional scene such that each value of the defined color gradient provides at least a threshold contrast ratio with the at least one foreground object.
[0055] In yet another example system of any of the previous systems, a depth ray shader defines a color gradient based on a user selectable color preference.
[0056] In yet a further example system of any of the foregoing systems, the color gradient defines a range of pixel values of the same chromaticity that vary from one another in at least one of tints, tones, and shades.
[0057] An example method disclosed herein includes: receiving a depth map defining a depth associated with each of a plurality of pixels forming a three-dimensional scene; and defining a color gradient between a first pixel value and a second pixel value such that each sequential step in the color gradient between the first pixel value and the second pixel value is assigned to a corresponding depth of increasing magnitude. The method further includes providing instructions executable by a graphics engine to apply a depth ray layer to a selected portion of the three-dimensional scene to change each pixel in the selected portion of the three-dimensional scene to take a pixel value included in the color gradient corresponding to the depth associated with the pixel by the depth map.
[0058] In another example method of any of the foregoing methods, the selected portion of the three-dimensional scene is bounded by a perimeter that surrounds at least one foreground object, and the foreground object is defined by pixels inside the perimeter that are excluded from the depth ray layer.
[0059] In yet another example method of any of the foregoing methods, the depth ray layer modifies a pixel value of at least one background object of the three-dimensional scene.
[0060] In yet another example method of any of the foregoing methods, the selected portion of the three-dimensional scene includes a transparent foreground object, and the depth ray layer alters pixel values within the boundaries of the transparent foreground object to illustrate a shape of the at least one background object.
[0061] In yet another example method of any of the foregoing methods, defining the color gradient further includes defining the color gradient based on pixel values of at least one foreground object in the selected portion of the three-dimensional scene such that each value of the defined color gradient provides at least a threshold contrast ratio with the at least one foreground object.
[0062] In yet another example method of any of the foregoing methods, the color gradient is defined based on user-selectable color preferences.
[0063] In yet another example method of any of the foregoing methods, the color gradient includes a range of pixel values of the same chromaticity that vary from one another in at least one of tints, tones, and shades.
[0064] An example computer process disclosed herein includes: receiving a depth map defining a depth associated with each of a plurality of pixels forming a three-dimensional scene; and defining a color gradient between a first pixel value and a second pixel value such that each sequential step in the color gradient between the first pixel value and the second pixel value is assigned to a corresponding depth of increasing magnitude. The computer process further includes: providing instructions executable by a graphics engine to apply a depth ray layer to a selected portion of the three-dimensional scene, the depth ray layer changing each pixel in the selected portion of the three-dimensional scene to take a pixel value included in the color gradient corresponding to the defined depth associated with the pixel by the depth map.
[0065] In another example computer process according to any of the foregoing computer processes, the selected portion of the three-dimensional scene is bounded by a perimeter that surrounds at least one foreground object defined by pixels inside the perimeter that are excluded from the depth ray layer.
[0066] In yet another example computer process according to any of the foregoing computer processes, the depth ray layer modifies a pixel value of at least one background object of the three-dimensional scene.
[0067] In yet another example computer process according to any of the foregoing computer processes, a color gradient is defined based on pixel values of at least one foreground object in a selected portion of the three-dimensional scene such that each value of the defined color gradient provides at least a threshold contrast ratio with the at least one foreground object.
[0068] In another example computer process of any of the foregoing computer processes, the selected portion of the three-dimensional scene includes a transparent foreground object, and the depth ray layer alters pixel values within the boundaries of the transparent foreground object to illustrate a shape of the at least one background object.
[0069] In yet another example computer process of any of the foregoing computer processes, a color gradient is defined based on user selectable color preferences.
[0070] An example method disclosed herein includes: a device for receiving a depth map defining a depth associated with each pixel of a plurality of pixels forming a three-dimensional scene; and a device for defining a color gradient between a first pixel value and a second pixel value such that each sequential step in the color gradient between the first pixel value and the second pixel value is assigned to a corresponding depth of increasing magnitude; and a device for providing instructions executable by a graphics engine to apply a depth ray layer to a selected portion of the three-dimensional scene to change each pixel in the selected portion of the three-dimensional scene to take a pixel value included in the color gradient corresponding to the depth associated with the pixel by the depth map.
[0071] The implementations described herein may be implemented as logical steps in one or more computer systems. Logical operations may be implemented as: (1) a sequence of processor-implemented steps executed in one or more computer systems; and (2) interconnected machine or circuit modules within one or more computer systems. The implementation is a matter of choice depending on the performance requirements of the computer system being utilized. Accordingly, the logical operations that make up the implementations described herein may also be referred to as operations, steps, objects, or modules. In addition, it should be understood that the logical operations may be performed in any order unless explicitly stated or the claim language inherently requires a particular order. The above description, examples, and data, together with the accompanying drawings, provide a comprehensive description of the structure and use of exemplary implementations.
Claims
1. A system comprising: Memory; as well as A depth ray shader stored in the memory and executable to: receiving a depth map defining a depth associated with each pixel of a plurality of pixels forming a three-dimensional scene; defining a color gradient covering a range of pixel values, each sequential step in the range of pixel values being associated with a corresponding depth of increasing magnitude; as well as Instructions executable by a graphics engine are provided to apply a depth ray layer to a selection of pixels surrounding a foreground object in the three-dimensional scene, the depth ray layer changing each pixel in the selection to take a pixel value within the range encompassed by the color gradient corresponding to the depth associated with the pixel by the depth map, the foreground object including pixels having values excluded from the color gradient.
2. The system of claim 1, wherein: The foreground object includes text.
3. The system of claim 1, wherein: The depth ray layer modifies the value of each pixel in the three-dimensional scene except for those pixels included in the foreground object.
4. The system of claim 1, wherein: The selection of pixels modified by the depth ray layer includes at least one background object of the three-dimensional scene.
5. The system of claim 1, wherein: The depth ray shader defines the color gradient based on pixel values of the foreground object, each value of the defined color gradient providing a threshold contrast ratio with the foreground object.
6. The system of claim 1, wherein: The depth ray shader defines the color gradient based on user selectable color preferences.
7. The system of claim 1, wherein: The color gradient defines a range of pixel values of the same chromaticity that vary from one another in at least one of tints, tones, and shades.
8. A method comprising: receiving a depth map defining a depth associated with each pixel of a plurality of pixels forming a three-dimensional scene; defining a color gradient covering a range of pixel values, each sequential step in the range of pixel values being associated with a corresponding depth of increasing magnitude; as well as Instructions executable by a graphics engine are provided to apply a depth ray layer to a selection of pixels surrounding a foreground object in the three-dimensional scene, the depth ray layer changing each pixel in the selection to take a pixel value within the range encompassed by the color gradient corresponding to the depth associated with the pixel by the depth map, the foreground object including pixels having values excluded from the color gradient.
9. The method of claim 8, wherein: The foreground object includes text.
10. The method of claim 8, wherein: The depth ray layer modifies the value of each pixel in the three-dimensional scene except for those pixels included in the foreground object.
11. The method of claim 8, wherein: The selection of pixels modified by the depth ray layer includes at least one background object of the three-dimensional scene.
12. The method of claim 8, wherein: Defining the color gradient further includes defining the color gradient based on pixel values of the foreground object, each value of the defined color gradient providing a threshold contrast ratio with the foreground object.
13. The method of claim 8, wherein: Defining the color gradient further includes defining the color gradient based on user-selectable color preferences.
14. The method of claim 8, wherein: The color gradient includes a range of pixel values of the same chromaticity that vary from one another in at least one of tints, tones, and shades.
15. One or more computer-readable storage media of a tangible article of manufacture encoding instructions for executing a computer process comprising: receiving a depth map defining a depth associated with each pixel of a plurality of pixels forming a three-dimensional scene; defining a color gradient covering a range of pixel values, each sequential step in the range of pixel values being associated with a corresponding depth of increasing magnitude; as well as Instructions executable by a graphics engine are provided to apply a depth ray layer to a selection of pixels surrounding a foreground object in the three-dimensional scene, the depth ray layer changing each pixel in the selection to take a pixel value within the range encompassed by the color gradient corresponding to the depth associated with the pixel by the depth map, the foreground object including pixels having values excluded from the color gradient.
16. One or more computer-readable storage media as claimed in claim 15, wherein: The depth ray layer modifies the value of each pixel in the three-dimensional scene except for those pixels included in the foreground object.
17. One or more computer-readable storage media as recited in claim 15, wherein: The selection of pixels modified by the depth ray layer includes at least one background object of the three-dimensional scene.
18. One or more computer-readable storage media as recited in claim 15, wherein: Defining the color gradient further includes defining the color gradient based on pixel values of the foreground object, each value of the defined color gradient providing a threshold contrast ratio with the foreground object.
19. The one or more computer-readable storage media of claim 15, wherein: The color gradient defines a range of pixel values of the same chromaticity that vary from one another in at least one of tints, tones, and shades.
20. The one or more computer-readable storage media of claim 15, wherein: Defining the color gradient further includes defining the color gradient based on user-selectable color preferences.