コード例 #1
0
        public void ResetDrawState(int 頂点数, int 頂点の開始インデックス, MMDPass pass種別, DeviceContext d3ddc)
        {
            this._頂点数         = 頂点数;
            this._頂点の開始インデックス = 頂点の開始インデックス;
            this.MMDPass      = pass種別;
            this._d3ddc       = d3ddc;

            // 既定のパイプラインステートを設定。

            switch (pass種別)
            {
            case MMDPass.Edge:
                this._d3ddc.VertexShader.Set(this._DefaultMaterialShader.VertexShaderForEdge);          // Edge
                this._d3ddc.HullShader.Set(this._DefaultMaterialShader.HullShader);
                this._d3ddc.DomainShader.Set(this._DefaultMaterialShader.DomainShader);
                this._d3ddc.GeometryShader.Set(this._DefaultMaterialShader.GeometryShader);
                this._d3ddc.PixelShader.Set(this._DefaultMaterialShader.PixelShaderForEdge);            // Edge
                break;

            default:
                this._d3ddc.VertexShader.Set(this._DefaultMaterialShader.VertexShaderForObject);
                this._d3ddc.HullShader.Set(this._DefaultMaterialShader.HullShader);
                this._d3ddc.DomainShader.Set(this._DefaultMaterialShader.DomainShader);
                this._d3ddc.GeometryShader.Set(this._DefaultMaterialShader.GeometryShader);
                this._d3ddc.PixelShader.Set(this._DefaultMaterialShader.PixelShaderForObject);
                break;
            }

            this._選択中のVertexShader   = null;
            this._選択中のHullShader     = null;
            this._選択中のDomainShader   = null;
            this._選択中のGeometryShader = null;
            this._選択中のPixelShader    = null;
        }
コード例 #2
0
        public void Draw(int 頂点数, int 頂点の開始インデックス, MMDPass pass種別, DeviceContext d3ddc)
        {
            this._PipelineState.ResetDrawState(頂点数, 頂点の開始インデックス, pass種別, d3ddc);

            this._PipelineState.Reason = Reason.Run;
            this._ShaderScript.RunAsync(this._PipelineState);
        }
コード例 #3
0
        /// <summary>
        ///     材質を描画する。
        /// </summary>
        /// <remarks>
        ///     このメソッドの呼び出し前に、<paramref name="d3ddc"/> には以下の設定が行われている。
        ///     - InputAssembler
        ///         - 頂点バッファ(モデル全体)の割り当て
        ///         - 頂点インデックスバッファ(モデル全体)の割り当て
        ///         - 頂点レイアウトの割り当て
        ///         - PrimitiveTopology の割り当て(PatchListWith3ControlPoints固定)
        ///     - VertexShader
        ///         - slot( b0 ) …… グローバルパラメータ
        ///     - HullShader
        ///         - slot( b0 ) …… グローバルパラメータ
        ///     - DomainShader
        ///         - slot( b0 ) …… グローバルパラメータ
        ///     - GeometryShader
        ///         - slot( b0 ) …… グローバルパラメータ
        ///     - PixelShader
        ///         - slot( b0 ) …… グローバルパラメータ
        ///         - slot( t0 ) …… テクスチャ
        ///         - slot( t1 ) …… スフィアマップテクスチャ
        ///         - slot( t2 ) …… トゥーンテクスチャ
        ///     - Rasterizer
        ///         - Viewport の設定
        ///         - RasterizerState の設定(材質に応じた固定値)
        ///     - OutputMerger
        ///         - RengerTargetView の割り当て
        ///         - DepthStencilView の割り当て
        ///         - DepthStencilState の割り当て(固定)
        /// </remarks>
        public void Draw(int 頂点数, int 頂点の開始インデックス, MMDPass pass種別, DeviceContext d3ddc)
        {
            switch (pass種別)
            {
            case MMDPass.Object:
                d3ddc.VertexShader.Set(this.VertexShaderForObject);
                d3ddc.HullShader.Set(this.HullShader);
                d3ddc.DomainShader.Set(this.DomainShader);
                d3ddc.GeometryShader.Set(this.GeometryShader);
                d3ddc.PixelShader.Set(this.PixelShaderForObject);
                d3ddc.DrawIndexed(頂点数, 頂点の開始インデックス, 0);
                break;

            case MMDPass.Edge:
                d3ddc.VertexShader.Set(this.VertexShaderForEdge);
                d3ddc.HullShader.Set(this.HullShader);
                d3ddc.DomainShader.Set(this.DomainShader);
                d3ddc.GeometryShader.Set(this.GeometryShader);
                d3ddc.PixelShader.Set(this.PixelShaderForEdge);
                d3ddc.DrawIndexed(頂点数, 頂点の開始インデックス, 0);
                break;

            case MMDPass.ObjectWithSelfShadow:
                break;

            case MMDPass.Shadow:
                break;

            case MMDPass.ZPlotForSelfShadow:
                break;
            }
        }
コード例 #4
0
 /// <summary>
 ///     材質を描画する。
 /// </summary>
 /// <param name="d3ddc">
 ///     描画に使用するDeviceContext。
 /// </param>
 /// <param name="頂点数">
 ///     材質の頂点数。
 /// </param>
 /// <param name="頂点の開始インデックス">
 ///     頂点バッファにおける、材質の開始インデックス。
 /// </param>
 /// <param name="pass種別">
 ///     材質の描画種別。
 /// </param>
 /// <param name="グローバルパラメータ">
 ///     グローバルパラメータ。
 /// </param>
 /// <param name="グローバルパラメータ定数バッファ">
 ///     グローバルパラメータの内容が格納された定数バッファ。
 /// </param>
 /// <param name="テクスチャSRV">
 ///     材質が使用するテクスチャリソースのSRV。未使用なら null。
 /// </param>
 /// <param name="スフィアマップテクスチャSRV">
 ///     材質が使用するスフィアマップテクスチャリソースのSRV。未使用なら null。
 /// </param>
 /// <param name="トゥーンテクスチャSRV">
 ///     材質が使用するトゥーンテクスチャリソースのSRV。未使用なら null。
 /// </param>
 /// <remarks>
 ///     このメソッドの呼び出し時には、<paramref name="d3ddc"/> には事前に以下のように設定される。
 ///     - InputAssembler
 ///         - 頂点バッファ(モデル全体)の割り当て
 ///         - 頂点インデックスバッファ(モデル全体)の割り当て
 ///         - 頂点レイアウトの割り当て
 ///         - PrimitiveTopology の割り当て(PatchListWith3ControlPoints固定)
 ///     - VertexShader
 ///         - slot( b0 ) …… <paramref name="グローバルパラメータ定数バッファ"/>
 ///     - HullShader
 ///         - slot( b0 ) …… <paramref name="グローバルパラメータ定数バッファ"/>
 ///     - DomainShader
 ///         - slot( b0 ) …… <paramref name="グローバルパラメータ定数バッファ"/>
 ///     - GeometryShader
 ///         - slot( b0 ) …… <paramref name="グローバルパラメータ定数バッファ"/>
 ///     - PixelShader
 ///         - slot( b0 ) …… <paramref name="グローバルパラメータ定数バッファ"/>
 ///         - slot( t0 ) …… <paramref name="テクスチャSRV"/>
 ///         - slot( t1 ) …… <paramref name="スフィアマップテクスチャSRV"/>
 ///         - slot( t2 ) …… <paramref name="トゥーンテクスチャSRV"/>
 ///         - slot( s0 ) …… ピクセルシェーダー用サンプルステート
 ///     - Rasterizer
 ///         - Viewport の設定
 ///         - RasterizerState の設定
 ///     - OutputMerger
 ///         - RengerTargetView の割り当て
 ///         - DepthStencilView の割り当て
 ///         - DepthStencilState の割り当て
 /// </remarks>
 public void Draw(
     DeviceContext d3ddc,
     int 頂点数,
     int 頂点の開始インデックス,
     MMDPass pass種別,
     in GlobalParameters グローバルパラメータ,