19

Microsoft の XNA を使用してゲーム開発を始めたいと考えています。その一部はシェーダーの開発ですが、どうやって始めればよいかわかりません。nVidia の FX Composerがシェーダーを開発するための優れたツールであることは知っていますが、実際に作業を開始する方法に関する有用で更新されたコンテンツはあまり見つかりませんでした。

どのチュートリアルをお勧めしますか?

4

9 に答える 9

31

XNA(明らかにDirectXを使用)でのシェーダーの開発には、HLSLまたはシェーダーアセンブリの知識が必要です。後者に飛び込む前に、前者に精通することをお勧めします。

シェーダーを作成する前に、シェーダーパイプラインをしっかりと理解し、プログラム可能なシェーダーを使用するときに何ができるかを考えてみることをお勧めします。ピクセルの寿命(ソースデータから画面に至るまで)に精通していると、シェーダーの例を理解するのがはるかに簡単になります。

次に、手を汚すために、 Fixed T&Lパイプラインが行っていたことを実行する独自のHLSLを作成してみます。これは、頂点/ピクセルシェーダーワールドの「HelloWorld」プログラムに相当します。あなたがそれをすることができて、あなたがあなたが書いたものを理解するとき、あなたはもっと楽しいものに進む準備ができています。

次のステップとして、単一の光源からシェーダーの1つで基本的な個別の照明をシミュレートすることができます。次に、これをトラックに合わせて、複数のライトを使用するように調整できます。色や光の動きで遊んでください。これは、シェーダー定数の使用にも慣れるために役立ちます。

いくつかの基本的なシェーダーを一緒に使用する場合は、ゲーム/エンジンが異なるオブジェクトで複数の/異なるシェーダーを使用するようにする必要があります。基本的なバンプ法線マップなど、他のビットの追加を開始します。

この段階に達すると、世界はあなたのカキです。いくつかのファンキーなエフェクトに飛び込み始めることができ、GPUを当初の意図よりも多く使用することを検討することもできます。

もう少し上級者向けに、オンラインで無料で入手できる優れた本がいくつかあります。これらの本には、Nvidiaからの優れた情報がここここにあります。

いくつかの素晴らしいシェーダーをカバーするShaderXと呼ばれる優れたシリーズの本があることを忘れないでください。すでに1、2、3、4、5、6印刷されており、7が間もなく登場ます

幸運を。シェーダーを動かしてみたら、ぜひ見てみたいです:)

于 2008-08-10T04:21:32.333 に答える
5

GPU Gems の書籍がいかに優れているかを繰り返し述べたいと思います。本格的なグラフィックス開発にとって本当に素晴らしいリソースです。

OJ は基本的に学習の非常に優れたプロセスを要約しています。幾何学的な数学 (最低でもベクトル/行列) の優れた基礎を持つことは過小評価できないことを付け加えておきますが、人々が理解するほど難しくはありません. 内積、外積、法線ベクトル、行列の乗算が何であり、何をするのかを学ぶことは、良い最初のステップです:)。ワールド/ビュー/プロジェクション クリップ/スクリーン スペースの間で何が起こっているのか、パースペクティブの分割とは何かなどを正確に理解するようにしてください。

私が学習を始めたとき、T&L パイプライン全体を実際にソフトウェアに実装し、クリッピング/カリングなどを実行することをお勧めします。しかし、何が起こっているのかを正しく理解することは非常に有用であり、より潜行性が高く、診断が困難なバグに常に遭遇したときに価値があることが証明されます。

最初は FX Composer のようなツールを傍観しないようにしてください。それらはプロトタイピングに役立ちますが、基本にしっかりとした基盤があることは、長期的にははるかに価値があります。

于 2008-08-14T15:57:36.833 に答える
3

シェーダーを使い始める最良の方法の 1 つは、Frank Luna による DirectX 9.0ca Shader Approach による 3D ゲーム プログラミングの紹介を読むことです。著者はまず DirectX と HLSL を紹介し、その後シェーダーの威力を徐々に明らかにします。彼は非常に単純なシェーダーから始めますが、本の終わりまでに、照明、影、パーティクル システムなどの作成方法を理解します。すばらしい本です。

OJ は ShaderX シリーズを読むことを提案しましたが、そこにあるものは初心者向けではないため、最初の一歩を踏み出すときにはあまり役に立ちません。

また、ゲーム開発を始めるのに最適な本についての記事もここに投稿しました。

于 2008-11-27T22:15:35.613 に答える
2

すでに多くの優れたアドバイスが提供されていますが、関連する手順について頭を悩ませている場合は、Mental Millがシェーダーを視覚的に構築する方法を提供します(ArtistEditionはFxComposerに無料でバンドルされています-それ自体も自由!)。

HLSLコードを直接長期的に学習する方がよいでしょうが、Mental MillはこれらのFxファイルを生成できます(変更を確認できます)。すべてのコードジェネレーターと同様に、HLSLを理解した後のコードジェネレーターよりも少し冗長であることに注意してください。

ある方法から別の方法への効果の視覚的な進行は非常に印象的です!

于 2008-10-27T17:02:04.443 に答える
2

私はOJに与えられた賞賛に参加します-本当に良い答えです. それでも、基本的な理解ができたら、次の 2 つの優れたツールのいずれかをダウンロードすることで、多くのことをすばやく学ぶことができます。

それができたら、彼らのプロジェクト ライブラリに移動し、基本的なシェーディングから始めて、シャドウ、法線マッピング、マテリアル、エフェクト、および興味のあるものすべてに移動して、例をブラウズし始めます。プロジェクトを取り、設定した目標に従ってアルゴリズムの変更を開始し、それを達成する方法を確認します。例の多くは非常に高度であり、視野が広がることがわかります。

楽しむ

于 2008-09-17T19:03:08.907 に答える
1

XNA や DirectX は使用していません。しかし、Cg を使用したシェーダー プログラミングの基礎を知るには、Cg チュートリアルが最適です。

于 2008-08-18T10:34:11.453 に答える
1

Chad Carter によるSAMS のXNA Unleashedは、XNA の優れた出発点であり、始める前にゲーム開発の実践や難しい数学についてほとんど知識がないことを前提としています。基本的なシェーダーと高度なシェーダーに関する 2 つの章があります。

補足として、Google の WPF シェーダー チュートリアルに注目してください。現在、同じテクノロジを使用して、WPF アプリケーションで顧客のシェーダーを許可しており、そのためのチュートリアルは XNA とほぼ互換性があると思われます。

于 2008-08-10T00:45:01.973 に答える
1

ビジュアル シェーダー エディターに関する簡単な考察。この種のエディターはとても楽しいものですが、テキストベースの HLSL を使い続けることを強くお勧めします (RM と FXC の両方が機能します)。私はゲーム開発者として働いており、いくつかのシェーダー システム (たとえば、Battlefield 2 と Farcry 2 のもの) を構築してきましたが、正直なところ、HLSL はこれまでのどのグラフィック シェーダー ネットワークよりも価値があることがわかりました。

実行の流れをたどったり、シェーダーをデバッグしたり、テスト ケースをすばやく反復したりして、ビジュアル ツールでは得られない洞察を得ることができます。

私自身もビジュアル シェーダー ビルダーを使用しており、それらが気に入っています。いつの日か、シェーディングが今日ほどパフォーマンスが重要でなくなったときに、これらのツールが適切なツールになるかもしれません。

..私の推測では、その日が来る前に、ディファード ライティングと、おそらく完全なソフトウェア レンダリングが見られると思います ;)

于 2008-11-15T01:46:28.517 に答える
1

RenderMonkey も参照してください。それは良いツールです。本に関する限り、Riemer Grootjans の XNA 2.0 Game Programming Recipes をチェックしてください...素晴らしい本です。

于 2008-08-28T15:08:18.500 に答える