I am a 2nd-year Master student majoring Computer Graphics and Game Technology (CGGT) in
Computer and Information Science Department of University of Pennsylvania.
I obtained by Bachelor's degree at Sun Yat-Sen University in 2014. My major was Software
Engineering.
Experience
Graphics Engineer Intern, SIEA (Playstation R&D), San Mateo,
CA (Summer 2016)
Implemented the paper Multi-Resolution Meshes for Feature-Aware Hardware
Tessellation [Lambert, T., Benard, P., Guennebaud, G., Eurographics 2016] to solve
displacement mapping artifacts (proof of concept)
Implemented a tool that converts FBX files into an internal format (adopted by
Playstation SDK)
Implemented a subdivision surface preview tool using internal graphics APIs
CIS 461/561 - Advanced Computer Graphics TA (Spring 2017)
CIS 568-002 - Virtual Reality Practicum TA (Spring 2017)
CIS 462/562 - Computer Animation TA (Fall 2016)
Projects (Selected)
Laugh Engine: A Real-Time PBR Renderer with Vulkan - 2016
CIS 565 final project and continued personal project. In this project,
I implemented a real-time PBR renderer using Vulkan by following the
2013 course note
by Unreal Engine 4, Epic Games. Currently, the program can load in a mipmapped radiance environment map and 3D models to
render a scene in real-time (> 60 FPS). It will bake the BRDF look-up table and generate irradiance maps the first time
a new BRDF or HDR probe is used but since precalculation is done on GPU, it is also very fast. For more information, I
invite to take a look at my Github repo.
I'd like to show my credits to Andrew Maximov for making his PBR asset,
Cerberus, publicly available and IBLBakder where I learned a lot of
implementation details that were not taught in the course note. I also want to thank Chris Ho, my colleague during my internship
in Sony Playstation R&D this summer, for inspiring me.
Finally, I want to thank Patrick and CIS 565 TAs for their help and support through out this course.
Results:
- Best viewed in fullscreen
- Check out my project page for more results and performance analysis
Unreal Multiplayer Game: Jian's Temple - 2016
This is a group course project for CIS 568. I am responsible
for the implementation of character movements, projectiles, destructibles, and some
of the in-game logic and mechanism. I also participated in debugging networking issues.
Fast Cat: Real-Time Rendering of Catmull-Clark Subdivision Surfaces - 2016
Implemented the papers Feature Adaptive GPU Rendering of Catmull-Clark
Subdivision Surfaces [Nießner, M., Loop, C., Meyer, M., DeRose, T., TOG 2012] and
Efficient Evaluation of Semi-Smooth Creases in Catmull-Clark Subdivision Surfaces
[Nießner, M., Loop, C., Greiner, G., Eurographics 2012].
It was implemented as a Maya plugin using OpenGL and Maya SDK. The plugin is very
versatile as it can handle triangle/quad mesh, render both regular and irregular patches,
deal with sharp or semi-sharp edge creases as well as non-closed meshes, and provide basic
texturing and displacement mapping support. I teamed up with Alexender in this project
and I was responsible for most of the preprocessing and shader programming.
- GIFs were captured at 8 FPS but application was real-time
- You can click on an image to enlarge it
GPU FLIP Fluid Solver - 2016
Implemented a GPU FLIP solver. OpenGL Compute was used to implement all simulation
functionalities including a Conjugate Gradient linear system solver. Simulation
initialization (i.e. seeding particles) was done in parallel on CPU using Tbb.
OpenVDB was used to generate SDF (Signed Distance Field) data which was latter on
processed by Houdini to generate mesh/surface data.
Implemented a multi-threaded path tracer in C++. The main features are
Photon Mapping, Monte Carlo Path Tracing, MIS, BVH with surface area heuristic,
Cook-Torrance BRDF, and Depth of Field.
Results:
Image Stitching - 2013
In this project, I implemented an image stitching algorithm proposed by L. Zelink-Manor
and P. Perona in 2007. The implementation was powered by OpenCV - a computer vision
library.