# Blur (2-Pass) ```html http://i.imgur.com/3On9QEu.jpg ``` ![](7.gif) ## 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} ); } } ```