Computer Graphics

Mini Minecraft
- a Minecraft-inspired open-world game
 - team of 3, collarboted on git branches, 3 milestones
 - player physics, 3D camera, collision detection, block breaking/placing, player inventory
 - procedural cave systems generated with with 3D Perlin noise
 - Link to demo video
 
Mini Minecraft
- a Minecraft-inspired open-world game
 - team of 3, collarboted on git branches, 3 milestones
 - player physics, 3D camera, collision detection, block breaking/placing, player inventory
 - procedural cave systems generated with with 3D Perlin noise
 - Link to demo video
 

Forward Plus and Clustered Deferred Shading
- implemented Forward+ and Clustered Deferred Shading using WebGPU and TypeScript
 - divided the view frustum into a 3D grid of clusters, each storing a list of relevant lights
 - 30+ fps with 5000 lights on lightweight laptops
 - Link to Demo
 - Link to GitHub repository
 
Forward Plus and Clustered Deferred Shading
- implemented Forward+ and Clustered Deferred Shading using WebGPU and TypeScript
 - divided the view frustum into a 3D grid of clusters, each storing a list of relevant lights
 - 30+ fps with 5000 lights on lightweight laptops
 - Link to Demo
 - Link to GitHub repository
 

Path Tracer
- implemented path tracing algorithm based on Rendering Equation
 - used techniques like BRDF materials, Monte Carlo Estimator, Importance Sampling
 - stored the mesh in Bounding Volume Hierarchies (BVH)
 - coped with ideal specular and translucent materials
 

Path Tracer
- implemented path tracing algorithm based on Rendering Equation
 - used techniques like BRDF materials, Monte Carlo Estimator, Importance Sampling
 - stored the mesh in Bounding Volume Hierarchies (BVH)
 - coped with ideal specular and translucent materials
 

Dividing 3D space with Chordal Axis Transform
- reproduced the paper: Ma, Y., Chen, Z., Hu, W. and Wang, W. (2018), Packing Irregular Objects in 3D Space via Hybrid Optimization. Computer Graphics Forum, 37: 49-59. https://doi.org/10.1111/cgf.13490
 - experimented with various scenes, ranging from simple cubes to complex bunny meshes
 

Dividing 3D space with Chordal Axis Transform
- reproduced the paper: Ma, Y., Chen, Z., Hu, W. and Wang, W. (2018), Packing Irregular Objects in 3D Space via Hybrid Optimization. Computer Graphics Forum, 37: 49-59. https://doi.org/10.1111/cgf.13490
 - experimented with various scenes, ranging from simple cubes to complex bunny meshes
 

Cloth Simulator
- implemented Mass Spring Mesh to simulate cloth
 - support mouse interactions --- you can drag a point on the cloth with mouse
 - added friction force when colliding with a sphere
 
Cloth Simulator
- implemented Mass Spring Mesh to simulate cloth
 - support mouse interactions --- you can drag a point on the cloth with mouse
 - added friction force when colliding with a sphere
 

Mesh Editor
- a mesh editor based on half-edge structure
 - support loading mesh from an obj file
 - vertex/edge/face selection and movement
 - mesh transformations: edge split, face triangulation, Catmull-Clark Subdivision
 
Mesh Editor
- a mesh editor based on half-edge structure
 - support loading mesh from an obj file
 - vertex/edge/face selection and movement
 - mesh transformations: edge split, face triangulation, Catmull-Clark Subdivision
 

GLSL Shaders
- different GLSL vertex and fragment shaders
 - Blinn-Phong, Matcap, Vextex deformation, Worley noise
 
GLSL Shaders
- different GLSL vertex and fragment shaders
 - Blinn-Phong, Matcap, Vextex deformation, Worley noise
 

Scene Graph Editor
- edit the scene graph with a GUI
 - rotate, translate and scale the nodes
 

Scene Graph Editor
- edit the scene graph with a GUI
 - rotate, translate and scale the nodes
 

Image Superpixel Segmentation
- implemented superpixel from: Achanta, Radhakrishna & Shaji, Appu & Smith, Kevin & Lucchi, Aurélien & Fua, Pascal & Susstrunk, Sabine. (2012). SLIC Superpixels Compared to State-of-the-Art Superpixel Methods. IEEE transactions on pattern analysis and machine intelligence. 34. https://doi.org/10.1109/TPAMI.2012.120
 - compared the effects under different parameters iteration steps, spatial proximty importance, number of clusters
 

Image Superpixel Segmentation
- implemented superpixel from: Achanta, Radhakrishna & Shaji, Appu & Smith, Kevin & Lucchi, Aurélien & Fua, Pascal & Susstrunk, Sabine. (2012). SLIC Superpixels Compared to State-of-the-Art Superpixel Methods. IEEE transactions on pattern analysis and machine intelligence. 34. https://doi.org/10.1109/TPAMI.2012.120
 - compared the effects under different parameters iteration steps, spatial proximty importance, number of clusters
 

Point Cloud Registration
- implemented Iterative Closest Point Algorithm from: P. J. Besl and N. D. McKay, "A method for registration of 3-D shapes," in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 14, no. 2, pp. 239-256, Feb. 1992. https://doi.org/10.1109/34.121791
 - conducted experiments, and discussed its limitations in initial position, local optimum trap and efficiency
 
Point Cloud Registration
- implemented Iterative Closest Point Algorithm from: P. J. Besl and N. D. McKay, "A method for registration of 3-D shapes," in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 14, no. 2, pp. 239-256, Feb. 1992. https://doi.org/10.1109/34.121791
 - conducted experiments, and discussed its limitations in initial position, local optimum trap and efficiency
 
Systems & Software

Nexus (search engine)
- distributed key-value store and RDD framework
 - responsible for AWS deployment in team of 4
 - crawled 300k+ webpages, 20m+ rows of data
 - average query response time of 1.34s
 
Nexus (search engine)
- distributed key-value store and RDD framework
 - responsible for AWS deployment in team of 4
 - crawled 300k+ webpages, 20m+ rows of data
 - average query response time of 1.34s
 

AttactTrace
- a cloud-native SSH honeypot analytics platform (Steelhacks XII winner)
 - used AWS EC2, S3, DynamoDB, Lambda, as real-time data sources
 - used Next.js and D3.js to visualize attack logs in a dashboard
 - Link to Demo
 - Link to Devpost
 

AttactTrace
- a cloud-native SSH honeypot analytics platform (Steelhacks XII winner)
 - used AWS EC2, S3, DynamoDB, Lambda, as real-time data sources
 - used Next.js and D3.js to visualize attack logs in a dashboard
 - Link to Demo
 - Link to Devpost
 

AConn (voice chat program)
- a cross-platform voice chat application
 - low latency, multiple speaker, 13Kbps bandwidth
 - voice anonymization module that conceals speaker's identity
 - Link to Github
 

AConn (voice chat program)
- a cross-platform voice chat application
 - low latency, multiple speaker, 13Kbps bandwidth
 - voice anonymization module that conceals speaker's identity
 - Link to Github
 

ATNet (acoustic networking)
- network based on acoustic signal, wired/wireless
 - support reliable linking with custom protocol
 - a NAT that supports UDP, ICMP and FTP
 

ATNet (acoustic networking)
- network based on acoustic signal, wired/wireless
 - support reliable linking with custom protocol
 - a NAT that supports UDP, ICMP and FTP
 
Other Projects

Crypto Carnival
- cryptocurrency visualization and trading simulator
 - user authentication and user data management using Node.js, SQLite3 and JWT
 - a simulation game for users to buy, hold and sell different crypto currencies
 - Link to Github
 

Crypto Carnival
- cryptocurrency visualization and trading simulator
 - user authentication and user data management using Node.js, SQLite3 and JWT
 - a simulation game for users to buy, hold and sell different crypto currencies
 - Link to Github
 

Feminine Energy (3D game)
- a 3D puzzle game developed with Unity
 - team of 3, collarborated with burndown chart
 - added post-processing effects, including camera shake, auto focus, VHS effect
 - implemented interactive objects, player movement, subtitle system, shaders
 
Feminine Energy (3D game)
- a 3D puzzle game developed with Unity
 - team of 3, collarborated with burndown chart
 - added post-processing effects, including camera shake, auto focus, VHS effect
 - implemented interactive objects, player movement, subtitle system, shaders
 

Reveal the Moving Pattern of Pseudo Base Station
- an interactive webpage that visualizes the pseudo base stations in Beijing
 - reveals their moving patterns with a heatmap and their peak activity period of a day with a stream chart
 - allows user to filter/categorize/trace spam messages
 - cleaned, filtered and analyzed ~3,350,000 spam messages, and classified them into 5 categories
 
Reveal the Moving Pattern of Pseudo Base Station
- an interactive webpage that visualizes the pseudo base stations in Beijing
 - reveals their moving patterns with a heatmap and their peak activity period of a day with a stream chart
 - allows user to filter/categorize/trace spam messages
 - cleaned, filtered and analyzed ~3,350,000 spam messages, and classified them into 5 categories
 

Ballistic (VR game)
- a VR game running on VIVE Focus
 - adopted a novel interaction mechanism, which allows the player to control the character by rotating his head
 - Link to Website
 
Ballistic (VR game)
- a VR game running on VIVE Focus
 - adopted a novel interaction mechanism, which allows the player to control the character by rotating his head
 - Link to Website
 

Escape (retro game)
- a simple runner game on Longan Nano, developed in C and RISC-V
 - move the player to avoid obstacles, and get highest on scoreboard
 
Escape (retro game)
- a simple runner game on Longan Nano, developed in C and RISC-V
 - move the player to avoid obstacles, and get highest on scoreboard