グラフィックの荒野、または GameDev のコンピューター グラフィックス プログラマーのインタビューを受ける方法

皆さん、こんにちは!!!





私は 1 分間自由に使えるので、GameDev 企業の 3D グラフィックス プログラマーにインタビューするための簡単なガイドをまとめることにしました。私自身もこの分野で働いており、面接を受けに来たばかりの人や、長年働いていて複数のプロジェクトが完了し、その背後に多くの解決済みの仕事の問題やタスクを抱えている人など、さまざまな人々と多くのコミュニケーションを取っています。このトピックに興味がある場合は、猫の下にいるすべての人に尋ねます。





ほとんどの企業では、この職業/方向性を2つに分けるのが通例です:





1人目はゲーム グラフィックスのスペシャリスト、2 人目はコンピューター グラフィックスのスペシャリストです。違いは何ですか?最初のものは 2 番目のものの自然な継続であるとだけ言っておきましょうが、必ずしもそうとは限りません。たとえば、VFX の専門家として働き始め、パーティクル エフェクトを作成し、3D モデルをそれらに「ねじ込み」、すべてのパーツを組み立て、シェーダーを作成し、コードベースを操作します。つまり、ここでは、ゲームの視覚的なデザインとその個々の要素に重点を置いています。あなたのタスクには、ゲームの一般的なスタイル、そのジャンル、カラー デザイン (ホラー、mathc-3d、ファーム、サンドボックスなど) を考慮した、「許容可能な」レベルでの視覚効果の開発が含まれます。ここでは最適化の問題が重要ですが、それほどグローバルではありません。





効果は非常に異なる場合があり (煙、火、溶岩、魔法、スライム、爆発など)、開発と品質は完全にゲーム グラフィックスの専門家の肩にかかっています。
(, , , , , ..)

- , (//). , , , , , , , (, , , - (, ..), .





, , . , , , , , : , VFX, , , ..;





, , (Unity / Unreal / Cryengine) , , , gamedev ( ) , .





. , , . , , ;





ここで、問題が前面に出てきます。つまり、すべてがどのように適切かつ正確に表示されるか (シャドウ、レンダリング、ライティング、レイヤーを使ったディープ ワーク、レイ トレーシング、テクスチャ スムージングの品質など) です。
, (, , , , , ..)

, , : (++, #, Python), (, , , , , ); (3D , /, , , ); (, , , ), . , , , - beginner, junior, middle, senior lead. ;





++





- ?;





- , delete. , , . . const, volatile, statistic, Virtual. , , ;





C ++デストラクタ
++

- , ?;





() - / , / (- -) - , , .





: 1. , ; 2. ; 3. ; 4. ;





- , . : 1. ; 2. : , , , ; 3. ++;





C++ は、GameDev の C# および Python と並ぶプログラミング標準です。
C++ # Python GameDev

- ?;





() . , , , , , , . , /. : , . ;





- inline - ?;





inline , . , , , . , , ;





 Account   .   GetBalance , Deposit  Withdraw   , inline,
Account . GetBalance , Deposit Withdraw , inline,

- : 1100 0000 0000 0011?;





"" , ;





- ?





- , . : , , , , , , , -;





, , , . : , , , , ;





C++      ,           ,
C++ , ,

- ++, ?;





- , , . : & () - , * () - ;





- ;





- , ( C++). , , 10 ;





/ - , , , , , "", (thread). , ;





- ?;





, , std::terminate();





- , ?;





, , "" , . , (, ..) . .





virtual. - , : 1. , , ; 2. ;









- VFX ?;





, , 3D/2D , , , , , : , , , ;





     Vulkan API
Vulkan API

- (MSAA, MLAA, FXAA, TXAA) - ?





SSAA (Super-Sampling) - . (4) , , . , , , . : 19201080, 4 — 38402160. ;





MSAA (Multisample anti-aliasing) —  SSAA, . . , 8 MSAA 4 SSAA ;





CSAA CFAA (Coverage Sampling anti-aliasing Custom-filter anti-aliasing) —  MSAA, «» , . 8x CSAA/CFAA 8 x MSAA , , 4 MSAA. – ;





FXAA (Fast approXimate anti-aliasing) —  . . , "" , . ;





MLAA (MorphoLogical anti-aliasing) — FXAA. Z, L U - , , . , , fps . , FXAA. – «»;





SMAA (Subpixel Morphological anti-aliasing) — FXAA MLAA - MLAA, . , MLAA, , FXAA, . FXAA, 2 x MSAA. ;





TXAA(Temporal antialiasing) — «» . MSAA SMAA, , , , . . . ;





,          ,   ,      , ,       .  ,   ,   ,           ,   ,   .
, , , , , . , , , , , .

- Paralax Mapping, , , Post-processing?





Paralax Mapping - bumpmapping, . Parallax mapping 3D- .





- V-Sync – . ;





Post processing - , 3D- ;





- . , , . 3D-;





- ?;





, — , . , , . , , multiple render targets — MRT, .





, , . , , , , ;





- 2D-3D (Houdini, Maya, Blender, Nuke, Substance Painter, Photoshop) ?





, / /, Artstation, Behance, . , , , , , , ;





, , , , . - / , "" , , ;





Artstation -          ,      ,   ,   , , ,
Artstation - , , , , , ,

- , , Unity?;





, ( «») -, 2D 3D . - , UV-, , , - , " " - , , Houdini, Maya, 3dsMax, Clarisse .. , , , , .. Redshift, Arnold, V-Ray, Mantra. GPU , ;





- - ?;





PBR (Physical Based Rendering) - , , . PBR , -;





- BRDF ?





- 3- :





1. ;





2. ;





3. ;





, . , . , , . , , .





- Vulkan API OpenGL?;





- , , , . , , , ;





  Vulkan  OpenGL  AMD Radeon  NVidia
Vulkan OpenGL AMD Radeon NVidia

- Forward vs Deferred ?;





Forward render - , , , Deffered Rendering. , / .





Deffered rendering . , GBuffer. GBuffer . Deffered Rendering , GBuffer, ;





- ?;





1. , / , / ( ), / ; 2. , ; 3. blur, glow "" ; 4. - /, , (normal/roughness/metalness/emission/diffuse/..); 5. / , , ; 6. , , ;





- ?;





, , ;





- , /?;





: Siggraph, TotalChaos, GTC Nvidia, European Association of Rendering and CG : habr.com, arrXive.org ..;





- RenderDoc?;





RenderDoc - () MIT, Vulkan, D3D11, OpenGL, OpenGL ES, D3D12 Windows 7-10, Linux, Android, Stadia Nintendo Switch. Doom CyberPunk;





RenderDoc   dota2
RenderDoc dota2

- SSAO, HDR, SSR?;





Screen Space Ambient Occlusion — . SSAO Ambient Occlusion . SSAO , GPU Ambient Occlusion .





SSAO post process. SSAO , : , , , , CPU. SSAO Crytek CryEngine 2, Crysis 2007 .





HDR - , . , , , , , . HDR . . HDR , .





Server-Side Rendering (SSR) . backend API HTML .





- ?;





1. Vertex/index buffer -> input assembler ( , , ) ->





2. Vertex shader ( ) ->





3. Tessellation ( ) ->





4. Geometry shader ( ) ->





5. Rasterisation ( , - , . , , , , , ) ->





6. Fragment shader ( , . , ) ->





7. Color blending ( , . .) ->





8. Frame buffer;





, .









- API GPU?;





CUDA SDK (NVidia), Vulkan (MoltenVK), DirectX SDK;





- GPU CUDA?;





: 1. ; 2. ; 3. ; 4. ; 5. .





CUDA Runtime API, CUDA Driver API CUDA Libraries. Runtime Driver API . , ,  – , - ;





 GPU   CUDA
GPU CUDA

- - L1, L2?;





- L1 — , , , , , 256 - 2 . : . , , , ;





L2 , L1, . 256 8 . , , , ;





- SIMD Muti-threading, ?;





SIMD -" , " , , CPU , (, ADD, MULTIPLY, AND, XOR) ;





, , CPU, . , SIMD, . , , , .





, , . , ;





- . , ;





- NSight (NVidia) ?;





NSight - . - . , , . , , , , . NSight;





Cuda NSight  VisualStudio
Cuda NSight VisualStudio





- : , , ?;





, , , . , (). . , , . ;





- ( (, , ), , , ?;





, , ( ). - , ; - , ; / - , ; - ;





- ?;





– , ;





- , 4 . - . , , , ;









- ?;





- . (+ , , ), - (Git, Mercurial, Bazaar, Darcs), ( , , - SPOF - SVN, CVS, Perforce). Git SHA-1 , , ;





- /GUI /?;





SourceTree, GitKraken, , ;





- merg, rebase, fetche, pull, push?;





$git fetch <remote-name> , ;





$git fetch <remote-name> ;





$git pull ;





$git push <remote-name><brach-name> ;





$git merge - ;





$git rebase -





Merge - , ; Rebase - , , , . Rebase , , merge;





- ?;





, . , , . . . Source Tree ;





GUIソースツリーによるバージョン管理システム
GUIソースツリーによるバージョン管理システム

もちろん、これらの質問は追加の質問で拡張できますが、ここでは要点のみを聖別してみました。








All Articles