The invention is directed towards image and video rendering. Specifically, the invention is directed towards depth of field properties for cameras in applications that render images and/or videos.
Digital graphic design, video editing, and media editing applications provide designers and artists with tools to create much of the media seen today through various media outlets (television, movies, Internet content, etc.). These tools allow designers the ability to generate, compose, composite, and animate images and videos in a virtual three-dimensional space.
A computer simulating the three-dimensional space is able to produce (i.e., render) an image of the space as seen from a particular point in the space, looking in a particular direction, with a particular field of view. Some applications define a virtual camera at the particular point that is oriented in the particular direction and has properties that define the particular field of view. Such a virtual camera can be moved around the three-dimensional space, re-oriented, and may have various other properties that can be adjusted. The virtual camera is a user-interface tool that collectively represents the set of properties that define the direction, angle of view, and other attributes for rendering a scene from a particular point of view in a particular direction.
Virtual cameras have generally been defined as having a particular focal plane, a distance at which objects will appear in focus when the view from the camera is rendered. However, users may desire the ability to move the apparent focal plane of the virtual camera closer to or further from the camera in the context of a scene laid out in a three-dimensional space within an application. Users may also want to be able to render in focus a range of distances and expand or contract this range within the context of a scene. Accordingly, there is a need in the art for virtual cameras with highly modifiable focal properties. Furthermore, there is a need for user interface tools to enable easy modification of these focal properties.
Some embodiments of the invention provide novel user interface tools for rendering a particular region in a media-editing application from a particular location, in a particular direction, within a particular field of view. The media-editing application of some embodiments provides a set of tools for a user to define a three-dimensional space that includes two- and three-dimensional media objects (e.g., images, text, video clips, and other such objects). This application further provides a set of user interface tools for viewing and controlling the focal properties for rendering a particular region within the created space from a particular location, in a particular direction, within a particular field of view.
This application further provides a user interface tool, referred to in the discussion below as a virtual camera, to represent the location, direction, etc. from which the space is rendered. The virtual camera of some embodiments has a region of focus that is a two-dimensional region (e.g., a plane) or three-dimensional region (e.g., a volume) within the region rendered by the virtual camera. In these embodiments, objects located in the region of focus are rendered in focus by the virtual camera while special effects (e.g., blurring effects, coloring effects, etc.) are applied to objects outside the region of focus but within the region rendered by the virtual camera.
Some embodiments provide novel tools for viewing and controlling focal properties of the virtual camera, which can render a region from a particular location, in a particular direction, within a particular field of view. In some embodiments, the modifiable focal properties include the size of the region of focus, its distance from the camera, and the amount of effects applied to objects not within the region of focus. Some embodiments display the region of focus within the three-dimensional space of the media-editing application, enabling a user to modify the region of focus of a virtual camera within the context of a scene rendered by the virtual camera.
Specific modifiable parameters in some embodiments are an aperture, a focus offset, a near focus, and a far focus. The aperture parameter of some embodiments enables a user to affect the extent to which special effects (e.g., blurring) are applied to objects not in the region of focus. The focus offset parameter of some embodiments allows a user to move the region of focus closer to or further from the virtual camera. The near focus and far focus parameters of some embodiments allow a user to modify the size of the region of focus such that objects are in focus at more than one distance. Some embodiments also allow modification of other focal properties.
Various embodiments provide various user interface tools, or combinations of user interface tools, for adjusting the depth of field parameters. Sliders are one example of a user interface tool for modifying the aperture, focus offset, near focus, and far focus, as well as other parameters. Another type of user interface tool is one that provides for direct numerical input of the parameters (e.g., as a number of pixels, a percentage, etc.), either in conjunction with sliders or separately. Some embodiments provide moveable planes within the three-dimensional space of the media-editing application representing the focus offset, near focus, and far focus.
In some embodiments, the planes that represent the focus offset, near focus, and far focus move whenever a user modifies the parameters with a slider, direct numerical input, or other user interface tool. In some embodiments, a user can select and drag the planes directly in order to modify the depth of field parameters. The planes have handles that are used for dragging the planes in some embodiments. Some embodiments provide only one of the described controls for modifying the depth of field parameters, while other embodiments provide more than one of the described controls, or other controls that are not mentioned.
Some embodiments enable a user to set the depth of field properties of a virtual camera to change over a determined duration. A user can input (via any of the methods described above) a starting set of depth of field properties and a finishing set of depth of field properties, as well as a duration (e.g., length of time, number of frames of video, etc.) over which the parameters will change. When the scene is rendered from the point of view of the virtual camera, the depth of field properties change over the determined duration, from the starting properties to the finishing properties.
Some embodiments enable a user to select a target object to be brought into focus over the set duration. The user, in some embodiments, can select the target object, the duration, and the method of transition (e.g., constant movement of region of focus, accelerated movement of region of focus, etc.). When the scene is rendered, the region of focus will move from an initial distance from the camera to the distance of the target object from the camera, such that the target object is in focus at the end of the set duration.
The novel features of the invention are set forth in the appended claims. However, for purpose of explanation, several embodiments of the invention are set forth in the following figures.
In the following description, numerous details are set forth for purpose of explanation. However, one of ordinary skill in the art will realize that the invention may be practiced without the use of these specific details.
I. Overview
Some embodiments of the invention provide novel user interface tools for rendering a particular region in a media-editing (e.g., compositing) application from a particular location, in a particular direction, within a particular field of view. The media-editing application of some embodiments provides a set of tools for a user to define a three-dimensional space that includes two- and three-dimensional media objects (e.g., images, text, video clips, and other such objects). This application further provides a user interface tool, referred to in the discussion below as a virtual camera, to represent the location, direction, etc. from which the space is rendered.
This application further provides a user interface tool, referred to in the discussion below as a virtual camera, to represent the location, direction, etc. from which the space is rendered. The virtual camera of some embodiments has a region of focus that is a two-dimensional region (e.g., a plane) or three-dimensional region (e.g., a volume) within the region rendered by the virtual camera. In these embodiments, objects located in the region of focus are rendered in focus by the virtual camera while special effects (e.g., blurring effects, coloring effects, etc.) are applied to objects outside the region of focus but within the region rendered by the virtual camera.
Some embodiments provide novel tools for viewing and controlling focal properties of the virtual camera, which can render a region from a particular location, in a particular direction, within a particular field of view. In some embodiments, the modifiable focal properties include the size of the region of focus, its distance from the camera, and the amount of effects applied to objects not within the region of focus. Some embodiments display the region of focus within the three-dimensional space of the media-editing application, enabling a user to modify the region of focus of a virtual camera within the context of a scene rendered by the virtual camera.
Specific modifiable depth of field parameters in some embodiments are an aperture, a focus offset, a near focus, and a far focus. The aperture parameter of some embodiments enables a user to affect the extent to which special effects (e.g., blurring) are applied to objects not in the region of focus. The focus offset parameter of some embodiments allows a user to move the region of focus closer to or further from the virtual camera. The near focus and far focus parameters of some embodiments allow a user to modify the size of the region of focus such that objects are in focus at more than one distance. Some embodiments also allow modification of other depth of field parameters.
Some embodiments provide a display area that displays a virtual camera, the field of view of the virtual camera, and any objects to be rendered by the virtual camera. Some such embodiments provide planes in the field of view that represent the focus offset, near focus, and far focus parameters.
Various embodiments provide various user interface tools, or combinations of user interface tools, for adjusting the depth of field parameters. Sliders are one example of a user interface tool for modifying the aperture, focus offset, near focus, and far focus, as well as other parameters. Another type of user interface tool is one that provides for direct numerical input of the parameters (e.g., as a number of pixels, a percentage, etc.), either in conjunction with sliders or separately.
In some embodiments, the planes mentioned above that represent the focus offset, near focus, and far focus move whenever a user modifies the parameters with a slider, direct numerical input, or other user interface tool. In some embodiments, a user can select and drag the planes directly in order to modify the depth of field parameters. The planes have handles that are used for dragging the planes in some embodiments. Some embodiments provide only one of the described controls for modifying the depth of field parameters, while other embodiments provide more than one of the described controls, or other controls that are not mentioned.
Some embodiments enable a user to set the depth of field properties of a virtual camera to change over a specific duration. A user can input (via any of the methods described above) a starting set of depth of field properties and a finishing set of depth of field properties, as well as a duration (e.g., length of time, number of frames of video, etc.) over which the parameters will change. When the scene is rendered from the point of view of the virtual camera, the depth of field properties change over the determined duration, from the starting properties to the finishing properties. For example, a user could set the parameters such that the focus offset would move from the distance shown in
Some embodiments enable a user to select a target object to be brought into focus over the set duration. The user, in some embodiments, can select the target object, the duration, and the method of transition (e.g., constant movement of region of focus, accelerated movement of region of focus, etc.). When rendered, the region of focus will move from an initial distance from the camera to the distance of the target object from the camera, such that the target object is in focus at the end of the set duration.
II. Compositing Application
The primary display area 405 includes objects 435, 440, and 445, as well as camera 450. Each of the objects 435, 440, and 445 are in the field of view of camera 450. Each of the objects 435-445 has a corresponding entry in the object selection area 410, as does the camera 450. The primary display area 405 is displaying a perspective view of the scene in
The first set of camera controls 415 provides controls for camera 450. These controls allow a user to define the camera type and modify the angle of view for camera 450, as well as controls to move and rotate the camera 450 within the scene shown in the display area 405. The first set of camera controls also displays the focal length of the camera (i.e., the focal distance, the distance from the camera at which, without the modification of any depth of field parameters, the camera will render objects in focus.
The second set of camera controls 420 also provides controls for camera 450. Some of the controls 420 provide the same abilities to a user as controls 415 (such as defining the camera type or modifying the angle of view). Furthermore, the second set of camera controls 420 allows a user to modify depth of field properties of the camera 450 with sliders and numerical input boxes 421-424. Sliders 421-424 will be described in greater detail in Section III below. Some embodiments use different user interface items for controls 420 rather than slider tools or direct numerical input.
Above the second set of camera controls 420 is a preview display 455 of some embodiments. The preview display 455 displays the view through the camera 450. As objects 435-445 are moved in the primary display area, or properties (e.g., depth of field parameters) of the camera 450 are changed, the appearance of the preview display 455 will change accordingly.
The set of control icons 425 includes numerous icons for performing various functions within the compositing application. The set of control icons 425 includes icon 426, which allows a user to define a new camera (e.g., camera 450). Icon 427 allows a user to define a new behavior for an object, camera, or other item. In some embodiments, a behavior is a change in some property (e.g., position, orientation, etc.) of a camera or object over a period of time. Some embodiments allow a user to set behaviors of a camera relating to the camera's depth of field (e.g., bringing an object into focus).
III. Depth of Field Rendering
Some embodiments allow users to modify the depth of field parameters of virtual cameras in a compositing application. Doing so enables the user to adjust how objects in the field of view of a virtual camera appear when rendered (i.e., how in focus or blurred an object appears when rendered). How an object appears when rendered by a virtual camera is affected by the focal distance of the virtual camera and how objects that are not at the focal distance of the camera are blurred.
After determining the image to render, the process 500 determines (at 505) the depth of field parameters for the virtual camera. In some embodiments, the depth of field parameters are specific to the particular image being rendered. For example, the parameters may change throughout a scene of a video that includes of a number of images, and the parameters must be determined for each particular image. In some embodiments, the image may be rendered as the user edits the depth of field parameters (or other properties, such as the location or orientation of the virtual camera rendering the image). The depth of field parameters of some embodiments include the region of focus (i.e., the distance or distances at which objects will be rendered as in focus), and how the focus falls off for objects not at such distances. Such parameters are input by users through a variety of user interface tools in some embodiments.
In some embodiments, the determination of the depth of field parameters includes calculating the circle of confusion at all distances from the camera. The circle of confusion is the size that a point appears as when rendered. The compositing application of some embodiments, when rendering an image, displays each point as a disk, the size of which is dependent on how blurred the point is to appear. Points that are further from the apparent focal plane (i.e., the distance from the camera at which objects are rendered in focus) of the virtual camera will have a larger circle of confusion.
After determining the depth of field parameters, the process 500 determines (at 510) the blurring algorithm to be used. Some embodiments use an algorithm that applies a defocus filter to a disk the size of the circle of confusion. Some embodiments use algorithms that are less computationally intensive than a defocus disk, such as a Gaussian filter or other algorithms. In some embodiments, a user may select between different blurring algorithms for rendering an image.
The process 500 then selects (at 515) a pixel in the image to be rendered. Some embodiments start with a corner pixel, and traverse across an entire row of pixels before moving to a second row. Other embodiments start with a corner pixel, and traverse down an entire column before moving to a second column. Other embodiments use other algorithms for traversing through all the pixels in an image.
Once a pixel is selected, the process 500 determines (at 520) the distance of the pixel from the virtual camera. Each pixel effectively represents a ray emanating from the virtual camera at a particular angle (i.e., x degrees off of horizontal and y degrees off of vertical) or small range of angles. The distance at which the ray would first intersect an object is the distance of the pixel. The process 500 then calculates (at 525) the blurring around the pixel, based on the size of the circle of confusion at the pixel's distance and the blurring algorithm determined at 510.
The process 500 then determines (at 530) whether there are more pixels for which the distance and blurring have not been calculated. If no more pixels remain, the process 500 proceeds to 535 to render the image. If more pixels remain, the process returns to 515 and repeats 515 through 530 until all pixels for the current image have been selected.
After rendering the image, the process 500 determines (at 540) whether to continue rendering. If the process determines to continue rendering, the process moves to 545 to determine the next image. For example, if a user is playing back a scene, then the next frame in the scene is the next image. After determining the next image to render, the process moves to 505 and repeats 505 through 535 to render the new image.
If the process 500 determines (at 540) that no more images are to be rendered, the process ends. For example, if the most recently rendered image is the last frame in a video, the process would not have any further images to render. Also, a user could select a user interface item (e.g., a stop button) that would cause the process to stop rendering images.
A. User Interface Tools for Modifying Depth of Field Parameters
In some embodiments, the depth of field parameters of a virtual camera can be modified by one or more sets of user interface tools. As discussed above, the depth of field parameters affect the extent to which objects in the field of view of the virtual camera will appear in focus when rendered by the virtual camera.
The selection of a virtual camera also causes the display of viewing frustum 805. Viewing frustum 805 shows a user what is in the field of view of the virtual camera 705. Plane 810 illustrates the focal plane of the camera 705 (i.e., the plane at which objects will be rendered in focus). The focal plane is the entire region of focus at this point.
Selection of the virtual camera 705 also causes the display of camera controls 825 in some embodiments. The camera controls of some embodiments include depth of field controls 830.
Slider 832 controls the focus offset. In some embodiments, the focus offset measures the distance from the focal plane of the camera (i.e., the distance at which objects are rendered in focus in the absence of modification of the depth of field properties of the camera) to the apparent focal plane. In other words, the focus offset allows the user to modify the apparent focal plane of the virtual camera without modifying any other properties of the camera. Slider 833 controls the near focus plane. Moving slider 833 to the right causes the near focus plane to move closer to the camera. The near focus plane, in some embodiments, represents the start of the region of focus (i.e., the distance closest to the camera at which objects will be rendered as completely in focus). Slider 834 controls the far focus plane. Moving slider 834 to the right causes the far focus plane to move further from the camera. The far focus plane, in some embodiments, represents the end of the region of focus (i.e., the distance furthest from the camera at which objects will be rendered completely in focus).
In some embodiments (e.g., the depicted embodiments), next to each of the sliders 831-834 is a numerical input tool. Moving a slider will affect the corresponding number in some embodiments. Furthermore, in some embodiments, the number can be changed directly, either by typing the desired number or by selecting the right and left arrows on either side of the number to increase or decrease the number. Directly changing the number will cause the corresponding slider to move accordingly in some embodiments. Also, directly changing the number will, if appropriate, cause the focal plane, near focus plane, or far focus plane to move in the display area.
The number associated with slider 831 is a measurement, in some embodiments, of the aperture of the virtual camera. This measurement is given in millimeters in some embodiments. The focus offset measurement, associated with slider 832, is a distance in pixels from the focus offset in some embodiments. The focus offset is set to zero when the slider is centered (as in
For the near and far focus numerical measurements associated with sliders 833 and 834, some embodiments use percentages of the foreground and background. Some embodiments define the foreground as the area in the field of view between the near plane of the camera frustum and the apparent focal plane. Similarly, some embodiments define the background as the area in the field of view between the apparent focal plane and the far plane of the camera frustum. Thus, if the near focus slider is set to 0%, none of the area in front of the focal plane will be rendered in focus. If the near focus slider is set to 100%, the entire foreground will be rendered in focus. Similarly, if the far focus slider is set to 100%, the entire background will be rendered in focus.
Some embodiments use only one slider to move both the near and far focus sliders. In some embodiments, this slider measures a percentage of the background/foreground. Other embodiments use a single slider that directly measures a distance (e.g., in units such as pixels) the near and far focus planes should move, such that the two planes are always equidistant from the apparent focal plane. Similarly, some embodiments use two sliders, as is shown in
In
In some embodiments, the focus offset plane 1132 can only be moved so that it stays in between the near and far focus planes 1133 and 1134. However, in other embodiments, the focus offset plane 1132 can be moved outside the range defined by the near and far focus planes 1133 and 1134. When the focus offset plane is moved even with either the near or far focus plane, the near or far focus plane disappears and the focus offset plane can continue to move in that direction. In some such embodiments, in which the near and far focus are defined by percentages, moving the focus offset plane causes the numerical percentages and sliders for the near and far focus planes to change such that the near and far focus planes remain static. In other embodiments that define the near and far focus planes with percentages, moving the focus offset plane causes the near and far focus planes to move such that the numerical percentages and sliders for the near and far focus planes remain static.
The compositing application of some embodiments, rather than displaying the focal offset, near focus, and far focus planes in the display area, displays handles along the camera frustum.
Some embodiments incorporate the handles shown in
B. Rendering Changes in Depth of Field Parameters Over Time
Some embodiments enable a user to set the depth of field parameters of a virtual camera to change over a determined duration. A user can input a starting set of depth of field parameters and a finishing set of depth of field parameters, as well as a duration (e.g., length of time, number of frames of video, etc.) over which the parameters will change. In some embodiments, the user can input the starting and finishing sets of depth of field parameters with the user interface items (sliders, dragging planes or handles along the camera frustum, numerical input) described above.
When the scene portrayed by the virtual camera is rendered, the depth of field parameters change over the determined duration, from the starting parameters to the finishing parameters. For example, a user could set the parameters such that the focus offset and near and far focus would start as shown in
Some embodiments enable a user to select a target object to be brought into focus over a set duration. The user, in some embodiments, can select the target object, the duration, and the method of transition (e.g., constant movement of focus offset, accelerated movement of focus offset, etc.). When rendered, the apparent focal distance of the camera (i.e., the distance at which objects are in focus) will move from an initial distance to the distance of the target object, such that the target object is in focus at the end of the set duration.
After receiving the selection of a focus behavior for a particular virtual camera, the process 1900 provides (at 1910) options for the focus behavior.
Selecting a focus behavior also causes the provision of an object 2030 for the focus behavior in the object selection area 2025. The focus behavior object 2030 is a sub-object of the camera with which it is associated. In some embodiments, after initially entering settings for the focus behavior, a user can select the focus behavior object 2030 in order to bring up the behavior controls 2015 and 2020 so that the settings can be adjusted.
At 1915, the process 1900 receives a selection of a target object.
In some embodiments, the target object may be either within the field of view of the camera or not within the field of view of the camera. If the object is not within the field of view of the camera, then in some embodiments, the behavior will move the focal plane to the distance of the target object. Some embodiments do not allow the target object to be out of the field of view of the camera. Other embodiments allow the target object to be out of the field of view, but rotate the camera during the behavior so that the object is within the field of view.
At 1920, the process receives a duration for the behavior. Different embodiments provide different user interface tools for a user to set the duration. In some embodiments, a window pops up when a user selects a focus behavior, asking the user to input a duration for the behavior. In some embodiments, a user adjusts timeline 2035 located below the display area to set the duration for the behavior. In
At 1925, the process receives a selection of transition options. In some embodiments, these are the transition time and transition method. In
In the process 1900, the process receives a selection of a target object, then a duration for the behavior, then the selection of transition options. In some embodiments, the order in which these are received is different. For instance, in some embodiments a user will input the duration before selecting a target object, or will input the transition options prior to either inputting the duration or selecting the target object. Furthermore, in some embodiments, the user can edit these options afterwards to redefine the behavior. For example, a user can modify the transition method if, after rendering the scene that includes the behavior, the user decides that the focal offset should move in a different way from the initial position to the target object. Some embodiments even allow a user to modify the transition options while rendering the scene.
In some embodiments, a user can render a scene including a focus behavior (e.g., by clicking on the play button 2045). Some embodiments render the entire scene, even if the behavior has a duration less than the length of the time. Some embodiments also enable a user to only render the scene for the duration of the behavior rather than for the length of the entire scene (e.g., with a play button specific to the behavior timeline 2035).
While the described embodiments uses a behavior to move the focus offset (apparent focal plane) to a target object, some embodiments allow for other behaviors to be specified. For example, in some embodiments, an object can be selected such that the object will be brought to the focal plane of a virtual camera over a set duration. Some embodiments allow a user to specify a behavior that moves the near or far focus plane such that a target object is brought into the region of focus.
IV. Software Architecture
In some embodiments, the compositing application described above is implemented as a set of modules.
In some embodiments, as illustrated, the cursor driver and/or display module are part of an operating system 2730 even when the compositing application is a stand-alone application separate from the operating system. The UI interaction module 2715 generates user interface items, such as the depth of field sliders and planes described above, and determines how they should be displayed within the compositing application. The UI interaction module 2715 passes this information to the display module 2710, which enables the display of the compositing application, including the user interface items, on a computer monitor or other such display device (not shown).
A user interacts with the user interface items via input devices (not shown). The input devices, such as cursor controllers, send signals to the cursor controller driver 2705, which translates those signals into user input data that is provided to the UI interaction module 2715. The UI interaction module 2715 uses the user input data to modify the displayed user interface items. For example, if a user drags a cursor along a near focus slider, the UI interaction module 2715 will instruct the display module to move the slider on the display, and to move the near focus plane as well. The UI interaction module 2715 also passes data on user interactions affecting depth of field parameters to the depth of field (DOF) calculation module 2720.
DOF calculation module 2720 calculates how in focus or blurry objects should appear when rendered. The DOF calculation module 2720 bases this information on the distances of the objects from a particular virtual camera, depth of field parameters (e.g., focal plane of the virtual camera, aperture, focus offset, near and far focus distances) for the virtual camera, the blurring algorithm selected, etc. In some embodiments, the DOF calculation module is one of a number of modules that apply special effects (i.e., any effect applied to a region in a space that modifies the appearance of the affected region, such as blurring or coloring effects) to a region within the field of view of the virtual camera.
The DOF calculation module 2720 passes the DOF calculations to the rendering engine 2725. The rendering engine 2725 enables the output of audio and video from the compositing application. The rendering engine 2725, based on information from the DOF calculation module 2720 and other modules (not shown), sends information about how to display each pixel of a scene to the display module 2710.
While many of the features have been described as being performed by one module (e.g., the UI interaction module 2715 or DOF calculation module C320), one of ordinary skill would recognize that the functions might be split up into multiple modules, and the performance of one feature might even require multiple modules.
V. Computer System
Computer programs for implementing some embodiments are executed on computer systems.
The bus 2805 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the computer system 2800. For instance, the bus 2805 communicatively connects the processor 2810 with the read-only memory 2830, the GPU 2820, the system memory 2825, and the permanent storage device 2835.
From these various memory units, the processor 2810 retrieves instructions to execute and data to process in order to execute the processes of the invention. Some instructions are passed to and executed by the GPU 2820. The GPU 2820 can offload various computations or complement the image processing provided by the processor 2810. In some embodiments, such functionality can be provided using CoreImage's kernel shading language.
The read-only-memory (ROM) 2830 stores static data and instructions that are needed by the processor 2810 and other modules of the computer system. The permanent storage device 2835, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the computer system 2800 is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 2835.
Other embodiments use a removable storage device (such as a floppy disk, flash drive, or ZIP® disk, and its corresponding disk drive) as the permanent storage device. Like the permanent storage device 2835, the system memory 2825 is a read-and-write memory device. However, unlike storage device 2835, the system memory is a volatile read-and-write memory, such a random access memory. The system memory stores some of the instructions and data that the processor needs at runtime. In some embodiments, the invention's processes are stored in the system memory 2825, the permanent storage device 2835, and/or the read-only memory 2830.
The bus 2805 also connects to the input and output devices 2840 and 2845. The input devices enable the user to communicate information and select commands to the computer system. The input devices 2840 include alphanumeric keyboards and pointing devices (also called “cursor control devices”). The output devices 2845 display images generated by the computer system. For instance, these devices display a GUI. The output devices include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD).
Finally, as shown in
Any or all components of computer system 2800 may be used in conjunction with the invention. For instance, in some embodiments the execution of the frames of the rendering is performed by the GPU 2820 instead of the CPU 2810. Similarly, other image editing functions can be offloaded to the GPU 2820 where they are executed before the results are passed back into memory or the processor 2810. However, a common limitation of the GPU 2820 is the number of instructions that the GPU 2820 is able to store and process at any given time. Therefore, some embodiments adapt instructions for implementing processes so that these processes fit onto the instruction buffer of the GPU 2820 for execution locally on the GPU 2820. Additionally, some GPUs 2820 do not contain sufficient processing resources to execute the processes of some embodiments and therefore the CPU 2810 executes the instructions. One of ordinary skill in the art would appreciate that any other system configuration may also be used in conjunction with the present invention.
As mentioned above, the computer system 2800 may include any one or more of a variety of different computer-readable media. Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, ZIP® disks, and floppy disks.
While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. For example, the application of blurring effects to regions outside a region of focus has been described in detail, but other special effects (i.e., any effect applied to a region in a space that modifies the appearance of the affected region, such as blurring or coloring effects). Thus, one of ordinary skill in the art would understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
5625660 | Tuy | Apr 1997 | A |
5835693 | Lynch et al. | Nov 1998 | A |
6018348 | Sprague | Jan 2000 | A |
6072497 | Lichtenbelt et al. | Jun 2000 | A |
6169550 | Jain | Jan 2001 | B1 |
6346938 | Chan et al. | Feb 2002 | B1 |
6353677 | Pfister et al. | Mar 2002 | B1 |
6466207 | Gortler et al. | Oct 2002 | B1 |
6697068 | Iizuka et al. | Feb 2004 | B2 |
6990230 | Piponi | Jan 2006 | B2 |
7148892 | Robertson et al. | Dec 2006 | B2 |
7298370 | Middler et al. | Nov 2007 | B1 |
7428482 | Clavadetscher | Sep 2008 | B2 |
7782317 | Middler | Aug 2010 | B2 |
7814436 | Schrag et al. | Oct 2010 | B2 |
8089479 | Deb et al. | Jan 2012 | B2 |
20030034968 | Abramov et al. | Feb 2003 | A1 |
20030235344 | Kang et al. | Dec 2003 | A1 |
20040125103 | Kaufman et al. | Jul 2004 | A1 |
20040219980 | Bassett et al. | Nov 2004 | A1 |
20050028111 | Schrag et al. | Feb 2005 | A1 |
20050219239 | Mashitani et al. | Oct 2005 | A1 |
20060205502 | Kaneshige et al. | Sep 2006 | A1 |
20070146360 | Clatworthy et al. | Jun 2007 | A1 |
20070279435 | Ng et al. | Dec 2007 | A1 |
20080072168 | Conway | Mar 2008 | A1 |
20080303746 | Schlottmann et al. | Dec 2008 | A1 |
20090226080 | Boyd et al. | Sep 2009 | A1 |
20090256837 | Deb et al. | Oct 2009 | A1 |
20100080448 | Tam et al. | Apr 2010 | A1 |
Number | Date | Country |
---|---|---|
0782104 | Jul 1997 | EP |
1107188 | Jun 2001 | EP |
1132123 | Sep 2001 | EP |
Entry |
---|
Shade, Jonathan, et al., “Layered Depth Images,” Proceedings of the 25th Annual Conference on Computer Graphics and Interactive Techniques, Jul. 19-24, 1998, pp. 231-242, ACM, New York, New York, USA. |
Number | Date | Country | |
---|---|---|---|
20100085351 A1 | Apr 2010 | US |