Wilds of graphics atau cara mendapatkan wawancara untuk programmer grafis komputer di GameDev

Teman-teman, halo semuanya!!!





Saya memiliki waktu luang dan memutuskan untuk menyusun panduan kecil untuk mewawancarai seorang programmer grafis 3D untuk perusahaan GameDev. Saya sendiri bekerja di bidang ini dan banyak berkomunikasi dengan berbagai orang, mereka yang baru saja datang untuk wawancara dan mereka yang telah bekerja untuk waktu yang lama dan memiliki lebih dari satu proyek yang diselesaikan dan banyak masalah pekerjaan dan tugas yang diselesaikan di belakang mereka. Jika Anda tertarik dengan topik ini, maka saya bertanya kepada semua orang di bawah kucing.





Bagi sebagian besar perusahaan, biasanya membagi profesi / arahan ini menjadi dua:





Yang pertama adalah spesialis dalam grafik game dan yang kedua adalah spesialis dalam grafik komputer. Apa bedanya? Anggap saja yang pertama adalah kelanjutan alami dari yang kedua, tetapi tidak selalu. Misalnya, Anda mulai bekerja sebagai spesialis VFX, membuat efek partikel, "mengunci" model 3D, merakit semua bagian, menulis shader, dan bekerja dengan basis kode. Artinya, di sini Anda lebih fokus pada desain visual game dan elemen individualnya. Tugas Anda mencakup pengembangan efek visual pada tingkat yang "dapat diterima", dengan mempertimbangkan gaya umum permainan, genre, desain warna (horor, mathc-3d, pertanian, kotak pasir, dll.). Masalah pengoptimalan penting di sini, tetapi tidak begitu global;





Efeknya bisa sangat berbeda (asap, api, lava, sihir, lendir, ledakan, dll.), Pengembangan dan kualitas sepenuhnya ada di pundak spesialis grafis game.
(, , , , , ..)

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





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





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





. , , . , , ;





Di sini, pertanyaan mengemuka, seberapa baik dan benar semuanya ditampilkan (bayangan, rendering, pencahayaan, pekerjaan mendalam dengan lapisan, ray tracing, kualitas penghalusan tekstur, dll.)
, (, , , , , ..)

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





++





- ?;





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





Penghancur C++
++

- , ?;





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





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





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





C ++ adalah standar pemrograman bersama dengan C # dan Python di GameDev
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 ;





Sistem kontrol versi berdasarkan GUI Source Tree
Sistem kontrol versi berdasarkan GUI Source Tree

Tentu saja, pertanyaan-pertanyaan ini dapat diperluas dengan pertanyaan tambahan, tetapi di sini saya hanya mencoba menguduskan poin-poin utama.








All Articles