Spirit of C++
A presentation for the non-C++ programmer to build a healthy C++ mental model. High-level details are emphasized over low-level ones; it takes the approach that when learning something new, having a high-level and simple view leads to a healthy model.
Used: C++, HTML, CSS, JS ♦ Cross-platform
Multiple mid-sized projects to understand 3D math and graphics concepts from ground up using no high-level libraries. Right from primitives to collision detection to spatial data structures to frustum culling everything was implemented manually from scratch.
- Free-look (6 DoF) camera using matrices, quaternions (independently) and no
- 3D picking by ray casting.
- Multi-textured terrain with lighting and quadtree-based frustum culling.
- Math calculations on paper and book citations documented for future reference.
- Path finding in a navigation mesh
- Funnel narrowing (string-pulling) algorithm for optimized, believable paths
Used: C++, SIMD, shader-based OpenGL 3+, GLSL ♦ Cross-platform
Field of Vision System
Geometric Transforms 101
A GameDev.net featured interactive tutorial on geometric transformations for programmers favouring intuition over mathematical rigour; concepts explained are illustrated with animation. In addition to elementary transforms on points, it also treats coordinate system and hierarchical transforms; shows mappings from active and passive viewpoints. It can be viewed on a browser and in any form factor, as it only uses HTML5 and vector graphics.
Used: Linear Algebra, Trigonometry, SVG, HTML, CSS, JS ♦ Cross-platform
A handy offline thesaurus originally written on GNU/Linux using WordNet as its database, with distinct features like global shortcut key look-up, passive desktop notification and wild-card search; most distributions' repositories have it. It was later ported to Windows and Windows Phone; it was rated 5 stars in AppStore.
Used: C, C#, GTK+, X11, XAML, GCC, VC++, Autotools ♦ GNU/Linux, Windows, Windows Phone
A tile-matching puzzle game playable on a terminal in any platform; written in modern C++ with portability and minimalism in mind. The engine code, handling core logic and input, is an independent module that may be plugged to any front-end. A command-line interface, using ncurses, was later added to make a cross-platform game out of the engine.
Used: C++ 14, ncurses ♦ Cross-platform
Authored the annotations component of the PDF rendering engine used by the Edge browser and the store app. Reader. Additionally I take care of print and parts of the rendering subsystem involving transparency (compositing and blending).
Used: C++, Direct2D ♦ Windows 8+
Conceptualized and implemented the texturing subsystem on a roadmap project implementing the OpenGL ES specification using Direct3D.
Used: C++, Compressed Textures (DDS), OpenGL ES 2, Direct3D 11 ♦ Windows 8
2D Game Engine
Authored a 2D game engine and associated tools for artists to work on sprites and resource packing. The engine abstracted differences amongst WindowsMobile devices and exposed a common feature set for game teams to work on. Its basic features like image drawing to advanced ones like animation and blending were implemented from scratch. It sported effects like on-the-fly grey scaling and parallax scrolling. Ported J2ME (Java) game code of Jewel Quest III and Sims 2 Castaway to WindowsMobile (C++) using said engine.
Used: C++, Java, C#, Boost, DirectDraw ♦ WindowsMobile, J2ME
Authored source filters for A/V codecs like A-Law, μ-Law, H.264 and for progressive downloading of (YouTube) videos on Windows Media Player.
Used: C++, DirectShow ♦ WindowsMobile