OpenGL OpenGL の ComputeShader 今回はようやくOpenGLでのComputeShaderを扱ってみます。意外とOpenGLでのComputeShaderって話題になっていないようで、ワクワクしています。 手順 VertexShader, FragmentShader などを生成するように、ComputeShader を生成します。ComputeShaderもまたGLSLで記述するので、今ま... 2014.02.22 OpenGLプログラミング
OpenGL OpenGLでComputeShaderを使う前に OpenGLでComputeShader を使う前に実は知っておくべきことが意外とある、ということで今回はその内容についてです。 ComputeShader は演算のためのシェーダーです。その演算内容をどこかに書き出さなければなりません。OpenGLでは、2種類ほどあるようでそれが以下の物に該当するようです。 Shader Image load store ... 2014.02.20 OpenGLプログラミング
OpenGL GLSLのシェーダーリフレクション (2) OpenGL (GLSL) のユニフォームブロックでのシェーダーリフレクションを試してみました。 ここで使った vertexShader, fragment shaderは以下のようなものです。 // vertex shader #version 410 core layout( location=0 ) in vec3 inPosition; layout... 2014.02.16 OpenGLプログラミング
OpenGL GLSLのシェーダーリフレクション GLSLいじりの過程で、シェーダーリフレクションっぽいことをやってみたのでその調査結果です。 OpenGLでは別に他のライブラリに依存することなく、シェーダーリフレクションの機能を持っています。普段ではuniform変数のロケーション情報を名前から取得しているかと思いますが、その延長上でいろいろな情報をとれるようになっています。 そこで次のようなシェーダープ... 2014.02.14 OpenGLプログラミング
OpenGL 最近のGLSLでは色々廃止になってる… 最近のGLSLでは結構廃止になっている部分が多い。ちょっと踏んだところをメモとして残しておきます。 varying, attribute 廃止 これは割と定番ですが、最近のGLSLでは廃止になってます。 代わりに in/out を使用して、シェーダーに対する入力、出力を記述していきます。 その割に、頂点入力としては glGetAttribLocation 使... 2014.02.09 OpenGLプログラミング
OpenGL Texture Buffer Object (TBO)について どうやらこれはTextureBuffer-Objectではなく、Texture-BufferObject という意味であるとのことです。そしてこれは、VBO(Vertex buffer object)のバッファデータをテクスチャとして利用するための仕組みであるとのことです。 テクスチャのデータは glTexImage系の関数で準備をしますが、TBOについては... 2014.02.06 OpenGLプログラミング
DirectX OpenGLとDirectX11で、あと何が足りてないか ここ1ヶ月ほどは主に最近のOpenGLについて勉強しているわけですが、DirectX11と比べてまだ何が足りていないかまとめてみます。 やったこと テクスチャ配列 (DX10だけど) ジオメトリシェーダーでストリームアウト&ポイントスプライト (DX10だけど) ハードウェアでのインスタンシング描画 テセレーションのシェーダーについて(TCS, TES) シ... 2014.02.03 DirectXOpenGLプログラミング
OpenGL OpenGL Shader subroutine を試してみた GLSLシェーダープログラムの関数を切り替える拡張である GL_ARB_shader_subroutine を試してみました。使ってみた感想としては C言語プログラムの関数ポインタを設定して実行先を切り替える、そんなものとずいぶん近い気がします。 シェーダープログラムでは、切り替える関数の宣言、切り替えに使う変数を先に宣言しておきます。 今回はLambert... 2014.02.02 OpenGLプログラミング