Dynamic Rendering Time Targeting Based on Eye Tracking
The head-mounted display system dynamically targets rendering times based on eye tracking and head pose to minimize reprojection adjustments, addressing judder and ghosting issues in VR headsets with rolling band display technology, enhancing display quality.
Patent Information
- Application Number
- JP2021540310
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-03-27
- Filing Date
- 2020-01-14
- Publication Date
- 2024-12-16
- Estimated Expiration
- 2040-01-14
AI Technical Summary
Users of VR headsets with rolling band display drive technology experience unwanted visual artifacts such as judder and ghosting effects due to inaccuracies in rendering frames based on a single target rendering time, especially when looking at the top or bottom of the display.
A head-mounted display system that dynamically targets the rendering time of frames based on eye tracking and head pose predictions, applying reprojection adjustments only to the pixels within the user's region of interest, minimizing unnecessary adjustments to reduce visual artifacts.
This approach significantly reduces undesirable visual artifacts by ensuring frames are rendered and displayed at the optimal time for the user's gaze, improving display quality and minimizing judder and ghosting effects.
Smart Images

Figure 0007600117000001 
Figure 0007600117000002 
Figure 0007600117000003
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application is a PCT application claiming priority to U.S. Patent Application No. 16 / 367,008, entitled "DYNAMIC RENDER TIME TARGETING BASED ON EYE TRACKING," filed March 27, 2019, which claims priority to co-pending U.S. Provisional Patent Application No. 62 / 792,305, filed January 14, 2019. Applications Nos. 16 / 367,008 and 62 / 792,305 are incorporated herein by reference in their entireties. [Background technology]
[0002] Virtual reality (VR) systems are used both inside and outside the video game industry. Displays for VR systems, such as those built into VR headsets, can operate using a variety of display driving techniques. Some VR systems use a "global flashing" technique to drive the display(s). In a global flashing technique, all pixels of the display(s) are synchronously illuminated to present an image on the display(s) for a given frame. Other VR systems use a "rolling band" technique to drive the display(s). In a rolling band technique, rows of pixels are illuminated in sequence (typically from top to bottom) to present an image on the display(s) for a given frame. In other words, in a rolling band display driving technique, the illumination propagates (or "rolls") across the display during the presentation of an image for a given frame.
[0003] Users of VR headsets implementing rolling band display drive techniques may notice undesirable visual artifacts, such as "juddering," when looking at the top or bottom of the display(s) for moving or animating objects in those regions. Judder causes the user to perceive a "double ghosting effect" in which a moving object, such as a virtual representation of a user's hand moving at the bottom of the display, appears to bounce between two locations (or away from itself) between frames. The source of this undesirable visual artifact near the top and bottom of the display(s) is due in part to the target rendering time provided to an application to render a given frame, and in part to the reprojection step that applies rotational corrections to frames rendered by the application to present an image aligned with the latest estimate of the user's head pose.
[0004] Consider a graphics-based application, such as a video game, that outputs rendered frames that are used to present images on the display panel of a VR headset. To render the correct scene based on the user's head pose, the application receives as input the predicted pose of the user's head. However, in a rasterization-based rendering approach, the application can only accept a single pose (based on a single target rendering time) as input for rendering the frame in question. This means that a single target rendering time must be selected for the original pose prediction of the user's head. In a VR system that uses a rolling band display driving technique, one option is to select the time at which the central row of pixels is illuminated as the target rendering time for each frame. While this approach is expected to minimize the total amount of reprojection adjustments across the frame, it nevertheless fails to mitigate the unwanted judder artifacts that users notice near the top and bottom of the display(s) because the user is not always looking at the center of the display panel(s). Indeed, the user's eyes tend to wander around the display panel(s) and often stare at the top or bottom of the display(s) when a VR headset is used. For example, if a user's eyes wander from the center of the display to the top or bottom of the display, reprojection adjustments applied to pixel values near the top or bottom of the display(s) may cause noticeable judder artifacts for moving or animated objects in those areas of the display.
[0005] Provided herein are technical solutions for improving and enhancing these and other systems. [Brief description of the drawings]
[0006] The detailed description will now be described with reference to the accompanying drawings, in which the leftmost digit(s) of a reference number refers to the figure in which the reference number first appears, and the use of the same reference number in different figures indicates similar or identical parts or features. [Figure 1] 1 illustrates an example technique for dynamically targeting the rendering time of a given frame based on eye tracking, according to embodiments disclosed herein. [Diagram 2] FIG. 13 illustrates how the degree of reprojection adjustment for different subsets of pixels varies across a display when using an approach for dynamically targeting the rendering time of a given frame based on eye tracking according to an embodiment disclosed herein. [Diagram 3] 1 illustrates a flow diagram of an example process for dynamically targeting a rendering time of a given frame based on eye tracking, according to embodiments disclosed herein. [Figure 4] 1 illustrates a flow diagram of an example sub-process for applying reprojection adjustments according to embodiments disclosed herein. [Diagram 5] 1 illustrates example components of a wearable device, such as a VR headset, in which the technology disclosed herein may be implemented. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0007] Described herein are techniques and systems, including head-mounted display (HMD) systems, for dynamically targeting the rendering time of a given frame based, among other things, on eye tracking and the implicit scan-out latency of individual subsets of pixels. Using this approach, most reprojection adjustments are applied to pixel values at the location of the display(s) where the user is looking during image presentation, which mitigates unwanted reprojection-based visual artifacts within the "region of interest" where the user is looking. In general, when large-scale reprojection adjustments are applied to a reprojected frame by an application, the resulting reprojected frame exhibits undesirable visual artifacts, such as judder, which appears as a movable or animated object splitting into two or more objects between frames. In contrast, when small-scale reprojection adjustments are applied to a reprojected frame by an application, the resulting reprojected frame mitigates these undesirable visual artifacts caused by reprojection. Thus, with the goal of making predictions for correctly rendering a frame as accurate as possible and making as few reprojection adjustments as possible during reprojection, the techniques and systems described herein improve image quality within a region of interest by minimizing reprojection adjustments to pixel values within the region of interest. This improves the display quality of HMDs that implement the rolling band display driving technology.
[0008] In an illustrative example, an HMD may be worn by a user for the purpose of immersing the user in a virtual reality (VR) or augmented reality (AR) environment. One or more display panels of the HMD present images based on frames output by an application (e.g., a video game), and these images are displayed to the user through optics included in the HMD, and the user perceives the images as if the user were immersed in the VR or AR environment. The HMD may utilize a rolling band technique to drive the display panel(s) of the HMD by sequentially illuminating individual subsets of pixels over an illumination period. Thus, the illumination propagates (or "rolls") across the display panel(s) during the presentation of an image for a given frame.
[0009] HMD systems including HMDs may also utilize a technique called "reprojection" to compensate for slight inaccuracies in the HMD's original pose prediction and / or to compensate for applications not reaching their frame rate, which has the same effect as a slightly inaccurate original pose prediction. For example, pixel data of the application-rendered frames may be used to generate reprojected frames by transforming the application-rendered frames in a manner that takes into account the updated prediction of the HMD's pose (e.g., through rotation and reprojection calculations).
[0010] Described herein are techniques and systems for mitigating undesirable visual artifacts caused by reprojection in a region(s) of interest on a display where a user is looking, thereby improving display performance by making these undesirable visual artifacts, if present, unnoticeable to a viewing user because they do not appear in the region of interest. In an exemplary process, before providing pose data as input to an application for rendering a next frame, logic of the HMD system (e.g., a compositor) may predict a location on the display panel where a user (wearing the HMD) will be looking during an illumination period of the frame. This prediction may be based at least in part on eye tracking data generated by an eye tracking system of the HMD system. In some embodiments, logic of the HMD system is configured to predict a point of gaze where the user will be looking during the illumination period based on the eye tracking data and determine a location on the display panel corresponding to the predicted point of gaze. Logic of the HMD system is also configured to determine a time within the illumination period where a respective subset of pixels corresponding to the predicted location on the display panel will be illuminated. Using head tracking data generated by the head tracking system of the HMD system, the logic can then predict the pose that the HMD will assume at a determined time (dynamically targeted based on eye tracking data indicating where the user is looking during an illumination period). Pose data indicating the predicted pose of the HMD can then be sent to an application for frame rendering, and upon receiving a frame from the application, the logic of the HMD system can apply a reprojection adjustment to the pixel data for the frame rendered by the application to obtain modified pixel data associated with the reprojected frame. This modified pixel data can be output to a frame buffer to present an image on the display panel(s), with individual subsets of pixels being illuminated in sequence over the illumination period to present the image.
[0011] By dynamically targeting the rendering time of frames rendered by an application based on eye tracking and the implicit scan-out latency of individual subsets of pixels, the scene (or image) may be rendered over the time that light (photons) from the region of interest on the display panel(s) actually reaches the user's eye. This means that the scene may be rendered correctly within the region of interest, and thus only minor reprojection adjustments (if any) are applied to the pixel data (values) within the region of interest that the user is looking at during image presentation. In other words, if it can be determined by tracking the user's eyes that the user is likely to see a subset of pixels within the top of the display panel(s) during the rolling illumination period, the logic of the HMD system (e.g., a compositor) may instruct the application to render the scene according to the user's head pose predicted for the time that that subset of pixels will be illuminated during the rolling illumination period. For a subsequent frame, if the user is predicted to look at a subset of pixels within the bottom of the display panel(s) during the rolling illumination period, the logic can instruct the application to render the scene according to the predicted user head pose for the time that the subset of pixels will be illuminated during the rolling illumination period. Thus, instead of always rendering a given frame for the time that the center row of pixels is illuminated, the techniques described herein are directed to dynamically selecting the rendering time of the next frame based on where on the display panel(s) the user is predicted to look during the image presentation. In the alternative, for each frame, the logic of the HMD system is configured to inform the application which time point to select for the "world picture" to be presented on the display panel(s), the time point being selected based on a prediction of where the user will be looking when the world picture is presented.
[0012] Also disclosed herein are systems configured to implement the techniques and processes disclosed herein, such as systems including display systems (e.g., HMD systems), as well as non-transitory computer-readable media storing computer-executable instructions for implementing the techniques and processes disclosed herein. Although the techniques and systems disclosed herein are discussed in the context of video game applications, particularly VR game applications, by way of example, it should be understood that the techniques and systems described herein may provide benefits to other applications, including, but not limited to, non-VR applications (e.g., AR applications), and / or non-game applications such as industrial machinery applications, defense applications, robotics applications, and the like.
[0013] FIG. 1 is a diagram illustrating an example technique for dynamically targeting the rendering time of a given frame based on eye tracking. FIG. 1 illustrates a head mounted display (HMD) 100 worn by a user 102. The example HMD 100 of FIG. 1 may include a single display panel 104 or multiple display panels 104, such as a left and right display panel of a stereo pair. One or more display panels 104 of the HMD 100 may be used to present a sequence of image frames (hereinafter referred to as "frames") that are viewable by a user 102 wearing the HMD 100. It should be understood that the HMD 100 may include any number of display panels 104 (e.g., two or more display panels, a pair of display panels, or a single display panel). Thus, the term "display panel," as used in the singular herein, may refer to either display panel 104 of a pair of display panels in a two-panel HMD 100, or may refer to a single display panel 104 of an HMD 100 having any number of display panels (e.g., a single-panel HMD 100 or a multi-panel HMD 100). In a two-panel HMD 100, a stereo frame buffer may, for example, render 2160 x 1200 pixels (e.g., 1080 x 1200 pixels per display panel) on both display panels of the HMD 100.
[0014] The display panel(s) 104 of the HMD 100 may emit light utilizing any suitable type of display technology, such as an emissive display that utilizes light emitting elements (e.g., light emitting diodes (LEDs)) to emit light during presentation of frames on the display panel(s) 104. By way of example, the display panel 104 of the HMD 100 may include a liquid crystal display (LCD), an organic light emitting diode (OLED) display, an inorganic light emitting diode (ILED) display, or any other suitable type of display technology for HMD applications.
[0015] The display panel(s) 104 of the HMD 100 may operate at any suitable refresh rate, such as a 90 Hertz (Hz) refresh rate. The "refresh rate" of a display is the number of times per second that the display can redraw the screen. The number of frames displayed per second may be limited by the refresh rate of the display. Thus, a series of frames may be processed (e.g., rendered) and displayed as an image on the display, such that one frame of the series is displayed for each screen update. That is, to present a series of images on the display panel(s) 104, the display panel(s) 104 may transition between frames at the refresh rate of the display within the series of frames, illuminating pixels for each screen refresh. In some embodiments, the frame rate may be throttled and phantom frames (based on reprojection) may be inserted between the rendered frames by the application.
[0016] The display system of the HMD 100 may also implement a rolling band type display driving scheme. That is, the light emitting elements of the display panel(s) 104 may be individually addressable such that individual subsets of the light emitting elements, and therefore individual subsets of the pixels, may be independently illuminated sequentially within a rolling band of illumination during an illumination period. In some embodiments, both the array of pixels and the light emitting element(s) on the display panel(s) 104 are arranged in rows and columns, but not necessarily one pixel per light emitting element. In this configuration, individual rows and / or individual columns of light emitting elements may be addressed in sequence, and / or individual groups of successive rows and / or individual groups of successive columns of light emitting elements may be addressed in sequence. As a result of addressing the light emitting elements in this "rolling" manner, a subset of the pixels corresponding to a subset of these individually addressable light emitting elements may be independently "illuminated".
[0017] As used herein, "illuminating a pixel" means illuminating a light-emitting element that corresponds to that pixel. For example, an LCD illuminates a light-emitting element of a backlight to illuminate a corresponding pixel(s) of the display. Furthermore, as used herein, a "subset of pixels" may include an individual pixel or multiple pixels (e.g., a group of pixels). In some embodiments, a subset of pixels includes a row of pixels, a column of pixels, a group of consecutive rows of pixels, or a group of consecutive columns of pixels. Thus, in aspects of the techniques and systems described herein, a subset of pixels may be scanned and illuminated in sequence, such as by scanning and illuminating each row of pixels in sequence, starting with the first row of pixels (e.g., the top row of pixels) and ending with the last row of pixels (e.g., the bottom row of pixels). However, any suitable illumination pattern may be used using the techniques and systems described herein (e.g., snake-like illumination patterns, column-by-column illumination, multiple rows / columns of pixels at a time, etc.).
[0018] To drive the display panel(s) 104 in this "rolling" fashion, the HMD 100 may include, among other things, a display controller(s), a display driver circuit, and similar electronics for driving the display panel(s) 104. The display driver circuit may be coupled to an array of light-emitting elements of the display panel(s) 104 via conductive paths, such as metal traces on a flexible printed circuit. In one example, the display controller(s) may be communicatively coupled to the display driver circuit and configured to provide signals, information, and / or data to the display driver circuit. The signals, information, and / or data received by the display driver circuit may cause the display driver circuit to illuminate the light-emitting elements in a particular manner. That is, the display controller(s) may determine which light-emitting element(s) are illuminated, which light-emitting element(s) to illuminate, and the level of light output emitted by the light-emitting element(s), and may communicate the appropriate signals, information, and / or data to the display driver circuit to achieve that purpose.
[0019] The pixel data for a given frame may be output to a frame buffer to present the frame as an image on the display panel 104. The pixel data for each frame may, in some embodiments, include a two-dimensional array of values (e.g., color values) for each pixel. In some embodiments, the pixel data further includes additional data or metadata, such as a depth value. In some embodiments, the pixel data may include data for each pixel represented by a single color and a set of alpha values (e.g., one color value for a red channel, one color value for a green channel, one color value for a blue channel, and one or more values for one or more alpha channels). This pixel data may be output to a frame buffer (e.g., a stereo frame buffer) to present a desired visual effect in the image(s) on the display panel(s) 104 of the HMD 100.
[0020] The HMD 100 may represent a VR headset for use in a VR system, such as for use in a VR gaming system. However, the HMD 100 may additionally or alternatively be implemented as an AR headset for use in an AR application. In AR, the user 102 sees virtual objects superimposed on a real-world environment, whereas in VR, the user 102 does not see a real-world environment, but is fully immersed in a virtual environment as perceived through the display panel 104 and optics (e.g., lenses) of the HMD 100. Although the examples described herein relate primarily to a VR-based HMD 100, it should be understood that the HMD 100 is not limited to implementation in VR applications.
[0021] Generally, as part of an HMD system, either the HMD 100 itself or a computing device associated with and coupled to the HMD 100 (e.g., a personal computer (PC), a game console, etc.), a graphics-based application 106 executing on the computing device may be configured to output a series of frames 108(1), 108(2), 108(3), etc. (collectively 108). The series of frames 108 are ultimately presented as an image on the display panel(s) 104 of the HMD 100. The example of FIG. 1 illustrates three exemplary frames 108(1) (or frame "F"), 108(2) (or frame "F+1"), and 108(3) (or frame "F+2") with respect to a rendering timeline 110 to illustrate how the frames 108 may be rendered serially. Here, the application 106 renders first frame F, then frame F+1, and then frame F+2, in order, from left to right on the rendering timeline 110. The rendering timeline 110 also illustrates the rendering workload 112 of the compositor 114 of the HMD 100 (or HMD system) toward the end of each rendering interval for each frame 108. The individual rendering workload 112 of the compositor 114 for a given frame 108 may represent adjustments applied to pixel data output by the application 106 before rendering a final image on the HMD 100. Such adjustments may include, but are not limited to, adjustments for chromatic aberration, panel masking, reprojection, and the like, that are applied to the frames 108 output by the application 106 before rendering a final image on the HMD 100. Thus, the frames 108 illustrated in FIG. 1 are meant to represent "real" frames in the sense of being output from the application 106, which may represent a video game application or any other type of graphics application.The applications 106 may execute in a graphics pipeline that outputs pixel data, and the compositor 114 is configured to modify the pixel data and output the modified pixel data to a frame buffer (e.g., a stereo frame buffer).
[0022] During execution, the eye tracking system of the HMD 100 (or HMD system) may generate eye tracking data around a point of gaze where the user 102 is looking at any given moment in time. The eye tracking system may include a camera or other optical sensor inside the HMD 100 to capture image data of the user's eyes 116, and the captured image data can be used to determine the motion vectors, interpupillary distance, interocular distance, three-dimensional (3D) position of each eye 116 relative to the HMD 100, including the magnitude of twist and rotation (e.g., roll, pitch, and yaw) and gaze direction of each eye 116. In one example, infrared light is emitted within the HMD 100 and reflected from each eye 116. The reflected light is received or detected by a camera of the HMD 100 and analyzed to extract eye rotation from changes in the infrared light reflected by each eye 116. In some embodiments, the eye tracking system may integrate information from past measurements, measurements identifying the position of the head of the user 102, and 3D information describing the scene presented on the display panel(s) 104. Thus, information about the position and orientation of the eyes 116 of the user 102 may be used to determine a point of gaze within the virtual scene presented by the HMD 100 where the user 102 is looking. Many methods for tracking the eyes 116 of the user 102 may be used by the eye tracking system of the HMD 100 (or HMD system), and these are merely examples of eye tracking techniques that may be used.
[0023] In either case, the eye tracking data generated by the eye tracking system of the HMD 100 (or HMD system) can be used by the compositor 114 to predict a gaze point where the user 102 will be looking during an illumination period for an upcoming frame 108, which may be correlated to a location on the display panel(s) 104 (e.g., an individual subset (e.g., row) of pixels, a group of individual contiguous subsets (e.g., rows) of pixels, other areas of the display panel(s) 104, etc.) that may be defined at any suitable level of granularity. In some embodiments, the most recent eye tracking data (e.g., gaze point) can be used as a proxy to predict where the user 102 will be looking during an illumination period for an upcoming frame 108. With today's eye tracking technology, it is difficult to accurately predict future eye positions due to the ballistic movement that the eyes exhibit during fast eye movements. This is one reason for using a recent gaze point estimate as a proxy to predict future gaze points. However, as eye tracking improves over time, predictions of where the user 102 will look at future times may become more accurate, and thus predictions of future gaze points may be determined as a function of past eye tracking data. For example, future gaze points may be predicted based on motion vector estimates of the user's eye 116 and / or based on additional data.
[0024] 1 also shows a "scanout+illumination" timeline 118 to illustrate an illumination period corresponding to each frame 108 rendered in the rendering timeline 110. For example, after frame F is rendered by application 106, and after compositor 114 executes its rendering workload 112(1) to modify the pixel data for frame F, an image corresponding to frame F is presented on display panel 104 during illumination period 120(1) for frame F. During this illumination period 120(1), a subset of pixel values (pixel data) for frame F are scanned in sequence over a display port (e.g., a high-definition multimedia interface (HDMI)) to display panel 104, and light-emitting elements of display panel(s) 104 are illuminated in sequence to illuminate respective subsets of pixels in sequence. FIG. 1 illustrates an example in which the respective subsets of pixels correspond to respective rows of pixels. For example, the display panel(s) 104 may have multiple rows of pixels, starting with a first row ("row 1"), which may be the top row, and ending with a last row ("row N"), which may be the bottom row. The illumination period 120 also extends from times t1 to t N For example, a first subset of pixels (e.g., “row 1”) may be imaged at time t1, and a last subset of pixels (e.g., “row N”) may be imaged at time t N while an intermediate subset of pixels may be illuminated at respective times between these outer boundaries of the illumination period 120. As noted above, for a 90 Hz refresh rate, the illumination period 120 may be approximately 11 ms in duration.
[0025] In the example of FIG. 1, to render frame F, compositor 114 may predict a point of gaze where user 102 will look during illumination period 120(1) for frame F. In the example of FIG. 1, the predicted point of gaze for frame F is a point of gaze that corresponds to a respective subset (or group of contiguous subsets) of pixels in the top of display panel(s) 104. This may result in compositor 114 predicting a position of display panel(s) 104 where user 102 will look during illumination period 120(1), in which case the predicted position for frame F is a position that corresponds to a respective subset (or group of contiguous subsets) of pixels in the top of display panel(s) 104. It should be understood that the "position" of display panel(s) 104 may be defined in any suitable manner and / or at any suitable level of granularity suitable for describing where user 102 is looking on display panel(s) 104. 1 illustrates an example in which the position of the display panel(s) 104 can be determined based on rows of pixels of the display panel(s). Depending on the accuracy of the eye tracking system of the HMD 100 (or HMD system) and the resolution at which individual subsets of pixels can be addressed, a prediction of where the user 102 is looking can be made at any suitable level of granularity, for example, by estimating that the user 102 is looking at a given subset(s) of pixels (e.g., individual row(s) of pixels, individual column(s) of pixels, etc.), or individual groups of contiguous subsets of pixels (e.g., groups of contiguous rows, groups of contiguous columns, etc.).
[0026] Once the compositor 114 has determined where the user 102 will look when presented with an image corresponding to frame F, the compositor 114 may be further configured to determine a time within the illumination period 120(1) for frame F at which a respective subset of pixels corresponding to a location on the display panel(s) 104 where the user 102 is predicted to look will be illuminated. For example, if the user 102 is predicted to look at a respective subset (or a group of contiguous subsets) of pixels within an upper portion of the display panel(s) 104 during the illumination period 120(1) for frame F, the compositor 114 may determine a time at which that subset of pixels (within the upper portion of the display panel(s) 104) will be illuminated. In one example, the compositor 114 may determine that a first row (e.g., "row 1") of pixels within an upper portion of the display panel(s) 104 will be illuminated at time t1. In this example, compositor 114 may determine the target rendering time (within illumination period 120(1) for frame F) as target rendering time=t1 because user 102 is predicted to be looking at a location corresponding to a first row of pixels in the top of display panel(s) 104 during illumination period 120(1) for frame F based on the eye tracking data. As another example, if user 102 is predicted to be looking at pixels in, for example, the 200th row, compositor 114 may determine the illumination time of the pixels in the 200th row as the target rendering time.
[0027] In addition to the eye tracking system, the head tracking system of the HMD 100 (or HMD system) may generate head tracking data regarding the pose of the HMD 100, and the compositor 114 is configured to predict the pose that the HMD 100 may assume at a determined time (the targeted rendering time). Thus, for frame F, the compositor 114 may predict the pose that the HMD 100 may assume at time t1, which is determined to be the time when a subset of pixels (e.g., "row 1") in the top portion of the display panel(s) 104 will be illuminated during the illumination period 120(1). The compositor 114 may send pose data to the application 106 indicating the predicted pose for rendering frame F. Providing the pose data to the application 106 in advance allows the application 106 to output pixel data for rendering an image on the HMD 100 in a manner correct for the predicted head pose of the user 102 at the future targeted rendering time t1. That is, the application 106 renders a scene appropriate for the user's predicted head pose at time t1 when light from the part of the display panel(s) 104 that the user 102 is predicted to be looking at reaches the user's eye(s) 116.
[0028] The graphics logic of the HMD 100 (or HMD system) may be asynchronous or synchronous. In an asynchronous system, the compositor 114 runs separately (on a separate asynchronous thread) from the application 106 on the graphics processing unit (GPU) of the HMD 100 (or HMD system). For example, the application 106 may call a function to receive pose data from the compositor 114, and the compositor 114 may provide the application 106 with the requested pose data (predicted to a target rendering time t1 for frame F) so that the application 106 can render a frame 108 (e.g., frame F) according to the pose data corresponding to the virtual camera pose used to render the scene. Assuming that the application 106 finishes rendering the frame 108 before the compositor workload 112 begins, the compositor 114 is configured to receive the frame 108 (e.g., left and right image frames) from the application 106 and warp the frame(s) 108 into a back buffer(s) onto the display panel(s) 104 of the HMD 100. For example, the compositor 114 may perform, without limitation, chromatic aberration, panel masking, reprojection, etc., based on the frame 108 output by the application 106 before rendering a final image on the HMD 100.
[0029] The compositor 114 may run in a high priority context mode, which means that when it is time for the compositor 114 to start its workload 112, the GPU driver allows the compositor 114 to preempt the application 106 (e.g., interrupting the application 106 from rendering if the application is still rendering a frame 108 and / or preventing the application 106 from starting rendering the next frame 108). The compositor 114 may allocate a timeslot (up to 1 ms on average) at the end of each rendering interval to do its work 112, regardless of what is happening in the application 106. Thus, at every rendering interval, the compositor 114 renders "something" in the sense that it gets the best frame 108 it can get from the application 106 (e.g., either a fresh / new frame 108 or a previously rendered frame 108), and the compositor 114 uses the pixel data associated with that frame 108 to put the pixel data into a frame buffer for output on the display panel(s) 104 of the HMD 100. The compositor 114's ability to output different pixel data for each screen update is the mechanism that keeps everything "live" and keeps the image rendered on the HMD 100 from hitching too badly in case the application 106 is not hitting its frame rate in any case.
[0030] By dynamically targeting the rendering time as the time when the subset of pixels closest to where the user is looking is illuminated (e.g., t1 for frame F), the image corresponding to frame F can be presented during illumination period 120 at the location on display panel 104 where user 102 is looking during illumination period 120, with only minor reprojection adjustments, if any. This means that user 102 does not see undesirable visual artifacts caused by reprojection for objects that are moving or animating within the region of interest where the user is looking during presentation of the image.
[0031] After frame F is rendered, the dynamic rendering time targeting may be repeated for each frame in the series of frames 108 as it is rendered. For example, for frame F+1, eye tracking data may indicate that user 102 is looking at a respective subset (or group of contiguous subsets) of pixels in the middle portion of display panel 104 during illumination period 120(2) for frame F+1, causing compositor 114 to dynamically target the time at which that subset (or group of subsets) of pixels in the middle portion of display panel 104 will be illuminated as the rendering time for frame F+1. For example, compositor 114 may determine that a center row of pixels will be illuminated at a time, t N / 2, so that it is possible to predict the posture that the HMD 100 will assume at a time, t N / 2. Compositor 114 may send pose data indicating this predicted pose to application 106 for rendering frame F+1, and in response, compositor 114 may receive pixel data for frame F+1. During compositor 114's rendering workload 112(2) for frame F+1, compositor 114 may apply reprojection adjustments to the pixel data of frame F+1, among other adjustments applied during rendering workload 112(2), to obtain modified pixel data associated with a reprojected frame of frame F+1, and compositor 114 may output the modified pixel data to a frame buffer so that a corresponding image may be presented on display panel(s) 104 during illumination period 120(2) for frame F+1.
[0032] Similarly, for frame F+2, eye tracking data may indicate that user 102 is looking at a respective subset (or group of contiguous subsets) of pixels in the lower portion of display panel(s) 104 during illumination period 120(3) for frame F+2, which causes compositor 114 to dynamically target the time at which that subset (or group of subsets) of pixels in the lower portion of display panel(s) 104 is illuminated as the rendering time for frame F+2. The pixel of time t N t NThe compositor 114 may send pose data indicating this predicted pose to the application 106 for rendering frame F+2, and in response, the compositor 114 may receive pixel data from the application 106 for frame F+2. During the rendering workload 112(3) of the compositor 114 for frame F+2, the compositor 114 may apply, among other adjustments, reprojection adjustments to the pixel data for frame F+2 to obtain modified pixel data associated with a reprojected frame for frame F+2, and the compositor 114 may output the modified pixel data to a frame buffer such that a corresponding image may be presented on the display panel(s) 104 during an illumination period 120(3) for frame F+2.
[0033] In some embodiments, logic in the HMD 100 (or HMD system) may be configured to address different locations of the display panel(s) 104 with different resolutions. In this way, since eye tracking data can be used to predict the area of interest on the display panel(s) 104 that the user 102 is looking at during image presentation, the HMD 100 (or HMD system) can augment this dynamic addressing mechanism to dynamically address the location of the display panel(s) 104 where the user 102 is looking at a first (high) resolution, and dynamically address the remainder of the display panel(s) 104 at a second (low) resolution that is lower than the first resolution. This may provide improved display quality within the area of interest, as well as improved display performance in terms of reducing the latency to scan out pixel data since areas outside the area of interest have less pixel data to scan out.
[0034] FIG. 2 is a diagram illustrating how the degree of reprojection adjustment varies across a display for different subsets of pixels when using an approach to dynamically target rendering times for a given frame 108 based on eye tracking, according to embodiments disclosed herein. FIG. 2 illustrates a display panel 104 of the HMD 100, both of which were introduced in FIG. 1. In some embodiments, this display panel 104 may represent the left or right display panel of a stereo pair of display panels of the HMD 100. The display panel 104 is illustrated as including an array of M×N pixels, where the pixels are arranged in M columns and N rows, where M is any suitable number, and N is any suitable number, and where M and N may or may not be equal. As described herein, the display panel 104 is driven using a rolling band display driving technique, such that rolling illumination during the presentation of an image of a given frame 108 occurs by sequentially illuminating the pixels of individual subsets of pixels over the illumination period 120 introduced in FIG. 1. 2, each subset of pixels corresponds to each row of pixels (e.g., rows 1-N), and the rows are illuminated in sequence from the first row ("row 1") to the last row ("row N") over the illumination period 120 of a given frame 108. In the illustrated example, this means that rolling illumination occurs from top to bottom, although it should be understood that this is merely an exemplary sequence in which the subset of pixels may be illuminated.
[0035] The targeted rendering time 200 is from time t1 to time t NConsider an example where the target rendering time 200 is predicted to be time t3 within the illumination period 120, which may be described as the period until the user 102 views a respective subset (or a group of contiguous subsets) of pixels within the top of the display panel 104. An example of this targeted rendering time 200 may determine, for example, the third row of pixels ("row 3"), for example, when eye tracking data indicates that the user 102 views a respective subset (or a group of contiguous subsets) of pixels within the top of the display panel 104 during the illumination period 120 for a given frame. Thus, the compositor 114 is configured to predict the pose that the HMD 100 will assume at the targeted rendering time 200 (e.g., time t3), and the compositor 114 may transmit pose data indicative of this predicted pose to the application 106 for rendering the given frame 108. After receiving the pixel data for the application rendered frame 108, the compositor 114 may apply reprojection adjustments to the pixel data during its rendering workload 112 for the given frame 108.
[0036] To determine the reprojection adjustments to apply to the received pixel data, the compositor 114 may, after receiving the pixel data, predict multiple updated poses of the HMD 100 multiple times within an illumination period 120 during which respective subsets of pixels are illuminated based at least in part on updated head tracking data generated by a head tracking system of the HMD 100 (or HMD system). For example, upon receiving pixel data associated with a given frame 108 from the application 106, the compositor 114 may predict, for a first row of pixels ("row 1"), a first updated pose where the HMD 100 is at time t1, for a second row of pixels ("row 2"), a second updated pose where the HMD 100 is at time t2, for a third row of pixels ("row 3"), a third updated pose where the HMD 100 is at time t3, ..., for an Nth row of pixels ("row N"), a first updated pose where the HMD 100 is at time t NWith the multiple updated pose predictions in hand, compositor 114 may calculate (or otherwise determine) multiple adjustments 202(1)-(N) based at least in part on a comparison between the original pose predictions and the individual poses of the updated poses. For example, multiple adjustments 202(1)-(N) may include a first adjustment 202(1) for a first individual subset of pixels (e.g., a first row of pixels, “row 1”), a second adjustment 202(2) for a second individual subset of pixels (e.g., a second row of pixels, “row 2”), a third adjustment 202(3) for a third individual subset of pixels (e.g., a third row of pixels, “row 3”), ..., and an Nth adjustment 202(N) for an Nth individual subset of pixels (e.g., an Nth row of pixels, “row N”). In the example of FIG. 2, an individual adjustment (e.g., first adjustment 202(1)) may be calculated (or otherwise determined) as a difference calculation based on an original pose prediction provided as input to application 106 and an updated pose prediction for the corresponding pixel subset (e.g., an updated pose prediction for time t1 at which the first row of pixels ("row 1") lights up).
[0037] Graph 204 shown in FIG. 2 illustrates how the reprojection adjustments are small adjustments of a subset of pixels near where the user 102 is looking at the display panel 104. In the example of FIG. 2, these pixels correspond to pixels near the third row of pixels ("row 3"). For example, there may be little or no reprojection adjustment applied to the pixel values for the third row of pixels ("row 3") and only small reprojection adjustments for the pixel values of the pixels in the adjacent rows. This is because in the example of FIG. 2, the original pose prediction was made for target rendering time t3, which is the time that the third row of pixels ("row 3") is illuminated during illumination period 120 (i.e., during image presentation), and the updated pose prediction t3 for the same time is likely to be associated with the third row of pixels ("row 3"), or if different, the difference is expected to be smaller than the difference between the other predictions of the original pose prediction and the updated pose prediction. Thus, a reprojection adjustment applied to pixel values in the third row of pixels ("Row 3") is a small reprojection adjustment if one is not applied at all. The reprojection adjustments gradually increase in amount for rows away from the third row of pixels ("Row 3"). Thus, any reprojection adjustments for individual subsets (rows) of pixels adjacent to the third row of pixels ("Row 3") may be less than the reprojection adjustments for those subsets (rows) of pixels farther (i.e., non-adjacent) from the third row of pixels ("Row 3"). This is why a reprojection adjustment applied to pixel values in the Nth row of pixels ("Row N") is much larger than a reprojection adjustment applied to pixel values in, for example, the second row of pixels ("Row 2"). However, because user 102 is viewing a discrete subset (or group of contiguous subsets) of pixels in the upper portion of display panel 104 (e.g., the third row of pixels ("row 3")) during image presentation, any undesirable visual artifacts caused by reprojection adjustments at the lower portion of display panel 104 go unnoticed. On the one hand, the area of interest viewed by user 102 is free of these types of undesirable visual artifacts due to reprojection.
[0038] The processes described herein are illustrated as a collection of blocks in a logic flow graph, which represent a sequence of operations that can be implemented in hardware, software, firmware, or combinations thereof (i.e., logic). In the software context, the blocks represent computer-executable instructions that, when executed by one or more processors, perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform particular functions or implement particular abstract data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described blocks can be combined in any order and / or in parallel to implement a process.
[0039] 3 illustrates a flow diagram of an example process 300 for dynamically targeting a rendering time of a given frame based on eye tracking, according to an embodiment disclosed herein. For discussion purposes, the process 300 is described with reference to the previous figure.
[0040] At 302, a frame 108 of the series of frames may be rendered to present a corresponding image on a display panel 104 of the HMD 100. As mentioned above, if the HMD 100 includes a pair of display panels, the frame 108 may be rendered to present a first image on the left display panel 104 and a second image on the right display panel 104, or vice versa. As indicated by the various sub-blocks in 302, there may be various sub-operations performed by logic of the HMD 100 (or HMD system) for the purposes of rendering the frame 108 at block 302.
[0041] In sub-block 304, logic of the HMD 100 (or HMD system) (e.g., logic including the compositor 114) may predict a location on the display panel 104 where a user 102 wearing the HMD 100 will be looking during an illumination period 120 for a frame 108, where the illumination period 120 is a period during which individual subsets of pixels on the display panel 104 are sequentially illuminated to present an image on the display panel 104. As indicated by sub-block 306, the prediction of the location on the display panel 104 where the user 102 will be looking may be based at least in part on eye tracking data generated by an eye tracking system of the HMD 100 (or HMD system). For example, in sub-block 306, logic (e.g., the compositor 114) may predict a gaze point where the user 102 will be looking during the illumination period 120 for a frame 108, where the gaze point may correspond to a particular location on the display panel 104, based at least in part on eye tracking data generated by the eye tracking system. Thus, logic (e.g., compositor 114) may be configured to determine a location on display panel 104 that corresponds to the predicted gaze point (e.g., by accessing association data between possible gaze points and various locations on display panel 104 and / or calculating the location based on eye tracking data and other parameters). In an illustrative example, eye tracking data (e.g., eye direction data) may indicate the orientation of the eyes of a user wearing HMD 100, such as in the form of a number of degrees from the midline of a field of view (FOV) parameter of HMD 100. For example, based on the FOV parameter of HMD 100 (e.g., 110 degrees), and possibly based on distortion parameters of the HMD optics), the eye direction data may be used to estimate a subset (e.g., a row) or group of consecutive subsets (e.g., a group of consecutive rows) of pixels that is closest or nearest to where the user will be looking during the illumination period of the upcoming frame.For example, if eye direction data indicates that a user is looking +20 degrees from the midline of a 110 degree FOV, this may be a calculated degree offset and, through mathematical calculation, may be correlated with a row (or group of consecutive rows) of the display panel 104 (e.g., the 400th row on a 1200 row display panel). Thus, a prediction of the position of the display panel 104 where the user is looking may be based on the FOV parameters of the HMD 100 in combination with the eye tracking data.
[0042] In sub-block 308, logic (e.g., compositor 114) may dynamically target rendering times 200 for frame 108 based on a prediction of where user 102 will be looking on display panel 104. That is, the logic may determine the time within illumination period 120 for frame 108 at which individual subsets of pixels that correspond to (e.g., are within) locations on display panel 104 will be illuminated. In the right diagram of FIG. 3, logic in sub-block 304 predicts that user 102 will be looking at a lower portion of display panel 104, and logic in sub-block 308 may dynamically target rendering times 200 (e.g., from time t1 to time t2) within illumination period 120 that correspond to the time at which a subset (e.g., row) of pixels in the lower portion of display panel 104 will be illuminated. N An example of determining the maximum number of sigma-based filters (up to 1000) is given.
[0043] In sub-block 310, logic (e.g., compositor 114) may predict a pose that HMD 100 may be in at the time determined in sub-block 308 (i.e., the targeted rendering time 200). The original prediction of the pose of HMD 100 in sub-block 310 may be based at least in part on head tracking data generated by a head tracking system of HMD 100 (or HMD system).
[0044] In sub-block 312 , logic (eg, compositor 114 ) may send pose data indicating a predicted pose in sub-block 310 to application 106 for purposes of rendering frame 108 .
[0045] In sub-block 314, logic (e.g., compositor 114) may receive pixel data for frame 108 from application 106. The pixel data may include pixel values for individual pixels in an array of pixels of display panel 104, as described herein.
[0046] In sub-block 316, logic (e.g., compositor 114) may apply the reprojection adjustments to the pixel data for frame 108 to obtain modified pixel data associated with the reprojected frame. In FIG. 1, this may occur after receiving pixel data for frame 108 from application 106 during the rendering workload 112 of compositor 114.
[0047] In sub-block 318, logic (e.g., compositor 114) may output the modified pixel data to a frame buffer(s). Again, for an HMD 100 having a pair of display panels 104, this pixel data may correspond to a frame representing a pair of images to be displayed on the pair of display panels 104.
[0048] At 320, logic (e.g., a display controller, display driver circuitry, etc.) of the HMD 100 (or HMD system) may cause an image to be presented on the display panel 104 based on the frame 108 rendered in block 302 (e.g., based at least in part on the modified pixel data output to the frame buffer in sub-block 318). As indicated by sub-blocks 322 and 324, the presentation of the image in block 320 may include one or more sub-operations.
[0049] In sub-block 322, for example, the modified pixel data may be scanned in sequence for each subset of pixels on the display panel 104. For example, pixel values for each row of pixels may be sequentially scanned into the display panel(s) 104 via a display port (e.g., HDMI), starting with a first subset (e.g., row) of pixels and ending with a last subset (e.g., row) of pixels.
[0050] In sub-block 324, individual subsets of pixels may be illuminated in sequence over the illumination period 120 of a frame 108 to present an image on the display panel(s) 104. This may be achieved by driving the light emitting elements of the display panel(s) 104 using a rolling band display driving technique that causes individual light emitting element subsets of the display panel(s) 104 to sequentially illuminate corresponding pixel subsets during image presentation.
[0051] 4 illustrates a flow diagram of an example sub-process 400 for applying a reprojection adjustment (e.g., a sub-process of block 316 of process 300) according to an embodiment disclosed herein. For discussion purposes, process 400 is described with reference to the previous figure.
[0052] At 402, after the compositor 114 receives pixel data for a frame 108 from the application 106, logic of the HMD 100 (or HMD system) (e.g., logic including the compositor 114) may predict multiple updated poses of the HMD 100 multiple times within the illumination period 120 for the frame 108, where respective subsets of pixels are illuminated, based at least in part on updated (second) head tracking data generated by a head tracking system of the HMD 100 (or HMD system). In an example where the respective subsets of pixels are respective rows of pixels, the multiple updated poses predicted at block 402 may include a first updated pose of the HMD 100 for a time when a first row of pixels ("row 1") is illuminated, a second updated pose of the HMD 100 for a time when a second row of pixels ("row 2") is illuminated, as well as a pose for an Nth row of pixels, etc., where N is any suitable number.
[0053] At 406, logic (e.g., compositor 114) may compute (or otherwise determine) a number of adjustments (e.g., reprojection adjustments) based at least in part on a comparison between the originally predicted pose and the individual poses of the updated poses. That is, the individual poses of the updated poses predicted at block 402 may be compared to the original poses predicted at block 310 of process 300 and sent to application 106 as input for rendering frame 108. The comparison between the poses at block 406 may determine a transformation that may be applied to the original predicted pose to obtain the individual updated pose in question. For example, one of the adjustments determined at block 406 may correspond to a transformation that may be applied, for example, to the originally predicted pose to obtain an updated pose of HMD 100 for the first row of pixels. Additional transformations may be determined in a similar manner for other subsets of pixels.
[0054] At 408, logic (e.g., compositor 114) may modify pixel data for frame 108 (received from application 106) based at least in part on the adjustments calculated in block 406 to obtain modified pixel data associated with the reprojected frame. Briefly referring back to FIG. 2, graph 204 illustrates how the adjustments calculated in block 406 may vary across display panel(s) 104 due to rolling band display driving techniques that illuminate individual subsets of pixels in sequence at different times, and the fact that the head of user 102 may be moving in space at any given time. The adjustments for the subset of pixels adjacent to the subset of pixels associated with the targeted rendering time 200 are small scale adjustments, while the other adjustments for the subset of pixels not adjacent to the subset of pixels associated with the targeted rendering time 200 are larger scale adjustments, and how large these larger scale adjustments are compared to the small scale adjustments of the adjacent subsets of pixels depends on the amount (or rate) of head rotation that occurs while the frame 108 is rendered and the corresponding image is presented. In any event, as shown in graph 204 of FIG. 2, of the multiple adjustments, a first adjustment of a first individual subset of pixels adjacent to the subset of pixels associated with the targeted rendering time 200 is likely to be less than a second adjustment of a second individual subset of pixels not adjacent to the subset of pixels associated with the targeted rendering time 200. This means that the image presented on the display panel(s) 104 does not include unwanted artifacts (e.g., judder) caused by reprojection at the location on the display panel(s) 104 where the user 102 is looking.
[0055] FIG. 5 illustrates exemplary components of an HMD 500 (or HMD system including HMD 500), such as a VR headset, according to embodiments disclosed herein that may be embodied. HMD 500 may be the same as or similar to HMD 100 referenced in the previous figure, and thus the components of HMD 500 illustrated in FIG. 5 may be implemented in HMD 100. HMD 500 may be implemented as a standalone device to be worn by user 102 (e.g., on the head of user 102). In some embodiments, HMD 500 may be head-mountable, such as by allowing user 102 to fasten HMD 500 to the user's head using a fastening mechanism (e.g., an adjustable band) sized to fit around the head of user 102. In some embodiments, HMD 500 includes a virtual reality (VR) or augmented reality (AR) headset that includes near-eye or near-to-eye display(s). Thus, the terms "wearable device," "wearable electronic device," "VR headset," "AR headset," and "head mounted display (HMD)" may be used interchangeably herein to refer to the device 500 of FIG. 5. However, it should be understood that these types of devices are merely examples of the HMD 500, and it should be understood that the HMD 500 may be implemented in a variety of other form factors. It should also be understood that some or all of the components shown in FIG. 5 may be implemented on the HMD 500. Thus, in some embodiments, a subset of the components shown in FIG. 5 may be implemented on a computing device that is part of the HMD system but separate from the HMD 500 itself, such as a PC, a game console, or any other suitable computing device.
[0056] In the illustrated implementation, the HMD 500 includes one or more processors 502 and memory 504 (e.g., computer-readable media 504). In some implementations, the processor(s) 502 may include a central processing unit (CPU), a graphics processing unit (GPU)(s) 503, both a CPU and a GPU 503, a microprocessor, a digital signal processor, or other processing units or components known in the art. Alternatively, or in addition, what is described functionally herein may be implemented, at least in part, by one or more hardware logic components. For example, without limitation, exemplary types of hardware logic components that may be used include field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), systems on chips (SOCs), complex programmable logic devices (CPLDs), and the like. In addition, each of the processor(s) 502 may have its own local memory that may also store program modules, program data, and / or one or more operating systems.
[0057] The memory 504 may include volatile and non-volatile memory, removable and non-removable media implemented in any method or technology for storage of information, such as computer-readable instructions, data structures, program modules, or other data. Such memory includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVDs) or other optical memory, magnetic cassettes, magnetic tapes, magnetic disk storage or other magnetic storage devices, RAID storage systems, or any other medium that can be used to store the desired information and that can be accessed by a computing device. The memory 504 may be implemented as a computer-readable storage medium ("CRSM"), which may be any available physical medium that can be accessed by the processor(s) 502 to execute instructions stored in the memory 502. In one basic implementation, the CRSM may include random access memory ("RAM") and flash memory. In other implementations, the CRSM may include, but is not limited to, read-only memory ("ROM"), electrically erasable programmable read-only memory ("EEPROM"), or any other tangible medium that can be used to store desired information and that can be accessed by the processor(s) 502.
[0058] In general, the HMD 500 may include logic (e.g., software, hardware, and / or firmware, etc.) configured to implement the techniques, functions, and / or operations described herein. The computer-readable medium 504 is shown as including various modules, such as instructions, data stores, etc., that may be configured to execute on the processor(s) 502 to perform the techniques, functions, and / or operations described herein. Although several exemplary functional modules are shown as stored on the computer-readable medium 504 and executable on the processor(s) 502, the same functions may alternatively be implemented in hardware, firmware, or as a system-on-a-chip (SOC) and / or other logic.
[0059] The operating system module 506 may be configured to manage the hardware coupled within the HMD 500 for the convenience of the other modules. Additionally, in some instances, the HMD 500 may include one or more applications 106 stored in the memory 504 or otherwise accessible to the HMD 500. In this implementation, the application(s) 106 include a gaming application 510. However, the HMD 500 may include any number or type of applications and is not limited to the specific examples shown here. The gaming application 510 may be configured to initiate gameplay of a video-based interactive game (e.g., a VR game) playable by the user 102 and output frames 108 to be rendered on a display panel of the HMD 500. The compositor 114, in combination with other logic of the HMD 500, may be configured to implement techniques described herein to dynamically target rendering times of applications (e.g., applications 106) based on eye tracking.
[0060] Generally, the HMD 500 has input devices 512 and output devices 514. The input devices 512 may include control buttons. In some implementations, one or more microphones may function as input devices 512 for receiving audio input, such as user voice input. In some implementations, one or more cameras or other types of sensors (e.g., inertial measurement units (IMUs)) may function as input devices 512 for receiving gestural input, such as hand and / or head movements of the user 102. In some embodiments, additional input devices 512 may be provided in the form of a keyboard, keypad, mouse, touch screen, joystick, etc. In other embodiments, the HMD 500 may omit a keyboard, keypad, or other similar form of mechanical input. Instead, the HMD 500 may be implemented with a relatively simple form of input device 512, a network interface (wireless or wired based), a power source, and processing / memory capabilities. For example, a limited set of one or more input components (e.g., dedicated buttons for initiating configuration, powering on / off, etc.) may be used and the HMD 500 may thereafter be used. In one implementation, the input device(s) 512 may include controls such as basic volume control button(s) for increasing / decreasing the volume, as well as power and reset buttons.
[0061] The output device(s) 514 may include a display 516, which may include one or more display panels 104 (e.g., a stereo pair of display panels 104) as described herein. The output device(s) 514 may further include, without limitation, light elements (e.g., LEDs), vibrators for producing tactile sensations, speaker(s) (e.g., headphones), etc. There may also be simple light elements (e.g., LEDs) to indicate a state, such as when the power is on.
[0062] The HMD 500 may further include a wireless unit 518 coupled to the antenna 520 to facilitate wireless connection to a network. The wireless unit 518 may implement one or more of a variety of wireless technologies, such as Wi-Fi, Bluetooth, radio frequency (RF), etc. It should be appreciated that the HMD 500 may further include a physical port to communicate with a network, connected peripheral devices (including PCs, game consoles, etc.), or other wireless networks, and to facilitate a wired connection to a plug-in network device that may be part of the HMD system.
[0063] The HMD 500 may further include an optical subsystem 522 that directs light from the electronic display(s) 516 to the user's eye(s) using one or more optical elements. The optical subsystem 522 may include various types and combinations of different optical elements, including, but not limited to, apertures, lenses (e.g., Fresnel lenses, convex lenses, concave lenses, etc.), filters, etc. In some embodiments, one or more optical elements in the optical subsystem 522 may have one or more coatings, such as an anti-reflective coating. The magnification of the image light by the optical subsystem 522 allows the electronic display(s) 516 to be physically smaller, lighter, and less power-hungry than larger displays. In addition, the magnification of the image light may increase the field of view (FOV) of the displayed content (e.g., images). For example, the FOV of the displayed content is such that the displayed content is presented using nearly all (e.g., 120-150 degrees diagonal), and possibly all, of the user's FOV. AR applications may have a narrower FOV (e.g., about 40 degrees FOV). The optical subsystem 522 may be designed to correct one or more optical errors, such as, but not limited to, barrel distortion, pincushion distortion, longitudinal chromatic aberration, transverse aberration, spherical aberration, field curvature, astigmatism, etc. In some embodiments, the content provided to the electronic display(s) 516 for display is pre-distorted, and the optical subsystem 522 corrects the distortion when receiving image light from the electronic display(s) 516 generated based on the content.
[0064] The HMD 500 may further include one or more sensors 524, such as sensors used to generate motion, position, and orientation data. These sensors 524 may be or include gyroscopes, accelerometers, magnetometers, video cameras, color sensors, or other motion, position, and orientation sensors. The sensors 524 may also include secondary portions of sensors, such as a set of active or passive markers that may be viewed externally by a camera or color sensor to generate motion, position, and orientation data. For example, a VR headset may include multiple markers on its exterior, such as reflectors or lights (e.g., infrared or visible light), that when viewed by an external camera or illuminated with light (e.g., infrared or visible light), may provide one or more reference points for interpretation by the software to generate motion, position, and orientation data. The HMD 500 may include a light sensor that is sensitive to light (e.g., infrared or visible light) projected or scattered by a base station in the environment of the HMD 500.
[0065] In one example, the sensor(s) 524 may include an inertial measurement unit (IMU) 526. The IMU 526 may be an electronic device that generates calibration data based on measurement signals received from accelerometers, gyroscopes, magnetometers, and / or other sensors suitable for detecting motion, correcting errors associated with the IMU 526, or some combination thereof. Based on the measurement signals, such motion-based sensors, such as the IMU 526, may generate calibration data indicative of an estimated position of the HMD 500 relative to an initial position of the HMD 500. For example, multiple accelerometers may measure translational motion (forward / backward, up / down, left / right) and multiple gyroscopes may measure rotational motion (e.g., pitch, yaw, roll). The IMU 526 may, for example, rapidly sample the measurement signals and calculate an estimated position of the HMD 500 from the sampled data. For example, the IMU 526 may integrate measurement signals received from an accelerometer over time to estimate a velocity vector, and integrate the velocity vector over time to determine an estimated position of a reference point on the HMD 500. A reference point is a point that may be used to describe the position of the HMD 500. A reference point may generally be defined as a point in space, but in various embodiments, the reference point is defined as a point within the HMD 500 (e.g., the center of the IMU 526). Alternatively, the IMU 526 provides sampled measurement signals to an external console (or other computing device), which determines the calibration data.
[0066] The sensor 524 may operate at a relatively high frequency to provide sensor data at a high rate. For example, the sensor data may be generated at a rate of 1000 Hz (or one sensor reading every millisecond). In this manner, 1000 readings are made per second. If the sensor generates this much data at this rate (or even faster), the data set used to predict movement becomes very large, even over a relatively short period of time, such as tens of milliseconds.
[0067] As mentioned, in some embodiments, the sensor 524 may include a light sensor that is sensitive to light emitted by a base station in the environment of the HMD 500 for purposes of tracking the position and / or orientation, posture, etc. of the HMD 500 in 3D space. Calculations of position and / or orientation may be based on timing characteristics of the light pulses and the presence or absence of light detected by the sensor 524.
[0068] The HMD 500 may further include an eye tracking system 528, as described elsewhere herein as a system that generates eye tracking data. The eye tracking system 528 may include, but is not limited to, a camera or other optical sensor internal to the HMD 500 to capture image data (or information) of the user's eyes 116, and the eye tracking system 528 may use the captured data / information to determine the motion vectors, interpupillary distance, interocular distance, three-dimensional (3D) position of each eye 116 relative to the HMD 500, including the magnitude of twist and rotation (i.e., roll, pitch, and yaw) and gaze direction of each eye 116. In one example, infrared light is emitted within the HMD 500 and reflected from each eye 116. The reflected light is received or detected by a camera of the eye tracking system 528 and analyzed to extract eye rotation from changes in the infrared light reflected by each eye 116. Many methods for tracking the eyes 116 of the user 102 may be used by the eye tracking system 528. Thus, the eye tracking system 528 may track up to six degrees of freedom (i.e., 3D position, roll, pitch, and yaw) of each eye, and at least a subset of the tracked quantities may be combined from the two eyes 116 of the user 102 to estimate a point of gaze (i.e., a 3D place or location within the virtual scene where the user is looking), which may be mapped to a position(s) of the display panel(s) 104 to predict where the user 102 is looking with respect to an individual subset (e.g., a row) or a group of consecutive subsets (e.g., a group of consecutive rows) of pixels of the display panel(s) 104. For example, the eye tracking system 528 may integrate information from past measurements, measurements identifying the position of the head of the user 102, and 3D information describing the scene presented by the electronic display(s) 516. Thus, information about the position and orientation of the user's 102 eyes 116 is used to determine the point of gaze within the virtual scene presented by the HMD 500 at which the user 102 is looking, and to map that point of gaze to a position(s) on the display panel(s) 104 of the HMD 100.As mentioned above, the most recent estimate / prediction of the gaze point(s) or position(s) on the display panel(s) 104 where the user 102 is looking may be used as a proxy to predict where the user 102 will look during future illumination periods 120 for a given frame 108. However, other techniques for predicting where the user 102 will look in the future may be utilized, such as utilizing motion vectors to predict eye movement trajectories.
[0069] The HMD 500 may further include a head tracking system 530. The head tracking system 530 may utilize one or more of the sensors 524 to track head movement, including head rotation, of the user 102, as described above. For example, the head tracking system 530 may track up to six degrees of freedom (i.e., 3D position, roll, pitch, and yaw) of the HMD 500. These calculations may be performed at each frame 108 in a sequence of frames 108 so that the application 106 can determine how to render a scene in the next frame 108 depending on the head position and orientation. In some embodiments, the head tracking system 530 and / or the compositor 114 using the head tracking system 530 are configured to predict future poses (position and / or orientation) of the HMD 500 based on current and / or historical data and / or based on known / implied scan-out latencies of individual subsets of pixels in a display system implementing a rolling band display drive technique, as described herein. This is because the application is required to render a frame 108 before the user 102 actually sees the light (and therefore the image) on the display(s) 516. Thus, the next frame 108 may be rendered based on a future prediction of the head position and / or orientation made at an earlier time, which may be in the range of approximately 12-30 milliseconds (ms) prior to rendering the frame 108, depending on the target rendering time 200 determined for the given frame 108. The rotational data provided by the head tracking system 530 may be used to determine both the direction of rotation of the HMD 500 and the amount of rotation of the HMD 500, in any suitable units of measurement. For example, the direction of rotation may be output simply in terms of positive or negative horizontal and positive or negative vertical directions corresponding to left, right, up, and down. The amount of rotation may be in units of degrees, radians, etc. An angular velocity may be calculated to determine the rate of rotation of the HMD 500.
[0070] Although the present subject matter has been described in language specific to structural features, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features described. Rather, the specific features are disclosed as exemplary forms of implementing the claims. The invention as originally claimed in the present application is set forth below. [1] A head mounted display (HMD) system, comprising: an HMD including a display panel having a pixel array; An eye tracking system; A head tracking system; A processor; When executed by the processor, the HMD system includes: predicting, based at least in part on eye tracking data generated by the eye tracking system, locations on the display panel where a user wearing the HMD will be looking during an illumination period, such that respective subsets of pixels are illuminated in sequence over the illumination period to present an image on the display panel; determining a time during the illumination period when a respective subset of the pixels corresponding to the location on the display panel is illuminated; predicting possible poses of the HMD at said time based at least in part on head tracking data generated by the head tracking system; sending pose data indicative of said pose to an application for rendering a frame corresponding to said image; receiving pixel data for the frame from the application; applying a reprojection adjustment to the pixel data for the frame to obtain modified pixel data associated with the reprojected frame; and a memory storing computer-executable instructions for causing the image to be presented on the display panel based at least in part on the modified pixel data, wherein the respective subsets of pixels are illuminated in the sequence over the illumination period during presentation of the image on the display panel. [2] the pixels of the pixel array are arranged in rows and columns; the respective subsets of pixels correspond to respective rows of the pixels; 2. The HMD system of claim 1, wherein the sequence in which the individual rows of pixels are illuminated is from top to bottom. [3] The HMD system of [1], wherein predicting the position is further based on a field of view (FOV) parameter of the HMD. [4] applying the reprojection adjustment to the pixel data to obtain modified pixel data; predicting a plurality of updated poses of the HMD a plurality of times within the illumination period during which the respective subsets of pixels may be illuminated based at least in part on second head tracking data generated by the head tracking system; calculating a plurality of adjustments based at least in part on a comparison between the pose and each of the updated poses; and modifying the pixel data for the frame based at least in part on the plurality of adjustments to obtain the modified pixel data associated with the reprojected frame. [5] The plurality of adjustments include: a first adjustment of a first respective subset of pixels adjacent to the respective subset of pixels corresponding to the location on the display panel; a second adjusting of a second respective subset of the pixels that is not adjacent to the respective subset of the pixels corresponding to the location on the display panel; The HMD system of [4], wherein the first adjustment is less than the second adjustment. [6] the display panel is a first display panel of a pair of display panels including the first display panel and a second display panel; 2. The HMD system of claim 1, wherein the image is a first image of a pair of images presented on the pair of display panels based at least in part on the pixel data. [7] 1. A method implemented by a head mounted display (HMD) system including a display panel having a pixel array, comprising: predicting, based at least in part on eye tracking data generated by an eye tracking system of the HMD system, locations on the display panel where a user wearing an HMD will be looking during an illumination period, where respective subsets of the pixels will be illuminated in sequence over the illumination period to present an image on the display panel; determining a time within the illumination period when a respective subset of the pixels corresponding to the location on the display panel is illuminated; predicting possible poses of the HMD at said time based at least in part on head tracking data generated by a head tracking system of the HMD system; sending pose data indicative of the pose to an application for rendering a frame corresponding to the image; receiving pixel data for the frame from the application; applying a reprojection adjustment to the pixel data for the frame to obtain modified pixel data associated with a reprojected frame; presenting the image on the display panel based at least in part on the modified pixel data, wherein the respective subsets of the pixels are illuminated in the sequence over the illumination period during presentation of the image on the display panel. [8] applying the reprojection adjustment to the pixel data for the frame to obtain the modified pixel data associated with the reprojected frame; predicting a plurality of updated poses of the HMD a plurality of times within the illumination period during which the respective subsets of pixels may be illuminated based at least in part on second head tracking data generated by the head tracking system; calculating a plurality of adjustments based at least in part on a comparison between the pose and each of the updated poses; and modifying the pixel data for the frame based at least in part on the plurality of adjustments to obtain the modified pixel data associated with the reprojected frame. [9] The plurality of adjustments include: a first adjustment of a first respective subset of pixels adjacent to the respective subset of pixels corresponding to the location on the display panel; a second adjusting of a second respective subset of the pixels that is not adjacent to the respective subset of the pixels corresponding to the location on the display panel; The method according to [8], wherein the first adjustment is less than the second adjustment.
[10] the eye tracking data indicates that the user is looking at the location of the display panel; The method of claim 7, wherein the prediction of the location on the display panel where the user will be looking during the illumination period includes using the location on the display panel where the user is looking as a proxy for predicting where on the display panel the user will be looking during the illumination period.
[11] the pixels of the pixel array are arranged in rows and columns; the respective subsets of pixels correspond to at least one of respective rows of the pixels or respective groups of consecutive rows of the pixels; The method of [7], wherein the sequence in which the respective subsets of pixels are illuminated is from top to bottom.
[12] The method of claim 7, wherein the eye tracking data indicates a direction of the user's eyes and the position is predicted as the closest subset of pixels to the direction of the user's eyes.
[13] the display panel is a first display panel of a pair of display panels including the first display panel and a second display panel; The method of any one of claims 1 to 7, wherein the image is a first image of a pair of images presented on the pair of display panels based at least in part on the pixel data.
[14] The method described in [7], wherein the HMD is a virtual reality (VR) headset.
[15] The method of any one of claims 1 to 7, wherein predicting the position is further based on a field of view (FOV) parameter of the HMD.
[16] A head mounted display (HMD) system, comprising: an HMD including a display panel having a pixel array; An eye tracking system; A head tracking system; A processor; When executed by the processor, the HMD system includes: predicting, based at least in part on eye tracking data generated by the eye tracking system, a location of a point of gaze at which a user wearing the HMD will be looking during an illumination period, such that respective subsets of the pixels are illuminated in sequence over the illumination period to present an image on the display panel; determining a respective subset of said pixels corresponding to said point of regard; predicting a pose that the HMD may assume at that time, within the illumination period, at the respective subset of the pixels, based at least in part on head tracking data generated by the head tracking system; sending pose data indicative of said pose to an application for rendering a frame corresponding to said image; receiving pixel data for the frame from the application; applying a reprojection adjustment to the pixel data for the frame to obtain modified pixel data associated with the reprojected frame; and a memory storing computer-executable instructions for causing the image to be presented on the display panel based at least in part on the modified pixel data, wherein the respective subsets of pixels are illuminated in the sequence over the illumination period during presentation of the image on the display panel.
[17] applying the reprojection adjustment to the pixel data of the frame to obtain the modified pixel data associated with the reprojected frame; predicting a plurality of updated poses of the HMD a plurality of times within the illumination period during which the respective subsets of pixels may be illuminated based at least in part on second head tracking data generated by the head tracking system; calculating a plurality of adjustments based at least in part on a comparison between the pose and each of the updated poses; and modifying the pixel data for the frame based at least in part on the plurality of adjustments to obtain the modified pixel data associated with the reprojected frame.
[18] the pixels of the pixel array are arranged in rows and columns; the respective subsets of pixels correspond to at least one of respective rows of the pixels or respective groups of consecutive rows of the pixels; the sequence in which the respective subsets of pixels are illuminated is from top to bottom; The HMD system of
[16] , wherein determining the respective subset of pixels corresponding to the gaze point includes estimating at least one of a respective row of the pixels or a respective group of consecutive rows of the pixels that the user will be viewing.
[19] The HMD system according to
[16] , wherein the HMD is a virtual reality (VR) headset.
[20] the eye tracking data is indicative of the point of gaze of the user;
[16] The HMD system of claim 16, wherein predicting where the user will be looking during the illumination period includes using the gaze point where the user will be looking as a proxy for predicting where the user will be looking during the illumination period.
Claims
1. A head mounted display (HMD) system, comprising: an HMD including a display panel having an array of pixels; An eye tracking system; A head tracking system; A processor; and a memory storing processor-executable instructions that, when executed by the processor, cause the HMD system to perform the following operations: predicting, based at least in part on eye tracking data generated by the eye tracking system, a location on the display panel where a user wearing the HMD will be looking during an illumination period, and respective subsets of the pixels are illuminated in sequence over the illumination period to present an image on the display panel; determining a time within the illumination period at which a respective subset of the pixels corresponding to the location on the display panel will be illuminated; predicting a pose that the HMD will assume at said time based at least in part on head tracking data generated by the head tracking system; sending pose data indicative of the pose to an application for rendering a frame corresponding to the image; receiving pixel data for the frame from the application; applying a reprojection adjustment to modify the pixel data for the frame based on a plurality of updated poses of the HMD for a plurality of times within the illumination period at which the respective subsets of pixels will be illuminated to obtain modified pixel data associated with the reprojected frame; The HMD system causes the image to be presented on the display panel based at least in part on the modified pixel data, and the respective subsets of the pixels are illuminated in the sequence over the illumination period during presentation of the image on the display panel.
2. the pixels of the array of pixels are arranged in rows and columns; the respective subsets of pixels correspond to respective rows of the pixels; The HMD system of claim 1 , wherein the order in which the individual rows of pixels are illuminated is from top to bottom.
3. The HMD system of claim 1 , wherein predicting the position is further based on a field of view (FOV) parameter of the HMD.
4. applying the reprojection adjustment to the pixel data to obtain modified pixel data; predicting the plurality of updated poses based at least in part on second head tracking data generated by the head tracking system; and calculating a plurality of adjustments based at least in part on a comparison between the pose and each of the plurality of updated poses; and modifying the pixel data for the frame based at least in part on the plurality of adjustments to obtain the modified pixel data associated with the reprojected frame.
5. The plurality of adjustments include: a first adjustment of a first respective subset of the pixels adjacent to the respective subset of the pixels corresponding to the location on the display panel; a second adjusting of a second respective subset of the pixels that is not adjacent to the respective subset of the pixels corresponding to the location on the display panel; The HMD system of claim 4 , wherein an amount adjusted by the first adjustment is less than an amount adjusted by the second adjustment.
6. the display panel is a first display panel of a pair of display panels including a first display panel and a second display panel; The HMD system of claim 1 , wherein the image is a first image of a pair of images presented on the pair of display panels based at least in part on the pixel data.
7. 1. A method implemented by a head mounted display (HMD) system including a display panel having an array of pixels, comprising: predicting, based at least in part on eye tracking data generated by an eye tracking system of the HMD system, locations on the display panel where a user wearing the HMD will be looking during an illumination period, and respective subsets of the pixels are illuminated in sequence over the illumination period to present an image on the display panel; determining a time within the illumination period when the respective subset of pixels corresponding to the location on the display panel will be illuminated; predicting a pose that the HMD will assume at said time based at least in part on head tracking data generated by a head tracking system of the HMD system; sending pose data indicative of the pose to an application for rendering a frame corresponding to the image; receiving pixel data for the frame from the application; applying a reprojection adjustment to modify the pixel data for a reprojected frame based on a plurality of updated poses of the HMD for a plurality of times within the illumination period at which the respective subsets of pixels will be illuminated to obtain modified pixel data associated with the reprojected frame; presenting the image on the display panel based at least in part on the modified pixel data, wherein the respective subsets of the pixels are illuminated in the sequence over the illumination period during presentation of the image on the display panel.
8. applying the reprojection adjustment to the pixel data for the frame to obtain the modified pixel data associated with the reprojected frame; predicting the plurality of updated poses based at least in part on second head tracking data generated by the head tracking system; and calculating a plurality of adjustments based at least in part on a comparison between the pose and each of the plurality of updated poses; and modifying the pixel data for the frame based at least in part on the plurality of adjustments to obtain the modified pixel data associated with the reprojected frame.
9. The plurality of adjustments include: a first adjustment of a first respective subset of the pixels adjacent to the respective subset of the pixels corresponding to the location on the display panel; a second adjusting of a second respective subset of the pixels that is not adjacent to the respective subset of the pixels corresponding to the location on the display panel; The method of claim 8 , wherein the amount adjusted by the first adjustment is less than the amount adjusted by the second adjustment.
10. the eye tracking data indicates that the user is looking at the location of the display panel; 8. The method of claim 7, wherein the prediction of the location on the display panel where the user will be looking during the illumination period includes using the location on the display panel where the user is looking as a proxy for predicting where on the display panel the user will be looking during the illumination period.
11. the pixels of the array of pixels are arranged in rows and columns; the respective subsets of pixels correspond to at least one of respective rows of the pixels or respective groups of consecutive rows of the pixels; The method of claim 7 , wherein the order in which the respective subsets of pixels are illuminated is from top to bottom.
12. The method of claim 7 , wherein the eye tracking data indicates a direction of the user's eyes, and the location is predicted as a closest subset of pixels relative to the direction of the user's eyes.
13. the display panel is a first display panel of a pair of display panels including a first display panel and a second display panel; 8. The method of claim 7, wherein the image is a first image of a pair of images presented on the pair of display panels based at least in part on the pixel data.
14. The method of claim 7 , wherein the HMD is a virtual reality (VR) headset.
15. The method of claim 7 , wherein predicting the position is further based on a field of view (FOV) parameter of the HMD.
16. A head mounted display (HMD) system, comprising: an HMD including a display panel having an array of pixels; An eye tracking system; A head tracking system; A processor; and a memory storing processor-executable instructions that, when executed by the processor, cause the HMD system to perform the following operations: predicting a point of gaze at which a user wearing the HMD will be looking during an illumination period based at least in part on eye tracking data generated by the eye tracking system, and respective subsets of the pixels are illuminated in sequence over the illumination period to present an image on the display panel; determining a respective subset of said pixels corresponding to said point of regard; predicting, based at least in part on head tracking data generated by the head tracking system, a pose that the HMD will assume at a time within the illumination period that the respective subset of pixels will be illuminated; sending pose data indicative of said pose to an application for rendering a frame corresponding to said image; receiving pixel data for the frame from the application; applying a reprojection adjustment to modify the pixel data for the frame based on a plurality of updated poses of the HMD for a plurality of times within the illumination period at which the respective subsets of pixels will be illuminated to obtain modified pixel data associated with the reprojected frame; The HMD system causes the image to be presented on the display panel based at least in part on the modified pixel data, and the respective subsets of the pixels are illuminated in the sequence over the illumination period during presentation of the image on the display panel.
17. applying the reprojection adjustment to the pixel data for the frame to obtain the modified pixel data associated with the reprojected frame; predicting the plurality of updated poses based at least in part on second head tracking data generated by the head tracking system; and calculating a plurality of adjustments based at least in part on a comparison between the pose and each of the plurality of updated poses; and modifying the pixel data for the frame based at least in part on the plurality of adjustments to obtain the modified pixel data associated with the reprojected frame.
18. the pixels of the array of pixels are arranged in rows and columns; the respective subsets of pixels correspond to at least one of respective rows of the pixels or respective groups of consecutive rows of the pixels; the order in which the respective subsets of pixels are illuminated is from top to bottom; 17. The HMD system of claim 16, wherein determining the respective subset of pixels corresponding to the point of gaze includes estimating at least one of a respective row of the pixels or a respective group of consecutive rows of the pixels at which the user will be viewing.
19. The HMD system of claim 16 , wherein the HMD is a virtual reality (VR) headset.
20. the eye tracking data is indicative of the point of gaze of the user; 17. The HMD system of claim 16, wherein predicting the point of gaze at which the user will be looking during the illumination period includes using the point of gaze at which the user is looking as a proxy for predicting where the user will be looking during the illumination period.
Citation Information
Patent Citations
Information processing device and image generation method
JP2017097122A
Frame Projection For Augmented Reality Environments
US20170213388A1
