OpenGL 2.0を使用して2DのiOSゲームを作成していますが、画像を輪郭描写するシェーダを書くことができるかどうかは疑問です。すべての画像は2Dスプライトです。アウトラインのために見たシェーダの例は3Dオブジェクト用ですので、2D画像で可能かどうかはわかりません。OpenGL ES Shaderで2D画像の輪郭を整える
答えて
エッジ検出フィルタ(Sobelなど)を受け入れて、the Wikipedia articleのような画像を生成し、その結果にガウスブラーを適用して、エッジを柔らかくしてより多くの輝きを与えて合成しますあなたのシーンにそのイメージを表示しますか?
実際には、あなたが見た3Dアウトラインシェイダーを再利用することができます。理論的に深度の量を調べることはできますが(私はESで長時間の努力をしましたが)レンダリングされたイメージ
EDIT:ラプラシアンは、単純な畳み込みシェーダ(場所like thisに記載されているように)として行うことができるため、Sobelよりも少し適用しやすいかもしれません。携帯電話でも安全であるように、せいぜい3x3のカーネルに固執し、データで行うのではなく、各エフェクトごとに異なるシェーダーを作成することができます。だから長さで書き出さラフガウスぼかし、:
void main()
{
mediump vec4 total = vec4(0.0);
mediump vec4 grabPixel;
total += texture2D(tex2D, texCoordVarying + vec2(-1.0/width, -1.0/height));
total += texture2D(tex2D, texCoordVarying + vec2(1.0/width, -1.0/height));
total += texture2D(tex2D, texCoordVarying + vec2(1.0/width, 1.0/height));
total += texture2D(tex2D, texCoordVarying + vec2(-1.0/width, 1.0/height));
grabPixel = texture2D(tex2D, texCoordVarying + vec2(0.0, -1.0/height));
total += grabPixel * 2.0;
grabPixel = texture2D(tex2D, texCoordVarying + vec2(0.0, 1.0/height));
total += grabPixel * 2.0;
grabPixel = texture2D(tex2D, texCoordVarying + vec2(-1.0/width, 0.0));
total += grabPixel * 2.0;
grabPixel = texture2D(tex2D, texCoordVarying + vec2(1.0/width, 0.0));
total += grabPixel * 2.0;
grabPixel = texture2D(tex2D, texCoordVarying);
total += grabPixel * 4.0;
total *= 1.0/16.0;
gl_FragColor = total;
}
ラプラシアンエッジ検出には似ていますがと異なる定数を探してしまいます。
最適化として、可変シェイダーではなく、可変シェイダーの相対サンプリングポイントを、バリアンスの制限を考慮して、できるだけ離散テクスチャーの読み取りを避けるように調整する必要があります。
私は正しい3Dのものを見ていないかもしれませんが、私が見たものはある程度光源に作用しているように見えますが、それは2Dではありません。私はシェイダーがとても新しいので、ここでは明らかに見落としているでしょう。 –
ジェットポストセットラジオセルシェーダの多くは、前向きのエッジと後ろ向きのエッジとの間の結合となるエッジを定義することによって、エッジを検出するためにカメラ位置を使用します。あなたは明らかにそれらの1つを使用することができません。しかし、ソーベルとラプラシアンのような手法では、2次元画像の色の不連続性をエッジにスポットするため、完全に適切です。畳み込みフィルタを読んだり、まだラプラシアンやガウスのぼかしを調べていないのであれば、賢明でしょう。私は後者のためのいくつかの急いでアセンブルされたサンプルコードを追加しました。 – Tommy
- 1. OpenGL ESで輪郭を描く
- 2. 画像の輪郭軸
- 3. OpenGLの描画矩形の輪郭
- 4. 画像の輪郭を検索する
- 5. OpenGl ES 2D Android再描画
- 6. OpenGL ES 2.0での2D描画(iOS)
- 7. アンドロイド用OpenGL ESでの2Dゲーム用レンダリング画像
- 8. 2D OpenGL ESアーキテクチャ
- 9. オーバーレイされた輪郭が画像+輪郭回転後に整列していません.warpAffine with OpenCV
- 10. Python:バイナリ2D配列の輪郭
- 11. 画像の輪郭を持つ描画文字
- 12. Jquery - ホバリング中のトップエレメントの輪郭を整えよう
- 13. OpenGL ESイメージへの2dレンダリング
- 14. 2Dスプライト用のOpenGL ESドロップシャドウ
- 15. Matplotlibの輪郭
- 16. OpenGL ES 2.0での画像とマスク
- 17. Java OpenCV輪郭のスキュー調整
- 18. 非バイナリ画像の輪郭を見つける
- 19. 画像の輪郭を見つけるPython OpenCV
- 20. 境界輪郭と共に円形でない輪郭の円結果のセグメント化された画像の
- 21. 輪郭を見つけた後、Opencv画像を歪ませる
- 22. iPhone OpenGL ESテクスチャ2Dマスキング
- 23. アクティブな輪郭(スネーク)を拡大する画像
- 24. 背景画像を含むdivの周囲の暗い輪郭
- 25. のOpenGL ES 2.0
- 26. Cannyの輪郭を輪郭に変換するOpenCV
- 27. opencv crop輪郭内の画像の一部
- 28. 2D OpenGL ESシーンをパンする方法
- 29. 画像内の円輪郭検出python opencv
- 30. OpenCV/Python:画像の輪郭が表示されない
あなたが追加したいグローはドロップシャドウのようなものですか? –
画像の周りに柔らかいエッジを持つストロークが増えます。 –