シェーダー

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 Shader subroutine を試してみた

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

DirectX11で旧シェーダーコード(HLSL)を使う

DirectX11(DX11) は DirectX9(DX9) に対応したハードでも一応動かすことが出来ます。このとき、DX9 にのみ対応ハードで動かす場合、DX11 の機能は当然使えません。シェーダーに関しても同様で、頂点シェーダー、ピクセルシェーダーのみを使用することになります。 fxcや関連するドキュメントをみると、そういった DX9 ハード用のシェー...
DirectX

D3DXでERROR_MOD_NOT_FOUND

ある環境でプログラムを動かそうとしたら、D3DXAssembleShaderFromFile 関数で ERROR_MOD_NOT_FOUND というエラーコードが返ってきた! こんなエラーは初めてで、エラーメッセージのログも何もなくとても困った・・・。 よくよく調べてみるとこのエラーは、必要なモジュール(DLL)がロードできなくてエラーとなったことを意味して...
Android

Tegra2での不具合

Tegra2でだけ特定のエラーメッセージが出てうまく動かないということに悩まされていました。調べてみても、日本じゃ該当なし、海外で報告があるけどよくわからないまま終了というやっかいな状態でした。 それが今回ようやく解決方法含めてわかったので、記事にしてみました。 戦っていたエラーメッセージは 、P1202: Texture's gl states do no...
DirectX

ハードウェアシャドウマップをやってみる -エラー編-

■うまく行きそうで失敗 AMD RADEON 5450の環境でもハードウェアシャドウマップが使える*1というので ちょっと試してみました。 しかしながら、DirectXのデバッグランタイムを使用すると エラーメッセージが表示される結果となってしまい現在調査中。 同プログラムはNVIDIA製グラフィックボード使ったときには正常だったのですが。 表示されるエラー...
プログラミング

SoftImageとリアルタイムシェーダー

■はじめに この日記は、”まるぺけ つくろーどっとコム”の質問箱(掲示板)で IKDさんやLAGさんとやりとりしていた内容を多くのOS環境でどうなんだろうと調査した結果です。 環境設定について詳しく教えてくださったLAGさんにも感謝しています。 また、以下の内容で動作確認に使ったシェーダーファイルもまた LAGさんが掲示板上で提供してくれたものを使用しており...
OpenGL

GLSLのデバッグ

GLSLをデバッグするのによいツールはないかと探してみたところ、 次のソフトウェアが見つかりました。 glslDevil shader maker これらについて書いてみます. ■ glslDevil 見た感じは、これが本命となりそうです。 手元で試してみたところ、OpenGLのAPIのトレースは行ってくれるのですが、 シェーダーのデバッグというのが行えませ...