2014-02

OpenGL

OpenGL の ComputeShader

今回はようやくOpenGLでのComputeShaderを扱ってみます。意外とOpenGLでのComputeShaderって話題になっていないようで、ワクワクしています。 手順 VertexShader, FragmentShader などを生成するように、ComputeShader を生成します。ComputeShaderもまたGLSLで記述するので、今ま...
OpenGL

OpenGLでComputeShaderを使う前に

OpenGLでComputeShader を使う前に実は知っておくべきことが意外とある、ということで今回はその内容についてです。 ComputeShader は演算のためのシェーダーです。その演算内容をどこかに書き出さなければなりません。OpenGLでは、2種類ほどあるようでそれが以下の物に該当するようです。 Shader Image load store ...
OpenGL

GLSLのシェーダーリフレクション (2)

OpenGL (GLSL) のユニフォームブロックでのシェーダーリフレクションを試してみました。 ここで使った vertexShader, fragment shaderは以下のようなものです。 // vertex shader #version 410 core layout( location=0 ) in vec3 inPosition; layout...
OpenGL

GLSLのシェーダーリフレクション

GLSLいじりの過程で、シェーダーリフレクションっぽいことをやってみたのでその調査結果です。 OpenGLでは別に他のライブラリに依存することなく、シェーダーリフレクションの機能を持っています。普段ではuniform変数のロケーション情報を名前から取得しているかと思いますが、その延長上でいろいろな情報をとれるようになっています。 そこで次のようなシェーダープ...
OpenGL

最近のGLSLでは色々廃止になってる…

最近のGLSLでは結構廃止になっている部分が多い。ちょっと踏んだところをメモとして残しておきます。 varying, attribute 廃止 これは割と定番ですが、最近のGLSLでは廃止になってます。 代わりに in/out を使用して、シェーダーに対する入力、出力を記述していきます。 その割に、頂点入力としては glGetAttribLocation 使...
OpenGL

Texture Buffer Object (TBO)について

どうやらこれはTextureBuffer-Objectではなく、Texture-BufferObject という意味であるとのことです。そしてこれは、VBO(Vertex buffer object)のバッファデータをテクスチャとして利用するための仕組みであるとのことです。 テクスチャのデータは glTexImage系の関数で準備をしますが、TBOについては...
DirectX

OpenGLとDirectX11で、あと何が足りてないか

ここ1ヶ月ほどは主に最近のOpenGLについて勉強しているわけですが、DirectX11と比べてまだ何が足りていないかまとめてみます。 やったこと テクスチャ配列 (DX10だけど) ジオメトリシェーダーでストリームアウト&ポイントスプライト (DX10だけど) ハードウェアでのインスタンシング描画 テセレーションのシェーダーについて(TCS, TES) シ...
OpenGL

OpenGL Shader subroutine を試してみた

GLSLシェーダープログラムの関数を切り替える拡張である GL_ARB_shader_subroutine を試してみました。使ってみた感想としては C言語プログラムの関数ポインタを設定して実行先を切り替える、そんなものとずいぶん近い気がします。 シェーダープログラムでは、切り替える関数の宣言、切り替えに使う変数を先に宣言しておきます。 今回はLambert...