トップページ > 記事閲覧
プログラマブルシェーダー関係関数について
名前:naru 日時: 2022/11/16 07:06

おはようございます、お世話になっております。 LoadVertexShader、LoadPixelShader のオンラインリファレンスを読み、Direct3D9EX、シェーダバージョン3.0を使用して練習しようとしているのですが、 不明に思った点があるのでよろしければご教示ください。 >LoadVertexShader >DXライブラリ内部で設定する頂点シェーダー定数について >Direct3D 9 の場合 >float4型定数 >19    有効ライト0番目の x:有効距離の二乗 y:Falloff >                   z:距離減衰パラメータ0 w:距離減衰パラメータ1 >20    有効ライト0番目の x:距離減衰パラメータ1 >                 y:スポットライト用パラメータ0( cos( Phi / 2.0f ) ) >                 z:スポットライト用パラメータ1( 1.0f / ( cos( Theta / 2.0f ) - cos( Phi / 2.0f ) ) ) Falloff にはどのような値が入ってくるのでしょうか?距離減衰パラメータが有効かどうかの真偽値? 距離減衰パラメータ1が被っていますが、下の方は距離減衰パラメータ2の間違い? >BOOL型定数 >10〜12  ライト2のパラメータ( 内訳は 4〜6 と同じ ) >12〜14  ライト3のパラメータ( 内訳は 4〜6 と同じ ) >15     ライブラリでは未使用 12番が被っていますが、13〜15の間違い? >LoadPixelShader >37     有効ライト0番目の x:有効距離の二乗 y:Falloff >                   z:距離減衰パラメータ0 w:距離減衰パラメータ1 >38     有効ライト0番目の x:距離減衰パラメータ1 >                 y:スポットライト用パラメータ0( cos( Phi / 2.0f ) ) >                 z:スポットライト用パラメータ1( 1.0f / ( cos( Theta / 2.0f ) - cos( Phi / 2.0f ) ) ) >39〜45  有効ライト1番目のパラメータ( 内訳は 32〜38 と同じ ) >46〜52  有効ライト2番目のパラメータ( 内訳は 32〜38 と同じ ) >53〜59  有効ライト3番目のパラメータ( 内訳は 32〜38 と同じ ) >48〜223  未使用( ピクセルシェーダー3.0で使用可能な float4型定数の数は 224個です ) >int4型定数 >0〜15    ライブラリでは未使用( ピクセルシェーダー2.0では int4型定数はありません ) >BOOL型定数 >0〜15    ライブラリでは未使用( ピクセルシェーダー2.0では int4型定数はありません ) 48〜223は、60〜223の間違い? ピクセルシェーダ2.0と3.0が混在していますが、2.0と3.0で違いはあるでしょうか?
メンテ

Page: 1 |

Re: プログラマブルシェーダー関係関数について ( No.1 )
名前:管理人 日時:2022/11/17 00:58

> Falloff にはどのような値が入ってくるのでしょうか? スポットライトの内部円錐と外部コーンの間の明るさの変化に関わるパラメータなのですが、 こちらの解説では『あまり影響が無い割に計算負荷が高いので、基本的には 1.0 を設定する』とのことです <D3DLIGHT9 構造体> https://learn.microsoft.com/ja-jp/windows/win32/direct3d9/d3dlight9 ( 変数名まで日本語翻訳されてしまっているのでページ内を『フォールオフ』で検索すると解説が見つかります ) > 距離減衰パラメータ1が被っていますが、下の方は距離減衰パラメータ2の間違い? すみません、ご指摘の通り正しくは 距離減衰パラメータ2 となります m(_ _;m > 12番が被っていますが、13〜15の間違い? すみません、ご指摘の通り正しくは 13〜15 となります m(_ _;m ( なので『15 ライブラリでは未使用』も誤りとなります ) > 48〜223は、60〜223の間違い? すみません、ご指摘の通り正しくは 60〜223 となります m(_ _;m > ピクセルシェーダ2.0と3.0が混在していますが、2.0と3.0で違いはあるでしょうか? 3.0 は 2.0 よりも長いシェーダーコードを使用することができる他、定数レジスタの数が大幅に 増えていたりと 2.0 より 3.0 の方が色々と機能が強化されています ( 2.0 の設定でシェーダーをコンパイルすると、ちょっと長いシェーダーになるとすぐ 『命令数が多すぎます』というエラーが発生してしまいます ) <wikipedia High Level Shading Language> https://ja.wikipedia.org/wiki/High_Level_Shading_Language
メンテ
Re: プログラマブルシェーダー関係関数について ( No.2 )
名前:naru (解決) 日時:2022/11/17 01:51

お忙しい中、ご回答ありがとうございます。 >あまり影響が無い割に計算負荷が高いので、基本的には 1.0 を設定する』 (自分のレベルでは)フォールオフは余り気にしなくて良さそうですね。 >3.0 は 2.0 よりも長いシェーダーコードを使用することができる他、定数レジスタの数が大幅に >増えていたりと 2.0 より 3.0 の方が色々と機能が強化されています >( 2.0 の設定でシェーダーをコンパイルすると、ちょっと長いシェーダーになるとすぐ >『命令数が多すぎます』というエラーが発生してしまいます ) 2.0を採用するメリットは無さそうですね。 リファレンスのシェーダ定数の設定値は3.0に添っているものと解釈致しました。 まだまだ勉強不足ですが、提示して頂いたリンクも含めて勉強し、使ってみて理解を深めて行きたいと思います。 この度も、ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存