# Blur (2-Pass)
```html
http://i.imgur.com/3On9QEu.jpg
```

## Implementation
The classical example where you need multiple pass is **Blur**.
Implementing an efficient and realist Blur is tricky,
one simple and fast way is to implement it with 2-Pass (on X and on Y).
To do that, we first define a one dimensional Blur (`Blur1D`)
and stack it into these 2 passes.
```js
class Blur1D extends GL.Component {
render () {
const { width, height, direction, children } = this.props;
return
{children}
;
}
}
```
And then, we create a Blur that composes Blur1D two times:
```js
class Blur extends GL.Component {
render () {
const { width, height, factor, children } = this.props;
const sharedProps = { width, height };
return
{children}
;
}
}
```
In this simple example, `Blur` has 2 passes: one on X dimension, then one on Y dimension.
For a more advanced (4-Pass) example, see [Examples/Blur](https://github.com/ProjectSeptemberInc/gl-react/tree/master/Examples/Blur).
**Extract:**
```js
class Blur4Pass extends GL.Component {
render () {
const { width, height, children, factor } = this.props;
const sharedProps = { width, height };
return (
{children}
);
}
}
```