NEUROMANTIC

自分でC/C++/UE4/Graphics/ゲームなどをやったことをメモするブログ

「一流グラフィックスプログラマへの道~リアルタイム編~」の感想及びメモ。

はじめに

いろいろとプロジェクトを作っているのですが、実は私はゲームのグラフィックスに興味があります。
そしてゲーム開発界隈に入ってから最終的にはローレベルを弄りまくるグラフィックスプログラマになりたいです。
(エンジンを底を触りながらグラフィックスなんてちょっととんでもなさそうですけどね)

raytracing.hatenablog.com

それで一昔前に「一流グラフィックスプログラマへの道~リアルタイム編~」という記事を発見してお読みしました。今から3年の前の記事ですが、ローレベルのグラフィックスプログラマを目指している私には物凄く役に立ちそうな記事でしたので精読させていただきました。それで私が感じた感想やメモなどをブログにて書いていきたいと思います。


本文

  • 必須スキルとしてはGPU & グラフィックスのAPIの知識C / C++の知識
    • GPUの構造ならCUDAなのかな?と思いました。確か前にCUDAをちょっと触れたことがありますが、CPUの構造とは随分違いますね。ワープとか、原子性とかですね。
    • C/C++の知識は必須。エンジンの上でいじらない以上、低水準でコードを作成することはあまりにも当然ですから。多分C++17まで覚えて使えるようになれば良いかもしれないと感じました。
  • Crytekは「特にDirect3D」と書いていたそうですが、3年前の記事ですからどうですかね。OpenGLかVulkanも構わないと思いますね。

  • 重要スキルとしてはコンピュータグラフィックス知識全般、3D数学、線形代数、ローレベルのデバック・指摘化の技術だそうです。

    • 3D仮想空間でオブジェクトの移動、回転、スケール、軌道確認などは全部線形代数を積極的に仕様して動かしています。配列に配列を乗算したりして回転をさせたりします。
    • Quaternionのメカニズムはしっかりと覚えるほうが良いと思いました。
    • CAPCOMでは「光学・数学・物理学」に深度深い知識を持つ必要があると書いていたそうです。確かに最近のゲームエンジンかそれともレンダリングのトレンドがPBR(Physical Based Rendering)ですので要求するに無理ではありませんね。辛いですね。()
  • そして各種のグラフィックスプロファイリングツールの習熟を求めている会社も何箇所あるそうです。

    • NvidiaのNsightか、VulkanのRenderdocを少しでも勉強するほうがいいかもしれませんね。
  • 学歴としてはCSE(コンピュータサイエンスまたはエンジニアリング)の学士号を求めているところもありそうで、でないところもあるようです。

    • 3年前の基準で海外(西洋)では普通にもとめているそうで、日本のゲーム会社では学歴不問が多いようです。しかし出来たら学士号でも取るほうが良いかもしれないと思いました。(涙)
    • 博士号を求める会社もあるようですが、さすがないこれはちょっとないわ
  • コミュ力も重要。会社では自分だけ働くわけではありませんし、チーム単位として働きますからコミュニケーションは重要です。今でも相手と話す練習しましょう。(

    • 自主的に行動することも重要です。自主的行動し、問題に立ち向かい解決する能力が問われています。
  • 過去の経験欄は多分転職を希望している方に合えると思いました。日本のゲーム会社では以前に何をしていたかを求める会社が多いそうです。

  • 経験年数については少なくとも5年以上のグラフィックスプログラミングの経験がある方が良いかもしれない書いておりました。

  • どこのゲーム会社でもゲーム開発の熱情は常に求められています。支援したいゲーム会社のリリースしたゲームをプレイした経験があればインタビューかシートを書くときに役に立つかもしれないですね。

  • プロジェクトで読みやすく、移植しやすく、信頼性の高い、最適化されたコードを書ける必要があります。(これだけでも結構ヤバめ)

    • グラフィックスプログラミングはエンジン側にも密接に接触していますので、ゲーム会社では「エンジンプログラマ」として採用する場合もあるそうです。
    • 英語文書をすらりと読める能力が必要となっています。高級技術は全部英語で書いておりますので、これを沿えるには英語が必須となりますね。
    • グラフィックスプログラマはアーティストとも密接に連携する必要がある。
      • これはなぜなら最適化したり、フォーマットなどを調整したりするためにコミュニケーションを取らないといけない場合がありますからね。
  • グラフィックスプログラマに要求される知識・スキルは

    • SSAO(Ambient Occlusion)
    • Deferred Shading(&Forward+などの?)
    • Shadow実装(&Classic&PSSM&CSM&などなど)
    • GI(Global Illumination)
    • Particles
    • Marching Cubes(&Dual depth peeling)
    • その他のグラフィックス知識・スキル
  • この記事での結論は、C++ / 数学(特に線形代数) / グラフィックスの知識を積みながら学んだものを十分発揮したゲームまたは技術プログラムを作ることだ。と述べています。

    • 頑張らないとね。。。

まとめ

自分が何をすべきかについて物凄く参考になったと思いました。
C++は今でも使っていて、別に問題はありません。しかし線形代数やら数学、そして高級グラフィックス技術の実装などが問題っぽいですね。。。

頑張らないと生き残れないこの時代とこの界隈でずっと生き延びたいですからすごく頑張らないとと思いました。なんか変ですね。