質問

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

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

役に立ちましたか?

解決

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

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

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

次のステップとして、基本的なシミュレーションを行うとよいでしょう。 世俗的な照明 単一の光源からシェーダーの 1 つで。その後、これを複数のライトを使用するように適応させることができます。色や光の動きで遊んでください。これは、シェーダ定数の使用にも慣れるのに役立ちます。

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

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

もう少し上級者向けには、Nvidia からの優れた情報が記載されている、オンラインで無料で入手できる良書が 2 冊あります。 ここ そして ここ.

ShaderX という素晴らしいシェーダー関連の書籍シリーズがあることを忘れないでください。あるよ 1, 2, 3, 4, 5 そして 6 すでに印刷されており、 7 もうすぐ来ます。

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

他のヒント

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

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

私が学習を始めたときの良い練習は、クリッピング/カリングなどを備えた T&L パイプライン全体を実際にソフトウェアで実装することです。これは長いプロセスであり、楽しいことにだけ取り組みたいと思うので、価値がないと思われるかもしれませんが、何が起こっているのかを適切に理解することは非常に役立ち、常により陰湿で困難な問題に遭遇したときに価値があることがわかりますバグを診断するため。

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

シェーダーを使い始めるための最良の方法の 1 つは、Frank Luna による『DirectX 9.0c による 3D ゲーム プログラミングのシェーダー アプローチ』を読むことです。著者は最初に DirectX と HLSL を紹介し、次にシェーダーの能力を徐々に明らかにします。彼は非常に単純なシェーダーから始めますが、この本の終わりまでに照明、影、パーティクル システムなどを作成する方法がわかります。素晴らしい本。

OJ は ShaderX シリーズを読むことを勧めましたが、そこにあるものは初心者向けではないため、最初のステップを踏むときにはあまり役に立ちません。

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

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

それが完了したら、プロジェクト ライブラリにアクセスしてサンプルの参照を開始します。基本的なシェーディングから始めて、シャドウ、法線マッピング、マテリアル、エフェクトなど、興味のあるものすべてに移ります。プロジェクトを取り上げ、設定したいくつかの目標に従ってアルゴリズムの変更を開始し、それを達成する方法を確認します。例の多くは非常に高度であり、あなたの視野を広げるでしょう。

楽しむ

すでに多くの優れたアドバイスが提供されていますが、関連する手順を理解するのが難しい場合は、次のことを行ってください。 メンタルミル は、シェーダを構築する視覚的な方法を提供します (Artist Edition は Fx Composer に無料でバンドルされており、それ自体も無料です!)。

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

ある方法から別の方法へのエフェクトの視覚的な変化は非常に印象的です。

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

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

XNA や DirectX は使用したことがありません。ただし、Cg を使用したシェーダー プログラミングの基本を知るには、 CGチュートリアル 私が見つけた最高の本です。

RenderMonkey も参照してください。良いツールです。書籍に関しては、Riemer Grootjans の『XNA 2.0 Game Programming Recipes』をチェックしてください。素晴らしい本。

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

実行フローの追跡、シェーダーのデバッグ、テスト ケースの迅速な反復などにより、ビジュアル ツールでは得られない洞察が得られます。

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

..ただし私の推測では、その日が来る前に遅延ライティングとおそらく完全なソフトウェア レンダリングが登場することになるでしょう ;)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top