“I am a Graphics Engineer at Arm looking for a new horizon of graphics API and GPU. Prior to that, I was a Gameplay & Engine Programmer at Nexon Korea. I also interned at NCSoft in the Vision AI Lab. I got my bachelor’s degree at Seoul National University, where I double-majored in geography and computer science. My main interests are GPU and computer graphics. I am also keen on other fields of computer science, including computer systems, algorithm, and video game.”
Education
Seoul National University
- B.A. in Geography(2022)
- B.S. in Computer Science(2022)
Please refer to this post for more details about my college projects.
Career
Arm
- Cambridge, United Kingdom
- Graphics Engineer at MediaSW Team
- October 2024 -
Nexon Korea
- Seongnam-si, Gyeonggi-do, Republic of Korea
- Gameplay & Engine Programmer at MapleStory Programming Team
- August 2022 - September 2023
- As a gameplay and engine programmer, I engaged in implementation of core gameplay features, both on the client-side and the server-side.
- Efficiently dealt with an enormous codebase with 20-years of legacies, using C++, C#, and MSSQL.
- If you want to learn more about my experience, please take a look at the post.
NCSoft
- Seongnam-si, Gyeonggi-do, Republic of Korea
- Intern Vision AI Programmer at Human Pose Estimation Team, Vision AI Lab
- July 2021 - August 2021
- Developed an AR- and AI-based livestreaming system using Unity & Barracuda, OpenPose, and VideoPose3D.
- Successfully developed virtual character movement pipeline including inference, handling the result from the neural network, and demonstration with arbitrary characters on the client.
- This post depicts the internship project in detail.
Updates
- (10.2024) I have joined Arm at Cambridge as a Graphics Engineer!
- (03.2024) I am currently working on a fluid simulation.
- Check out the repository!
- Tools used
- C++ for the language
- Vulkan for the graphics API
- GLSL for the shading language
- ImGui for the user interface
- RenderDoc for the rendering debugger
- Visual Studio for the IDE
- Theoretical backgrounds
- Smoothed-Particle Hydrodynamics (SPH) for simulating fluid
- Marching Cubes for rendering smooth surface
- Lighting, Smoothing, and Other Rendering Techniques
- Compute Shader
- Demo Video
- (01.2024) FOV Mapping has been published on Unity Asset Store!
- FOV Mapping is an advanced approach to Field of View (FOV) and Fog of War (FOW) systems for Unity. Leveraging the power of the GPU, it stands out as a high-performance solution that offers exceptionally efficient field of view system. It also provides terrain-adaptiveness and rich controllable features.
- FOV Mapping is getting its popularity, recording over 100 downloads on Unity Asset Store!
- Demo Video
Projects
Indie Game Projects
- Here are some demo reels for the project. Check them out!
- A top-view strategy game set in Korean war.
- Unity, C#, and several 3D modeling tools.
- Designed, programmed, and produced art assets.
- This category embraces introductions of the project itself and techniques applied.
Skills
Programming Languages
- C++ is my primary programming language. I am a professional game programmer and use it every day.
- I am knowledgeable of modern C++; STL, move semantics, template, and many other recent features. I can apply advanced features to design and construct games and other applications with high performance.
- C++ is compiled into native code and supports an object-oriented programming paradigm, which makes it the most suitable language for developing real-time applications. I have a deep understanding of the philosophy of C++.
- I use C# frequently for a personal game project along with Unity. I have been using C# for a long time; thus I have a deep understanding of its features.
- C# features well-designed and concise functionality and keywords. I know how to utilize them to boost the software development process fully.
- As to a few weaknesses of C#, like performance issues due to garbage collection, I am experienced with optimizing those codes.
- I use Python primarily for prototyping. I enjoy writing codes in Python since I can quickly get hands-on results.
- I have written codes in Python for a variety of fields; computer vision, spatial statistics, and even games.
Game Engine
- I have been developing my own game with Unity for over three years.
- Since the project is aimed at commercial success, I have encountered numerous challenges while developing each disparate part. With deep considerations about how to formulate Unity components, I was able to make a breakthrough.
- Not only do I use functionality offered by Unity, but in order to enrich my game project, I have also been highly customizing terrain, animation system, shader, and the multiplayer API(Mirror).
Graphics API
- Vulkan is my way of presenting graphical ideas along with GPU programming.
- I am capable of managing various Vulkan resources to establish complicated rendering pipelines, eventually building up complicated applications upon them.
- Compute shader along with Vulkan is my favorite way of boosting parallel computation. Take a look at my fluid simulation with Vulkan compute shader!
- I am engaging Vulkan to develop a high-performance in-house fluid simulation tool powered by Vulkan, GLSL, and ImGUI.
Theoretical Knowledge
- Computer Graphics - I have implemented and optimized real-time rendering systems for games. Also, I have a strong interest in researching various graphics techniques and realizing them with graphics API, shaders, and a good knowledge of 3D mathematics.
- Computer System - Understanding how computers are organized with CPU, memory hierarchy, and other hardware components is a priceless asset of mine as a software engineer. Furthermore, my knowledge of compiler and automata theory greatly helps me with dealing with abstraction.
- Algorithm and Data Structure - Without a careful choice of suitable algorithm, it is impossible to provide a pleasant play experience to game players. I have both theoretical and practical understandings of algorithms and data structures that ultimately decides the usability of an application.
- Software Design - Before I type code with my fingers, I take a considerable amount of time to remind myself of significant software design principles. I am capable of building understandable and maintainable programs by choosing which design patterns to apply properly.
Others
- 3D Modeling - I have been producing 3D models and humanoids for my own game project with Blender, ZBrush, and Substance Painter. I certainly know what the collaboration process between artists and programmers should be.