openFrameworks の Shaderチュートリアル "09 gaussianBlur" のバグ
はじめに
こちらの記事を読んで自分で試していたら、バグ(?)を見つけたので報告
http://www.openframeworks.cc/tutorials/graphics/shaders.html
配布されているコードをそのまま実行すると、ピクセルごとのcolorが不正な値で初期化されて、非常に出来の悪いグリッチになる。こんな感じ。
環境
- MacBook Air (Mid 2012)
- openFrameworks v0.8.4
- Xcode 6.0.1
- glsl #version 150 (OpenGL Version3.2)
すごく、環境依存な気がします。
結論
配布されている shaderBlurX.frag, shaderBlurY.frag の両方で、`vec4 color' をちゃんと0で初期化する。
void main() { vec4 color = vec4(0); // ここを追加 // 以下略 他は全部配布されているままでOK
正しくブラー出来ています
再現方法
コードの入手
当該記事で扱っているサンプルのコードは、公式で配布されている.zip には含まれていないので、github から落としてきます
コードの在処はこちら
https://github.com/openframeworks/openFrameworks/tree/master/tutorials/shader
ビルド(Mac + Xcodeの場合)
プロジェクトジェネレータで空のプロジェクトを作成した後、src と bin(shaderのコードを含む) を配布されている物に置き換えます
上図のbin と srcを、新しくつくったプロジェクトのbin と src につっこみます。
これでXcodeからビルドできる、はず。
さいごに
チュートリアルはすごく役に立ちました。最後の最後に変なバグを踏んだので驚きましたが、それ以外は非常に勉強になりました。ここからがんばりたいっす。