Inventors list

Assignees list

Classification tree browser

Top 100 Inventors

Top 100 Assignees


Avid Technology, Inc.

Avid Technology, Inc. Patent applications
Patent application numberTitlePublished
20100033492PRODUCING WRINKLES AND OTHER EFFECTS FOR A COMPUTER-GENERATED CHARACTER BASED ON SURFACE STRESS - Wrinkles are produced by computing directional stress, whether compression or stretching, for each pixel within each face of the mesh representing the skin, and then perturbing a surface normal based on the computed stress at each pixel in that face of the mesh. Directional stress at a given frame in an animation is determined, in general, by comparing the current state of the mesh at that frame (called a “current pose”) to the original state of the mesh (called a “rest pose”). An artist specifies a wrinkle pattern by defining a texture that is mapped to the surface, using conventional techniques. A gradient texture is created from this wrinkle texture by computing the gradient at each pixel in the wrinkle texture. For each location in a face of the surface, the vector from the gradient texture is mapped to the corresponding face of the rest pose skin model and the current pose skin model, to produce two surface vectors. These two vectors are compared to provide an estimate of the surface stress at this location in the face. A wrinkle effect may be implemented using bump mapping, but the surface normal is perturbed differently for each location in the face of the mesh based on the skin stress estimated at that location. Other effects also may be created using the estimated stresses.02-11-2010
20100033483Exchanging Data Between Vertex Shaders And Fragment Shaders On A Graphics Processing Unit - It is desirable for a fragment shader to have access to non-interpolated values for each vertex of the primitive in which the fragment is located. For example, a fragment shader may use the distortion of the primitive with respect to an original state of the primitive as part of the function the fragment shader performs. Due to the specification of fragment shaders and vertex shaders, fragments shaders receive only interpolated values, and thus cannot receive non-interpolated values of, for example, one solution to this problem would be to modify the processing engine for the shader language, and the shader specifications themselves, so that a fragment shader can receive non-interpolated values from the vertices of the primitive on which the fragment is located. Desirable values to receive would be at least the vertex coordinates. Another solution is to specify and use varyings in a manner that pass data to a fragment shader that permit the fragment shader to reconstruct the non-interpolated values. One way to achieve this is to a. allocate varyings and assign them indices, b. assign indices to the vertices and c. have each a shader contribute only to those varyings having the same index as the vertex being processed, and otherwise contribute a null value, such as 0, to the varyings with other indices. In this manner, when the interpolated value for the indexed varying is received by the fragment shader, the indexed varying contains the contribution of only one vertex, scaled by an interpolation parameter. Another indexed varying can be used to pass the interpolation parameter, allowing the original value for the vertex to be computed by the fragment shader.02-11-2010