Les gars, bonjour Ă tous !!!
J'ai eu une minute de libre et j'ai décidé de créer un petit guide pour interviewer un programmeur graphique 3D pour les sociétés GameDev. Je travaille moi-même dans ce domaine et communique beaucoup avec diverses personnes, celles qui viennent juste pour des entretiens et celles qui travaillent depuis longtemps et qui ont plus d'un projet terminé et de nombreux problèmes et tâches de travail résolus derrière eux. Si vous êtes intéressé par ce sujet, alors je demande à tout le monde sous le chat.
Pour la plupart des entreprises, il est d'usage de diviser cette profession/direction en deux :
Le premier est un spécialiste du graphisme de jeux et le second est un spécialiste de l'infographie. Quelle est la différence? Disons simplement que le premier est une continuation naturelle du second, mais pas toujours. Par exemple, vous commencez à travailler en tant que spécialiste des effets visuels, créez des effets de particules, « vissez » des modèles 3D, assemblez toutes les pièces, écrivez un shader et travaillez avec une base de code. C'est-à -dire qu'ici, vous vous concentrez davantage sur la conception visuelle du jeu et ses éléments individuels. Vos tâches incluent le développement d'effets visuels à un niveau « acceptable », en tenant compte du style général du jeu, de son genre, de la conception des couleurs (horor, mathc-3d, farm, sandbox, etc.). Les questions d'optimisation sont importantes ici, mais elles ne sont pas si globales ;
- , (//). , , , , , , , (, , , - (, ..), .
, , . , , , , , : , VFX, , , ..;
, , (Unity / Unreal / Cryengine) , , , gamedev ( ) , .
. , , . , , ;
, , : (++, #, Python), (, , , , , ); (3D , /, , , ); (, , , ), . , , , - beginner, junior, middle, senior lead. ;
++
- , delete. , , . . const, volatile, statistic, Virtual. , , ;
- , ?;
: 1. , ; 2. ; 3. ; 4. ;
- , . : 1. ; 2. : , , , ; 3. ++;
- ?;
() . , , , , , , . , /. : , . ;
- inline - ?;
inline , . , , , . , , ;
- : 1100 0000 0000 0011?;
"" , ;
- ?
, , , . : , , , , ;
- ++, ?;
- ;
/ - , , , , , "", (thread). , ;
- ?;
, , std::terminate();
- , ?;
, , "" , . , (, ..) . .
virtual. - , : 1. , , ; 2. ;
- VFX ?;
, , 3D/2D , , , , , : , , , ;
- (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, . , , , , , , ;
, , , , . - / , "" , , ;
, ( «») -, 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?;
- , , , . , , , ;
- 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;
- 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 . , , – , - ;
- - L1, L2?;
- L1 — , , , , , 256 - 2 . : . , , , ;
L2 , L1, . 256 8 . , , , ;
- SIMD Muti-threading, ?;
SIMD -" , " , , CPU , (, ADD, MULTIPLY, AND, XOR) ;
, , CPU, . , SIMD, . , , , .
, , . , ;
- . , ;
- NSight (NVidia) ?;
NSight - . - . , , . , , , , . NSight;
- : , , ?;
, , , . , (). . , , . ;
- ( (, , ), , , ?;
, , ( ). - , ; - , ; / - , ; - ;
- ?;
– , ;
- ?;
- . (+ , , ), - (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 ;
Bien sûr, ces questions peuvent être complétées par d'autres, mais ici j'ai essayé de ne sanctifier que les points principaux.