グラフィックス プログラマーとして雇用されるために何を知っておく必要があるかよく尋ねられます。毎回入力し直すのではなく、リンク先のページを作成する時期が来たと思いました。
私たちは LLM に関して奇妙な時代を迎えています。現状の ML は誇大宣伝に応えられず、今後数年間で振り子は ML から少し離れていくと思います。私は、詐欺師たちは量子コンピューティングに移行するか、何か他のものを見つけて汲み上げたり捨てたりするだろうと思います。ただし、ML 自体はコンピューター サイエンスのツールボックスの中に位置を占めているため、ML が提供するフィッティングおよび最適化の手法について学ぶことは貴重な IMO です。地金部分について学ぶために視聴できるビデオを作成しましたが、学ぶ価値があると感じるかどうかはあなた次第です。
ゲーム開発者のための機械学習
https://www.youtube.com/watch?v=sTAqWRsEiy0
これ以外:
最新のレンダリングは 2 つのタスクのようなものです。
- CPU 側の学習 – アセットやその他のヘルパー関数の読み込みをサポートするために、DirectX 12、Vulkan、Metal などの最新の「明示的な」API とエンジン プログラミングを学習します。
- GPU 側の学習 – 最新のライティングとシェーディングの数学、シャドウ、アンビエント オクルージョン、後処理効果などのレンダリング技術。また、GPU 上で何が速くて何が遅いのかを理解することは、リアルタイムでの動作を改善する方法を知るための鍵となります。
両方のことを同時に学ぶのは非常に困難です。 #2 に重点を置きたい場合は、OpenGL、WebGL、DirectX11、エンジンなどの、より単純なものを #1 に使用できます。 #1 に焦点を当てたい場合は、画面上に最初の三角形が表示されるまで作業し、次に画面上にメッシュが表示されるなどの作業を行う必要がありますが、あまりにもきれいになることを心配する必要はありません。
#2 の一部はパス トレーサーの作成です。パス トレーシングは映画をレンダリングする方法であり、これを最新のリアルタイム レンダリング技術で近似しようとしています。パス トレーサを始めるのに最適な場所は、この無料のオンライン ブック「Ray Tracing in One Weekend」です。多くの人が利用したことがあります。非常にアクセスしやすく、写真をリアルな表現のように見せる方法を示します。
https://raytracing.github.io/books/RayTracingInOneWeekend.html

#2 のもう 1 つの部分は、「物理ベース レンダリング」または PBR を学習することです。これは、照明 (結局のところ、主に鏡面反射光) を適用する方法です。 PBRは「理論的」であり、ルールに従えば良い結果が得られることを意味します。 PBR が登場する前は、人々はあらゆる種類のランダムなバリエーションやハックを使用して、光のランダムな方程式を作成していました。これにより、ある位置では見栄えの良いアセットを作成できるようになりましたが、照明を変更すると暗くなりすぎたり、光っているように見えたりすることがあります。さまざまな照明条件に合わせてさまざまなバージョンのアセットを作成する必要があり、これには多大な時間と労力がかかりました。
PBR を使用すると、デフォルトでアセットがあらゆる照明条件でより良く見えるようになり、さまざまなバージョンを作成する時間と労力が節約されます。これは私たちの業界にとって大きな勝利でした。それにもかかわらず、アセット作成にかかる時間、資金、労力は依然としてゲーム開発の大きな障壁となっています。
このページの PBR セクション (およびサブセクション) は、PBR についての優れた入門書です。
https://learnopengl.com/PBR/理論

ある時点でこれを超えてさらに深く掘り下げたい場合は、フィラメントのドキュメントを読むことが次のステップとして良いでしょう。 PBR をさらに深く掘り下げると、多くの計算と統計が見つかります。
https://google.github.io/filament/Filament.md.html
また、有名な PBRT 書籍『Physical Based Rendering: From Theory to Implementation』もオンラインで無料で入手できます。
https://pbrt.org/
どのような数学を知っておく必要があるのか疑問に思うかもしれません。上記のことを行うと、知っておく必要のある数学に遭遇しますが、基本的に必要なのは線形代数 (行列の乗算、外積、内積)、基本的な三角法、および少しの微積分だけです。グラフィックス (およびゲーム開発全般) の面白い点は、必要な数学の量はかなり少ないものの、使用できる数学の量は基本的に無限であることです。
アルゴリズム的にも同様です。基本的な抽象データ型と、リンク リスト、ハッシュ テーブル、並べ替え、検索などのアルゴリズムを知っておく必要があります。多くの場合、最速のアルゴリズムは最も単純です。配列はリンク リストよりもはるかに高速です。ただし、より高度なアルゴリズムの概念を知っていれば、本当に革新的でカスタムなものが必要なときに役立ちます。
ゲーム開発では C++ が学ぶべき言語です。 Rust を使用している人もいますが、Rust の使用が増加しているかどうかを判断するのは困難ですが、たとえそれが人々が知っていると期待している標準言語ではないとしても、Rust はパイの一部を占めています。 WebGPU には WebGL にはなかった多くの機能があり、CPU 側の作業を JavaScript に移行できる本格的なプラットフォームになりつつあります。ただし、WebGPU の求人が投稿されているのをあまり見たことがありませんし、Web 上で WebGPU コンテンツをあまり見たことがありません。 CPU 側プログラミングのための C++ を知ることは、今では学習の問題のように思えます。
シェーダ言語としては hlsl が最も一般的のようですが、glsl で作業している人もいます。マルチプラットフォーム ゲームでは、シェーダーが他のシェーダー言語に移植されることがよくあります。
状況が変化したり、ここで取り上げられていない質問があった場合には、このページを更新し続けます。
エージェントに関する拡張 ML コメント:
現在の ML テクノロジーが、販売されているもののほとんどに使用される場合、「十分な役割を果たしている」とは思えません。数学、論文、またはなじみのないアルゴリズムについてクラウドと話すことで、最大限の効果が得られます。そのような状況で何かをでっち上げているかどうかを確認したり、他のソースをチェックして健全性をチェックしたりするのは簡単です。しかし、やるべきことをやっても時間をかけて理解しないとコードを理解できないので、プログラミングにはあまり役に立ちません。あの時、素直に書けば良かった。 「このファイルにバグはありますか?」など、役に立つと思うことはいくつかあります。 「はい」を返して確認できるか、「いいえ」を返して質問しても費用はかかりません。こうした専門的なことはさておき、人類はある時点で、真の人間レベルの人工知能を作成し、それを超える方法を見つけ出すだろうと私は信じています。私が生きている間にそれが起こるかどうかはわかりませんが、まず自分自身を破壊しない限り、いつかは起こると信じています。このように、LLM の時代は、後で「本番」が来るときの予行演習のようなものです。私たちが正しい教訓を学び、その時が来たときにさらに備えられることを願っています。









Leave a Reply