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の描画矩形の輪郭
- 2. OpenGl ES 2D Android再描画
- 3. OpenGL ES 2.0での2D描画(iOS)
- 4. アンドロイド用OpenGL ESでの2Dゲーム用レンダリング画像
- 5. 2D OpenGL ESアーキテクチャ
- 6. Jquery - ホバリング中のトップエレメントの輪郭を整えよう
- 7. Java OpenCV輪郭のスキュー調整
- 8. 非バイナリ画像の輪郭を見つける
- 9. 2Dスプライト用のOpenGL ESドロップシャドウ
- 10. OpenGL ESイメージへの2dレンダリング
- 11. Cannyの輪郭を輪郭に変換するOpenCV
- 12. OpenGL ES 2.0での画像とマスク
- 13. opencv crop輪郭内の画像の一部
- 14. iPhone OpenGL ESテクスチャ2Dマスキング
- 15. 輪郭抽出
- 16. R - 輪郭マップ
- 17. OpenCV輪郭モーメント?
- 18. 2D unorganizedポイントクラウドの輪郭を見つけよう
- 19. 輪郭の一致 - 輪郭の変位の検出
- 20. 2D OpenGL ESシーンをパンする方法
- 21. のOpenGL ES 2.0
- 22. OpenGL es - 3Dを見ず、2Dのように見えます
- 23. OpenGl ESのレイピッキングコードの調整
- 24. Android OpenGL ESひずみ画像
- 25. 画像内に複数の輪郭を描くことは可能ですか?
- 26. OpenGL ES 2D - zオーダー、デプスバッファと描画の順番
- 27. iPhone OpenGL ES 2dの背景テクスチャ
- 28. ggplotのKNNモデルの輪郭?
- 29. Androidのビットマップの輪郭
- 30. MATLABの輪郭行列
あなたが追加したいグローはドロップシャドウのようなものですか? –
画像の周りに柔らかいエッジを持つストロークが増えます。 –