Direct3Dともプログラマブルシェーダを使用することが出来る。このサンプルは、"10.Shaders"にある。fxc等を使ってコンパイルしたシェーダを使えないので、実行環境にシェーダコンパイラを要求する。Runtimeのインストールされていない環境ではプログラマブルシェーダを使うことが出来ない。Runtimeが正式サポートされていないため、これは好ましくない。ストアアプリ全般において、実行環境でのシェーダのコンパイルは禁止されている。本節においては、コンパイル済みシェーダを使用できるように改造する。コンパイル済みシェーダの作成10.Shadersのサンプルは、mediaフォルダ内のd3d9.hlslを使用する。これを開発環境にてコンパイルしておく。SDK付属のfxc.exeで行なう。2010)付属のものを使用した。下記にて各シェーダをコンパイルする。d3d9.hlsl.ps.binD3DXライブラリ依存部の置き換えIrrlicht内部において、シェーダ定数の書き換えのために、D3DXライブラリのID3DXConstantTableを利用している。これはD3DXCompileShaderでコンパイルした場合にしか利用できないので、これと同等の情報をコンパイル済みシェーダから引き出す必要がある。幸いにも、これについては既に実装があるため、小改造して利用させていただいた。元のコードのままだと、行列がRow-majorかColumn-majorかの情報が得られないので、機能追加している。与えられたシェーダプログラムがバイナリであれば、コンパイルせずにシェーダ生成するように変更する。バイナリかどうかの判別処理が手抜きなので、問題が起きたら変更すること。シェーダ定数テーブルについては、コンパイルする場合もしない場合も、前述ConstantTableクラスで扱うよう統一した。シェーダ定数設定部の改造ID3DXConstantTableを使用する個所を前述ConstantTableクラスを使用するように変更した。下記のように、hlslファイルではなく、コンパイル済みバイナリを指定するように変更する。Runtimeの導入されていないPCにおいても正常動作させることが出来る。本節の改造においては、10.Shadersのサンプルを動作させるところまでは確認しているが、それ以上の動作確認はしていないので、注意すること。2018管理者宛メール。