| #ifdef GL_ES |
| precision mediump float; |
| #endif |
| |
| uniform mat3 worldToOutput; |
| |
| uniform vec4 outputRect; |
| varying vec4 inputRect[1]; |
| varying mat3 worldToInput[1]; |
| |
| uniform float radius; |
| |
| |
| float det(mat3 m) { return m[0][0] * m[1][1] - m[0][1] * m[1][0]; } |
| |
| void main( void ) |
| { |
| float rad = radius * sqrt(abs(det(worldToOutput))); |
| |
| worldToInput[0] = worldToOutput; // Let the input and output references |
| // be the same |
| inputRect[0] = vec4( |
| outputRect.x - rad, |
| outputRect.y - rad, |
| outputRect.z + rad, |
| outputRect.w + rad); |
| |
| gl_Position = vec4(0.0); // Does not link without |
| } |