---
url: /api/passes/transformFeedback/functions/transformFeedback.md
---
# transformFeedback()

```ts
function transformFeedback<
  O extends string,
  U extends UniformSources<UniformContext>,
>(params: {
  gl: WebGL2RenderingContext;
  vertex: string;
  attributes?: Record<string, Attribute>;
  uniforms?: U;
  outputs: Record<
    O,
    {
      size: number;
    }
  >;
}): TransformFeedbackPass<O, U>;
```

Creates a Transform Feedback pass for GPGPU tasks without rendering to a texture.

It allows you to run a vertex shader and capture its output varyings into buffers
that can then be read back by the CPU or used as input for another pass.

## Type Parameters

### O

`O` *extends* `string`

### U

`U` *extends* [`UniformSources`](../../../types/types/type-aliases/UniformSources.md)<[`UniformContext`](../../../types/types/interfaces/UniformContext.md)>

## Parameters

### params

Configuration for the transform feedback pass.

#### gl

`WebGL2RenderingContext`

WebGL2 context.

#### vertex

`string`

Vertex shader source. Should write to the output varyings.

#### attributes?

`Record`<`string`, [`Attribute`](../../../types/types/interfaces/Attribute.md)> = `{}`

Vertex attributes (input buffers).

#### uniforms?

`U` = `...`

Uniform values for the pass.

#### outputs

`Record`<`O`, {
`size`: `number`;
}>

Definition of the transform feedback output buffers.
Maps varying names to their expected component size (e.g., 3 for vec3).

## Returns

[`TransformFeedbackPass`](../type-aliases/TransformFeedbackPass.md)<`O`, `U`>
