タグ

OpenGLに関するkammy_rのブックマーク (23)

  • GitHub - Experience-Monks/glsl-fast-gaussian-blur: optimized single-pass blur shaders for GLSL

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - Experience-Monks/glsl-fast-gaussian-blur: optimized single-pass blur shaders for GLSL
  • clemz.io - Article Retro Shaders WebGL

    Introduction In this article, I'm going to show you how to reproduce "retro" visual effects as seen in the "8-bit" musical levels from Rayman Legends. If you have never heard of Rayman Legends or want to see in action the visual effects, you can watch this video showing all the 8-bit music levels (warning: spoilers!). All of these visual effects are post-processing effects. Meaning that we take a

  • Post-Processing Effects in Cocos2d-x

    Posted on January 8, 2016 21 minutes Mamadou Babaei Update [2020/10/23]: Since I wrote this tutorial many things has changed in Cocos2d-x and I haven’t been using it in years as I switched to Unreal Engine 4. According to this GitHub issue opened by my blog readers, in order for this code to work there has to be some modifications to the code which is provided on that issue by @lazerfalcon and @ma

  • cocos2d-x Glowエフェクト - Qiita

    cocos2d-x Advent Calendar21日目の記事です。 はじめに 今回はアウトラインを色付けるサンプルを元に、Glowエフェクトっぽいモノを作っていきます。 Glowエフェクトとは、その名の通り光る演出です。 フラグメントシェーダーの用意 早速ですが、サンプルのフラグメントシェーダーを元にGlowエフェクトっぽく書いたのが下記になります。 varying vec4 v_fragmentColor; varying vec2 v_texCoord; uniform float u_ctime; uniform float u_threshold; uniform float u_radius; uniform vec4 u_outlineColor; void main() { float radius = u_radius; vec4 accum = vec4(0.0);

    cocos2d-x Glowエフェクト - Qiita
  • ofFbo上でのアルファブレンディング - ofxTips-JP

    ofFboのバッファ内でアルファブレンディングを行う際、ウィンドウに直接描画するのと同じ方法ではうまくいかない場合があります。 まずはこちらのソースコードと、キャプチャをご覧ください。 ofEnableBlendMode(OF_BLENDMODE_ALPHA); ofBackground(0, 0, 0); ofSetColor(255, 255, 255,100); for (int i = 0;i < 10;i++){ ofRect(i*30, i*30, 50, 50); } 上記ソースを、ウィンドウとFboにそれぞれ描画しています。 左がウィンドウに直接描画したもの、右がFboに描画した後、ウインドウに再度描画したものです。 既に結果が違ってしまっています。アルファ値が、Fboの方が小さいように見えますが、そういうことではありません。次にウィンドウ側の背景色を変更してみます。 Fb

    ofFbo上でのアルファブレンディング - ofxTips-JP
  • OpenGL ES2.0 入門 基礎編(シェーダと行列) - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 前提 『マルチプラットフォームのためのOpenGL ES入門 基礎編―Android/iOS対応グラフィックスプログラミング』 の抜粋メモです。13章の内容。 コードについて詳細は↑を参照してください。 シェーダと行列 Matrix OpenGL で頻出するのは 4 x 4 の行列。 行列を OpenGL ES の用途に限って言い表せば、 ベクトルに対する計算内容を保存したもの と言える。GPU とはベクトルと行列に対する演算を得意とするハードウェアであり、行列とベクトルの演算は専用の演算装置によって行われるため、非常に高速に処理できる

    OpenGL ES2.0 入門 基礎編(シェーダと行列) - Qiita
  • OpenGLES 2.0 入門 基礎編 - Qiita

    前提 『マルチプラットフォームのためのOpenGL ES入門 基礎編―Android/iOS対応グラフィックスプログラミング』 の抜粋メモです。5章、6章あたり。 1〜4 はありません。 コードについては断片のみなので、書を読んでください。 5章 glClearColor void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) maskは塗りつぶすバッファの種類 GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT GL_STENCIL_BUFFER_BIT OpenGL ES は、用途の違う3枚のバッファを組み合わせて描画を行う。それぞれ保存する内容やメモリの使用量が異なる。 カラーバッファは、ディスプレイのひとつひとつのピクセル情報の集合を保存するただのメ

    OpenGLES 2.0 入門 基礎編 - Qiita
  • OpenGL ES2.0 入門 基礎編(複数枚のテクスチャ) - Qiita

    void sample_TextureUse2_rendering(GLApplication *app) { // サンプルアプリ用データを取り出す Extension_TextureUse2 *extension = (Extension_TextureUse2*) app->extension; glClearColor(0.0f, 1.0f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); // attr_posを有効にする glEnableVertexAttribArray(extension->attr_pos); glEnableVertexAttribArray(extension->attr_uv); // unif_textureへテクスチャを設定する glUniform1i(extension->unif_texture, 0);

    OpenGL ES2.0 入門 基礎編(複数枚のテクスチャ) - Qiita
  • wgld.org | WebGL: gaussian フィルタ |

    ガウシアンブラー 前回はエッジ検出の手法の一つ、laplacian フィルタを解説しました。前々回に紹介した sobel フィルタと比較すると、細い線による繊細なエッジ検出ができるのでしたね。 さて、今回はフィルタ系の処理をもう一つ取り上げます。今回のフィルタはかなり実用性の高いものです。今後様々なエフェクト処理を行なっていく上で欠かせないぼかし系処理の代表格、gaussian フィルタ(ガウシアンフィルタ)です。 ガウシアンぼかし、あるいはガウスぼかしなどと呼ばれるぼかし処理は、様々なペイントソフトやフォトレタッチソフトにも搭載されています。そもそも[ ぼかす ]という処理に優劣があるのかというところに疑問を抱く方ももしかしたらいるかもしれませんが、gaussian フィルタが優れているポイントはいくつかあります。 処理結果が自然で美しく仕上がる 大きくぼかしを掛けることが可能 その割に

    wgld.org | WebGL: gaussian フィルタ |
  • GLSLシェーダによるカートゥーンレンダリング

    今日は、GLSLによるカートゥーンを紹介しようと思います。割と簡単にでき、それなりに見栄えがするからです。その応用として、輪郭線も描画します。 カートゥーンの原理 カートゥーンはセルアニメ調のレンダリングです。左下の図に示すように、頂点vにおいて、法線と光源ベクトル(頂点から光源へのベクトル)との内積(照度)を、右下の図のようなテクスチャのs座標に当てはめることで簡単に実現できます。 更に、次の図の左のように、視線ベクトルと法線の内積を考えると、輪郭となる部分はほぼ0になります。そのため、その内積をt座標に割り当てることで、輪郭線を実現できます。 s座標もt座標も単位ベクトル同士の内積で計算できますが、その範囲は-1~1になるため、テクスチャマッピング(glTexParameterによる指定)をクランプに設定する必要があります。 バーテックスシェーダ(頂点シェーダ) 今回は、頂点シェーダで

  • [OpenGL] FrameBufferとRenderBufferについてメモ - Qiita

    FrameBufferやRenderBufferなど、バッファという言葉はOpenGLやWebGLを扱っていると頻繁に目にします。 ある程度理解していますが、時間を置くとどうしても理解が曖昧になるので、いったん自分の理解の範囲内で備忘録としてまとめました。 なので、間違いや勘違いがあるかもしれません。(もしなにか間違ってたら指摘してくれるとうれしいです) Framebuffer Object まず、FrameBuffer ObjectとRenderBufferについての簡単な関係図を書きました↓ 見て分かるように、FrameBuffer Objectは「Color Buffer」「Depth Buffer」「Stencil Buffer」を内包しています。 つまり、FrameBuffer Objectはこれらいくつかのバッファを統合するオブジェクトです。 それ自身に値を保持しているわけでは

    [OpenGL] FrameBufferとRenderBufferについてメモ - Qiita
  • opengl-tutorial.org | Tutorials for modern OpenGL (3.3+)

    This post is also available in: 簡体中国語, 英語, イタリア語, ロシア語, ポルトガル語(ブラジル)このサイトはOpenGL 3.3以降のチュートリアルを扱っています! 完全なソースコードはここから利用可能です。 何か質問や意見、バグ報告、その他何かあればお気軽にご連絡ください。 : contact@opengl-tutorial.org . 日語に関する意見などは私(翻訳者)のブログかメールへご連絡ください。 このサイトが気に入ったなら、どうぞ世界に広めてください!

  • OpenGL ES 3.0 @ ETC2/EAC圧縮テクスチャ - ラーメンは味噌汁

    2013-09-30 OpenGL ES 3.0 @ ETC2/EAC圧縮テクスチャ OpenGL ES 3.0 iOS 7 OpenGL 4.3 ETC2/EAC圧縮テクスチャとは 圧縮テクスチャはiOSだけをターゲットにした場合はPVRTCだけを使えばよかったのですがAndroidではGPU毎にS3TC,ATITC,PVRTC,ETCと乱立している状態でマルチプラットフォームを考えた場合に問題になりました。アプリ起動時にサーバーから対応するテクスチャをダウンロードする、もしくは最悪全形式をアプリ内に含めるかいっそ圧縮しないなどの対処がとられていました。更に各圧縮テクスチャ毎に癖があり見た目を同じにするのも難しいものでした。デスクトップ版はどうかと言うとS3TCやBPTCなどDDS形式がサポートしているものが対応されていることが多かったですがやはり標準化はされていませんでした。OpenG

    OpenGL ES 3.0 @ ETC2/EAC圧縮テクスチャ - ラーメンは味噌汁
  • opengl:textures [HYPERでんち]

    GPU が直接アクセスできる画像フォーマットです。 DXT1, DXT3, DXT5 (S3TC) 形式が有名です。 例えば 256×256 pixel の画像を考えると、フルカラーの 32bit R8G8B8A8 フォーマットでは 256KB になります。 DXT5 では わずか 64KB、DXT1 で済むなら 32KB に圧縮できます。 PVRTC や ASTC では、さらに圧縮率が高い 2~0.9bpp の形式も定義されています。

  • opengl:texturefileformat [HYPERでんち]

    file format R RG RGB RGBA sRGB mip cube volume array float int S3TC/DXT 3Dc BPTC ATITC PVRTC ETC1 ETC2 ASTC 3D 16 32 64 8 16 32 BC1/BC2/BC3 BC4/BC5 BC6H/BC7 v1 v2 EAC 2D 3D

  • iOS Device Compatibility Reference: Hardware GPU Information

    Hardware GPU InformationSince the introduction of the original iPhone, Apple has continued to improve the GPU capabilities in new iOS devices. When you write a Metal or OpenGL ES app, you need to understand the specific limits of each device you app runs on. Currently, two distinct GPU categories are in common use:The Apple A7 and A8 GPUsThe PowerVR SGX 543 and 554 GPUsTable 2-1 lists the devices

  • OpenGL ES チューニングのためのメモ - Qiita

    OpenGL ESを使ったアプリのチューニングについて、 予習としてXcodeやInstrumentsの使い方をメモ。 実際に使ってみた上でのチェックポイントや良かったプラクティス等、随時追記していきます。 Instrumentsでボトルネックを診断 OpenGL ES Analyzer を使った自動診断 Instrumentsの"OpenGL ES Analyzer"というテンプレートを使うと、リソースの使われ方や問題になりそうなところを診断してくれます。 はじめに"Xcode" -> "Open Developer Tools" -> "Instruments"か cmd + iでInstrumentsを起動します。 "OpenGL ES Analyzer"を選択して"Choose"をクリック。 この状態で、左上のボタンをクリックするとアプリが起動します。 一通り操作すると、問題になり

    OpenGL ES チューニングのためのメモ - Qiita
  • JUNO通信: Android + OpenGL の戦い その1

    いま「Battle Tank Sword」を Windows に移植するためにコネコネいじくり回している最中なのですが、その途中、Java のソースを眺めていた時にふと目に止まった部分がありました。 それは度重なる不具合で皆様に御迷惑をおかけした原因とも言える場所であり、その作業過程がもしかしたら誰かの役に立つかもしれないと思い、ここに文章化することにしました。 Android 向けゲーム「Battle Tank SWORD」は、初めて OpenGL + NDK で作ったアプリだったので色々と大変だったのですが、一番苦労したのはほかでもない OpenGL の初期化部分でした。はじめは解説サイトなどを参考にしてさらっと mGLSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 0, 1); と記述してあり、手元の端末では正しく動いていたのですが、実はこれが

  • [OpenGL] 任意の頂点形式に対応可能な頂点バッファオブジェクトの設定方法

    頂点バッファオブジェクト(VBO)については、t-potさんや床井研究室さん、Project Asuraさんといった、有名どころの方々がサンプルを載せてくれています。 が、t-potさんの例では、頂点座標、法線、テクスチャ座標をそれぞれ別個のVBOとして用意しているため、t-potさんも文中で書かれていますが、 GPUのデータキャッシュのヒット率が非常に悪くなり、パフォーマンスが出ません。また、インデックスバッファを使っていないというところも非効率と言えるでしょう。 また、床井研究室さんのところでは、ページの一番下のところで、頂点座標、法線、テクスチャ座標のデータを一つのVBOに格納したサンプルを示されていますが、 という感じで、頂点座標、法線、テクスチャ座標それぞれのデータが離れているため、これもGPUのキャッシュのヒット率が悪く、パフォーマンスがよくありません。 頂点座標、法線、テクス

  • OpenGLプログラミング/モダンOpenGL チュートリアル 02 - Wikibooks

    さて、理解のための動作例はできたので、新しい機能やさらなる堅牢性の追加にとりかかれます。 以前のシェーダーは、できるだけ簡単になるように意図的に最小限にしていましたが、実世界の例ではもっと付属コードを使用します。 シェーダの管理[編集] シェーダのロード[編集] 最初に追加するものは、シェーダをロードするためのより便利な方法です:外部ファイルのロードがとても簡単になるはずです(Cの文字列としてコードにコピーペーストするよりも)。 それに加えて、こうすることでCコードを再コンパイルせずにGLSLコードを変更できるようになります! まず、ファイルを文字列としてロードする関数が必要になります。 基的なC言語のコードで、ファイルのサイズに割り当てられたバッファの中にファイルの内容を読み取ります。 /** * Store all the file's contents in memory, use

    OpenGLプログラミング/モダンOpenGL チュートリアル 02 - Wikibooks