Windows10 Shader

DirectX3D でモデルを描画する Windows10 Store アプリのシェーダーです。
BasicReaderWriter Class, TextureLoader Class, BasicMath.h は Windows10 DirectX Library に移動しました。

前田稔(Maeda Minoru)の超初心者のプログラム入門

シェーダーの説明

  1. DirectX3D でモデルを描画するにはシェーダーが必要です。
    本格的にシェーダープログラムを学ぶとなると一冊の分厚い本が出来上がります。
    ここでは難しいことは抜きにして DirectX3D のコーナーで使用するシェーダーをまとめてみました。
    DirectX9 以前は、ソースファイルは全て Shift_JIS でタイプしていたのですが、DirectXStore では utf-8 が使われています。
    それでも Windows10 のサンプルを見ると PixelShader, VertexShader は Shift_JIS が使われていました。
    また X-FILE も DirectX の初期から使われている3Dモデルファイルの形式で Shift_JIS でタイプされています。
    そこで PixelShader, VertexShader, X-FILE は Shift_JIS で、それ以外のファイルには utf-8 を使うことにします。
  2. シェーダーには DirectXStore 以前のものと Windows8 のものと Windows10 のものがあります。
    DirectXStore 以前(DirectX9 の頃)は整数型が使われていましたが、最近では float に変わっています。
    主に使用するのは Windows8 と Windows10 のもので、Windows8 のシェーダーもそのまま Windows10 で使うことが出来ます。
    Windows8 のシェーダーは float2, float3, float4 などが使われていますが、Windows10 のシェーダーと本質的な違いはありません。
    シェーダー以外で float2, float3, float4 などを使うときは "BasicMath.h" を取り込んで下さい。
    "BasicMath.h" のソースコードは Windows10 DirectX Library を参照して下さい。
  3. Windows10 のシェーダーは Sample で始まりますが、Windows8 のシェーダーは Simple で始まります。
    Windows10 で使うときはシェーダー名を変更するか下記の部分を修正して下さい。
        auto loadVSTask = DX::ReadDataAsync(L"SampleVertexShader.cso");
        auto loadPSTask = DX::ReadDataAsync(L"SamplePixelShader.cso");
    
  4. プロジェクトにシェーダーを組み込むときは[シェーダーの種類]を設定して下さい。
    PixelShader.hlsl を右クリックしてプロパティを表示します。
    [HLSL コンパイラ][全般][シェーダーの種類]からピクセルシェーダーに設定して下さい。
    同様に VertexShader.hlsl の[シェーダーの種類]を頂点シェーダーに設定して下さい。
    シェーダーに SV_TARGET のエラーが表示されたときは、この設定を疑って下さい。
  5. X-FILE をプロジェクトに組み込むときは、プロパティからコンテンツを True に設定して下さい。
    画像ファイルは自動的にコンテンツに設定されるのですが、X-FILE は手作業で設定しなければならないようです。
    プロジェクトの名前は App1 を例にして説明しています。

シェーダー一覧

  1. Windows8 Sample の「頂点座標」だけのシェーダーです。
  2. 自動生成で構築される「頂点座標+3色カラー」のシェーダーです。
    カラーには3色カラーと4色カラーがあります。
    バウンダリが関係しているためか?、3色よりも4色を使う方が良いようです。
  3. Windows8 の「頂点座標+3色カラー」のシェーダーです。
  4. 「頂点座標+法線」のシェーダーです。
  5. Windows8 の「頂点座標+法線」のシェーダーです。
  6. 「頂点座標+法線+3色カラー」のシェーダーです。
  7. 「頂点座標+法線+4色カラー」のシェーダーです。
  8. 「頂点座標+法線+テクスチャ」のシェーダーです。
  9. Windows8 の「頂点座標+法線+テクスチャ」のシェーダーです。
  10. 「頂点座標+法線+テクスチャ+カラー」のシェーダーです。
    "BasicMath.h" を取り込んで float2, float3, float4 を使っています。
  11. 他にもシェーダーの構成は色々あると思いますが、これらを参考に作成して下さい。

超初心者のプログラム入門(DirectX Store)