006.テクスチャ付き四角形のフェード処理(Dx12版)

 このサンプルはSimplSample006というディレクトリに含まれます。
 BaseCrossDx12.slnというソリューションを開くとDx12版が起動します。

 実行結果は以下のような画面が出ます。

 

図0006a

 


 動画は以下になります。

 

 

【共通解説】

 Dx12、Dx11両方に共通なのはシェーダーです。DxSharedプロジェクト内にシェーダファイルというフィルタがあり、そこに記述されてます。
 今回使用するシェーダは頂点シェーダとピクセルシェーダです。VertexPositionTexture型の頂点を持ち、コンスタントバッファからの入力で、位置を変更させています。
 またテクスチャも描画します。

 今項のサンプルは前項のサンプルと大きく変わったところはありません。今項は、ディフューズ色を変更することによって、オブジェクト全体を半透明にする処理をしています。

【Dx12版解説】

 BaseCrossDx12.slnを開くと、BaseCrossDx12というメインプロジェクトがあります。この中のCharacter.h/cppが主な記述個所になります。

■初期化■

 初期化処理は前項と変わりありません。変更するディフューズ色のための変数m_Diffuseを持ち、経過時間をm_TotalTimeに持ちます。そして更新時にm_Diffusem_TotalTimeをサイン計算することで、透明になったり、ならなかったりを繰り返す処理をしています。

■更新処理■

 更新処理は、SquareSprite::OnUpdate()関数で実装されます。左右に移動しながら、中心からの距離が一定以上になれば逆向きに移動する形です。回転も移動方向に応じて別の回転をかけています。
 その際、m_Diffuseを動的に変更します。m_Diffuseはシェーダに渡されます。
 この処理はDx11版も変わりません。

■描画処理■

 前項のサンプルと変わりません。

 以上、Dx12側の説明は終わりです。


【まとめ】

 今項のサンプルはサンプルとして独立させるには、前項の内容と被るところが多く、ちょっともったいないかとは思います。
 ポイントはディフューズ色を使った半透明化アニメーションというわけですが、もう少しエフェクトなどで使えるサンプルを用意すればよかったかなと思います。ざっと実行だけ確認していただければいいかと思います。