# US 2013/0155065 A1 · System and method for creating motion blur

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2013/0155065 A1
- Document ID: US20130155065A1
- Status: Published application
- Kind: A1
- Application number: 13/768,741
- Filed: 2013-02-15
- Published: 2013-06-20
- Earliest claimed: 2005-03-30
- Assignees: Advanced Micro Devices, Inc.
- Inventors: Avi I. Bleiweiss
- Web page: https://patentgrep.com/patent/US20130155065A1

## CPC

- G06T 13/20: Three-dimensional [3D] animation
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## 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

### Claim 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 2)

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.

### Claim 4 (depends on 1)

The method of claim 1, wherein the primitive is a triangle defined by three vertices.

### Claim 5 (depends on 1)

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.

### Claim 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.

### Claim 7 (depends on 6)

The system of claim 6, further comprising buffer resources used by the vertex shader and the geometry shader to store shared data.

### Claim 8 (depends on 6)

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.

### Claim 9 (depends on 8)

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.

### Claim 10 (depends on 6)

The system of claim 6, wherein the received primitive is a triangle defined by three vertices.

### Claim 11 (depends on 6)

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.

### Claim 12 (depends on 6)

The system of claim 6, further comprising a rasterizer coupled to receive the displaced and amplified primitives.

### Claim 13 (depends on 12)

The system of claim 12, further comprising a pixel shader coupled to receive an output of the rasterizer.

### Claim 14 (depends on 13)

The system of claim 13, further comprising a frame buffer coupled to the pixel shader for storing frames to be displayed.

### Claim 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.

### Claim 16 (depends on 15)

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.

### Claim 17 (depends on 16)

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.

### Claim 18 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the primitive is a triangle defined by three vertices.

### Claim 19 (depends on 15)

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.
