System and method for creating motion blur
Abstract
An embedded, programmable motion blur system and method is described. Embodiments include receiving a plurality of vertices in a graphics processing unit (GPU), displacing at least one vertex, receiving a primitive defined by at least one of the displaced vertices, and generating a plurality of primitive samples from the primitive. The receiving of a plurality of vertices, the displacing, the receiving a primitive, and the generating are all performed prior to rendering of the scene. The system includes a central processing unit (CPU), a memory unit coupled to the CPU, and at least one programmable GPU. The GPU includes a vertex shader and a geometry shader programmable to perform geometry amplification and generate a plurality of primitive samples, both of these performed before the scene is rendered.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method for creating motion blur in a computer-generated scene, the method comprising:
receiving a plurality of vertices in a graphics processing unit (GPU), the plurality of vertices associated with a first object; displacing at least one vertex of the plurality of vertices; receiving, in the GPU, a primitive defined by at least one of the displaced vertices, the primitive having an initial position; and generating a plurality of primitive samples from the primitive, wherein a last one of the generated primitive samples has an aperture extent position and wherein each of the remaining generated primitive samples has a position between the initial position and the aperture extent position; wherein the receiving of a plurality of vertices, the displacing, the receiving a primitive, and the generating are all performed prior to rendering of the scene.
2 . The method of claim 1 , wherein the generating of the plurality of primitive samples further includes delimiting at least one convex hull based on the initial and aperture extent positions.
3 . The method of claim 2 , wherein generating the plurality of primitive samples further includes constructing the plurality of primitive samples in the delimited convex hull at programmable intervals.
4 . The method of claim 1 , wherein the primitive is a triangle defined by three vertices.
5 . The method of claim 1 , further comprising:
performing the displacing on at least one second vertex in a second plurality of vertices corresponding to a second object moving in a direction different from a moving direction of the first object; receiving a second primitive defined by at least one of the displaced second vertices; and performing the generating to generate a second plurality of primitive samples from the second primitive to create motion blur of the second object; wherein the performing of the displacing on at least one second vertex, the receiving of the second primitive, and the generating of a second plurality of primitive samples are all performed prior to rendering of the scene.
6 . A graphics processing system configured to create motion blur in a scene, comprising:
a central processing unit (CPU); a memory unit coupled to the CPU; at least one programmable graphics processing unit (GPU) coupled to the CPU and to the memory, wherein the at least one GPU comprises:
a vertex shader, programmable to receive an input vertex that is present in the scene, and to output a displaced vertex before the scene is rendered, the vertex being associated with a first object; and
a geometry shader, programmable to:
perform geometry amplification of a received primitive having an initial position, and
generate a plurality of primitive samples by performing operations on the received primitive, wherein a last one of the generated primitive samples has an aperture extent position and wherein each of the remaining generated primitive samples has a position between the initial position and the aperture extent position;
wherein the performing of geometry amplification and the generating of a plurality of primitive samples are performed before the scene is rendered.
7 . The system of claim 6 , further comprising buffer resources used by the vertex shader and the geometry shader to store shared data.
8 . The system of claim 6 , wherein the geometry shader is further programmable to generate the plurality of primitive samples by delimiting at least one convex hull based on the first and second positions.
9 . The system of claim 8 , wherein the geometry shader is further programmable to generate the plurality of primitive samples by constructing the plurality of primitive samples in the delimited convex hull at programmable intervals.
10 . The system of claim 6 , wherein the received primitive is a triangle defined by three vertices.
11 . The system of claim 6 , further comprising:
a second vertex shader programmable to receive a second input vertex and to output a second displaced vertex before the scene is rendered, the second vertex corresponding to a second object moving in a direction different from a moving direction of the first object; and a second geometry shader programmable to perform the geometry amplification of a second received primitive and to perform the generating to generate a second plurality of primitive samples from the second primitive to create motion blur of the second object; wherein the performing of geometry amplification and the generating are performed before the scene is rendered.
12 . The system of claim 6 , further comprising a rasterizer coupled to receive the displaced and amplified primitives.
13 . The system of claim 12 , further comprising a pixel shader coupled to receive an output of the rasterizer.
14 . The system of claim 13 , further comprising a frame buffer coupled to the pixel shader for storing frames to be displayed.
15 . A non-transitory computer-readable medium having stored thereon instructions which, when executed, cause the creation of motion blur in an animated scene, the instructions including:
receiving a plurality of vertices; displacing at least one vertex of the plurality of vertices; receiving a primitive defined by at least one of the displaced vertices, the particular primitive having an initial position; and generating a plurality of primitive samples from the primitive by performing operations on the primitive, wherein a last one of the generated primitive samples has an aperture extent position and wherein each of the remaining generated primitive samples has a position between the initial position and the aperture extent position; wherein the receiving of a plurality of vertices, the displacing, the receiving a primitive, and the generating a plurality of primitive samples are all performed prior to rendering of the scene.
16 . The non-transitory computer-readable medium of claim 15 , wherein generating the plurality of primitive samples further includes delimiting at least one convex hull based on the initial and aperture extent positions.
17 . The non-transitory computer-readable medium of claim 16 , wherein generating the plurality of primitive samples further includes constructing the plurality of primitive samples in the delimited convex hull at programmable intervals.
18 . The non-transitory computer-readable medium of claim 15 , wherein the primitive is a triangle defined by three vertices.
19 . The non-transitory computer-readable medium of claim 15 , wherein the instructions further include:
performing the displacing on at least one second vertex in a second plurality of vertices corresponding to a second object moving in a direction different from a moving direction of the first object; receiving a second primitive defined by at least one of the displaced second vertices; and performing the generating to generate a second plurality of primitive samples from the second primitive to create motion blur of the second object; wherein the performing of the displacing on at least one second vertex, the receiving of the second primitive, and the generating of a second plurality of primitive samples are all performed prior to rendering of the scene.Join the waitlist — get patent alerts
Track US2013155065A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.