William Gooch
they | them
Game developer
Systems programmer
C++ enthusiast
wgooch2000@gmail.com
Albuquerque, New Mexico
|
I am a low-level systems programmer interested in
zero-overhead abstractions and computer graphics.
I am enthusiastic for software at the level of
kernel syscalls, inline assembly, SIMD, data-oriented
data-structures, and memory allocators. I also love template
metaprogramming and designing other modern abstractions, as well
as designing generative game content.
I often nerd-out over C++ standards proposals,
new tools, text editors, terminal emulators, special keyboards,
window managers, and fanfiction.
|
Experience In
C++23 (and older standards)
2D and 3D asset creation
Designing game editors
Introspecting and optimizing compiler code-gen, profiling, static analysis,
debugging segfaults, introspecting heap, stack, and registers, strace
Git (pull requests, branch conflicts, reflog)
Modern CMake
Vulkan 1.3 and DirectX 11
GDB, rr, RenderDoc, NSight Graphics, and Cutter debuggers
Unity and Game Maker Studio
Assembly literacy, dissassembling, bindiffing
GNU Emacs and Visual Studio
Compute, vertex, fragment, and geometry shaders
Shader languages
Linux kernel syscalls, libC, POSIX environments, and Windows 10
Supporting multiple C++ compilers and STL implementations
Researching and navigating large source trees (Linux, Musl, Mesa)
|
Pull Requests
liblava, Vulkan framework
Made vertices and meshes generic to optimize non-float use-cases
Supported the VkPhysicalDevice2 extension
Made configurable camera controls
Made extensible attachments for render passes
|
Work History
Stellar Science, C++23 Developer
Oct 2022 - Oct 2023
Replaced SFINAE with concepts
Introduced many user-facing features with Qt 6 widgets
Made an app's GPU selection user-configurable
Wrote many unit tests
Used many Boost libraries
Experienced code review procedures
Significantly improved clang-tools configuration
|
Education
B.S. Game Development
Full Sail University
3300 University Blvd, Winter Park, FL 32792
|
|
Personal Projects
libCat non-POSIX C++20 runtime
Template metaprogramming (type deduction, CRTP, CTFE, NTTPs, type erasure, partial specializations, policy-based class design, concept/requires)
Linux syscall wrappers
SIMD
Memory allocators
Full move semantics and constexpr support
File and socket I/O
Raw threads and atomics
Unit testing framework
Superstar Game Suite framework and editor
Cutscene dope sheet editor
Multi-layer tile editor
Collision and generative graphics for staircases of any orientation, width, height, length, and steps
Cinematic weights and tweening
NPC dialogue systems
Level serializing/deserializing
Poly-building tool
2.5D platforming
C++ pixel-art raytracer
Spatial hash data-structure, optimized for 2.5d raytracing
Branchless AABB-ray intersection
Normal maps, depth maps, color maps
Point and ambient lighting
Previously had a compute shader
DirectX 11 forward renderer
Time-based animated geometry
Rendering 3D geometry with normal maps
Sorting models to render semi-transparency
Vertex, fragment, and geometry shaders
Directional lighting
First-person flying camera
Further experiments in Vulkan rendering
Bindless buffer attachments
Dynamic rendering (1.3 version)
Shader objects (1.3)
Dynamic dispatch table
vulkan-hpp bindings
|