Hey,
ich hab den GausianBlur-Shader aus der Shader-Sammlung leicht überarbeitet um damit schön GlowEffekte zu bauen. Ich hab einfach den Durchschnitt über einen bestimmten Bereich gebildet un das Ergebnis noch bisl nachbearbeitet. Leider frisst das Ding, so wie es jetzt ist, haufen FPS. Ich weiß das es an den vielen Texturzugriffen liegt. Und ich weiß auch, das ich es so machen könnte wie der GausianBlur-Shader. Erst nur vertikal Bluren und dann das Ergebiss nochmal horizontal. Das find ich aber sehr umständlich, weil ich da noch ein extra FBO benötige. Aus diesem Grund wollte ich erstmal fragen, ob es vlt ne andere Möglichkeit gibt den Shader zu verbesser?!
Code: #version 120 uniform sampler2D uTexture; uniform vec2 uShift; uniform vec4 uMul; uniform vec4 uClamp; const int radius = 11; void main() { vec2 texCoord = gl_TexCoord[0].xy - float(int(radius /2)) * uShift; vec4 color = vec4(0.0, 0.0, 0.0, 0.0); for (int j = 0; j < gaussRadius; ++j){ texCoord.x += uShift.x; texCoord.y = gl_TexCoord[0].y - float(int(radius /2)) * uShift.y; for (int i = 0; i < gaussRadius; ++i){ color += /*gaussFilter[i] */ texture2D(uTexture, texCoord) / float(radius * radius ); texCoord.y += uShift.y; } } gl_FragColor = min(color * uMul, uClamp); }
MfG Bergmann.
|