ARB_shader_subroutineはDirectX 11にも搭載された、シェーダープログラムにおいてサブルーチン実行を許容する仕組み。光源の個数や光源の違いだけで別バリエーションシェーダーになってしまう事態を防げる