Hey, I'm Nikita Elsakov.
I’m a self taught developer. Keen in computer graphics and game engines.
About Me
My journey as developer begun from web development. I have started to learn how to code with "The Complete Web Developer Course 2.0" online course on Udemy. After that I have learned that JavaScript is a compiled language by reading @getify's "You Dont' Know JS". During that time I have landed my first job as web developer. After some time I was assigned to work on hybrid mobile apps. I have discovered Apache Cordova, than I have touched NativeScript and finally I have started to develop native mobile applications for both Android and iOS platforms. Here I yet again hardened my knowledge of Model View Controller design pattern. I have enjoyed working with statically typed languages and I have started to study C++. I have read 2/3 of "Programming: Principles and Practice using C++ (2nd edition)" by Bjarne Stroustrup. I think that this is a good book to begin your journey as a self taught developer. I have worked through some exercises as well. At that time I was trying to use CMake as a build system. I have spent dozen of time trying to link dependencies with CMake. And I am happy that I did not drop trying to do so. Right now I use CMake mostly all the time except when I work on Windows. After I have spent about a year of learning C++ after my day job I have landed a job in gamedev. I was very happy because I was tired of web development and I wanted to work on something serious.
During my work as gamedeveloper I was mostly working with Unreal Engine 4 and I have had a chance to work with Unreal Engine 3.5 codebase. Aside from my work I have started to learn OpenGL by following learnopengl.com. I have completed excercises up to model loading and I was kind of happy when I have loaded Sponza model. I have also maid a silly snake game. It is silly yeas, but I have enjoyed the process of making a game without a game engine. After that I have started to explore DirectX 11. I have covered a bunch of rendering techniques such as Phong shading, PCF shadows, dynamic environment reflections via cubemap, fog post process effect, bloom post process effect, particle systems. At that time I have switched my position to rendering software engineer. I have had a chance to fix some rendering issues in Unreal 4 based project after we have upgraded engine from 4.19 to 4.27. Also I was working on porting DirectX 9 renderer to DirectX 11. It was a lot of fun.
Aside from my work I was working on my own game engine - NEngine. I have started with facilities that I have invented during the time I was learning DirectX 11. Some of those facilities were rewritten from scratch. I have rewrote my math library for few times for sure. I did not use any third party libraries for window management and user input and because of that I know a little bit of WIN32 API. The render was pretty basic. All I had is phong shading and non-working PBR. But I was mostly focused on other engine components such as: sound, entity management system, user input, Wavefront *.obj model parser. Currently I have switched my priorities but I will definitely switch back to NEngine in the near future. Right now I work on DirectX 12 renderer. I would like to implement PBR with IBL, skinning, SSAO, SSLR, MSAA. Try deffered lighting approach and see what are the cons and pros of this approach.
My Pet Projects
Learning DirectX 11
During this project I have learned how to initialize DirectX 11 context and covered basic rendering techniques such as processing input and camera control, model loading from *.obj files, generate mip-maps for textures, calculate phong lighting for directional, point and spot light sources, particle system, soft shadows via PCF, dynamic environment reflections via render to cube map, fog and bloom post process effects.
Read More
WIP: NEngine
This is a simple 3D engine that I work on in my spare time.
Read More
WIP: PBR with IBL
Right now I am working on implementing image based lighting using DirectX 12
Read More