News

  • ● [2023-11] Join San Diego Studio's graphics team
  • ● [2023-08] Graduate master's CS oh yay!
  • ● [2023-06] Start interning at Insomniac Games
  • ● [2023-01] Bachelor's CS degree is conferred
  • ● [2022-12] Big City Greens' Unreal holiday special airs
  • ● [2022-05] Start interning at Disney Media on the real-time Unreal team

Experience

San Diego Studios' logo

San Diego Studio | Graphics programmer (mid)

November 2023 - Present (Managed by Lee Blum)

Specializing in tooling for cloth, hair, and characters for MLB The Show.

Insomniac Games' logo

Insomniac Games | Technical Art Intern

June 2023 - September (Managed by Mike Fitzgerald)

Expanding and refactoring tech anim tooling for Marvel's Spider-Man 2 and Wolverine.

Disney Media Entertainment Distribution logo

Disney | Real-time Developer Intern

May 2022 - December 2022 (Managed by Evan Binder)

Developed tools - custom FBX exporter and shot creator - to support content creation pipelines in Unreal such as real-time animation, sports visualization, and motion capture.

Credited on Big City Greens' Virtually Christmas special.

Engines / Rendering

A gif showing different passes of a deferred renderer with the final showing rainbow orbs.

Deferred Lighting+Rendering | DX12 Directed Research

Dec. 2022 | Contact for code.

Developed a deferred renderer with deferred lighting for senior year directed research.

Depth, normals, specular are in their own render targets. One pass per light with a bloom mask.

A gif showing a navmesh being used by soliders. More than 5 soldiers are running towards the player and are showing pathing algorithms.

Prime Engine Development

Jan. 2023 - May 2023 | code.

Prime Engine is a low-level game engine made by Artjoms Kovalovs, where I expanded and implemented several systems (physics, animation) and a full navmesh system to simulate crowds.

A player is jumping between 4 different platforms
								 to showcase programmed graphics, rendering, and animation.

Custom Game Engine

Jan. 2022 - May 2022 | code.

Developed using DirectX11/hlsl, multi-threading, and an asset pipeline from Blender. It also features 3D collision detection, skeletal animation, normal mapping, multiple render targets, mipmapping, and billboarding. Shaders include Valve's Half Lambert, bloom, a toon shader, and skinning.

A gif showing two screens side by side of a first person shooter, where the left player is fighting against the right player.

Networked UE5 FPS

Oct. 2022 - Dec. 2022 | Contact for code.

Utilizing the Steam Developer API, this FPS can connect to other Steam clients. Players can chat and leave in-game tags that are saved as level metadata. Timed grenades can blow both players up.

Animation

A triangulated mesh armadillo with control handles being moved to show its limbs moving, exemplifying inverse kinematics

Character Deformer

May 2023 | code.

Given a character skeleton and its skinning weights. This program can animate the skin mesh through forward kinematics (FK) and inverse kinematics (IK).

A gif showing two mocap models dancing, a green point model with pre-read data and a red point model showing computed values.

Motion Capture Interpolation System

Jan. 2022 - May 2022 | code.

My implementation and evaluation of different interpolation schemes (linear vs. Bezier) to interpolate human mocap data with different representations (Euler angles vs. Quaternions).

A jello cube bouncing around in a grid box showcasing physics.

Jello!

Jan. 2022 - May 2022 | code.

Jello! is a physically-based simulation of a jello cube inside a cornell-box force field. It's modeled by a mass-spring system, capable of handling collisions, and rendered with OpenGL.

Embedded Systems

A React UI showing a keyboard and 2 measures are recorded. Tensorflow's Magenta is contacted on the side.

Robot Rock

Created an automatic drumming bot with 4 other Makers. Developed a React UI to control the solenoids being powered by an Arduino Mega. Using signal processing in Python with SciPy and PyAudio, DrumBot can beat-detect surrounding instruments in real-time. TensorFlow's GrooVAE model are inputted the listened melody which allows DrumBot to play a beat to it. By developing a multi-threaded Python core, DrumBot can also translate into sheet music its performed beat in near constant time.

A Nintendo Switch modeled in Maya.

Maya

Click here for my Maya portfolio site. During my spring 2022 semester at USC, I took an intro to animation, modeling, and basic rigging course in Maya. In the class I created a short film of a car race, modeled my own car for it, and created all desk props in the video.

Teaching

  • ● Spring 2023 ITP 485 Programming Game Engines (Teaching Assistant), taught by Matt Whiting
  • ● Spring 2022 ITP 380 Video Game Programming (Course Producer), taught by Sanjay Madhav
  • ● Spring 2022 ITP 116 Advanced Intro to Python (Head Course Producer), taught by Jeffrey Miller
  • ● Fall 2021 ITP 116 Advanced Intro to Python (Designed course), taught by Jeffrey Miller
  • ● Fall 2021 CS 102 Intro to C++ (Course Producer), taught by Mark Redekopp

Advice

  • I've been asked for advice on getting into industry so here's the highlights:
  • ● Make a website like this! It gives you a branding -> are you a tools/animation developer etc.
  • ● If you're not sure on engine/graphics/tools, exactly where YOUR niche is, having several related interests is enough.
  • ● GIFS is the way for showcasing projects. Lets people see what your project is in 6 seconds or less.
  • ● Have a cleaned up GitHub homepage. Companies do look at it if you link it, trust me.
  • ● Reach out to people who you think are doing cool things. See how they got there.
  • ● Don't give up! It's hard sometimes, really hard. But don't!