GLSL

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

(OpenGLの)シェーダーバイナリ(GLSL Binary)

そういえばOpenGL 4.xでシェーダーのコンパイル結果をバイナリとして取得、ロードできる機能が追加されたのですが、当時ドライバがまだ対応していなくて見送っていました。ようやくこれについて調べてみることが出来たので、ここに書いておこうと思います。 まず、DirectXではシェーダーをコンパイルすると各ベンダで共通なシェーダーアセンブリ状態になります。このア...