LATEST PROJECTS
![hw10_61_400SamplePM](https://static.wixstatic.com/media/0f46d8_ec5f9cf5d9bd41c2932c998c94aaec3d~mv2.png/v1/fill/w_49,h_49,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ec5f9cf5d9bd41c2932c998c94aaec3d~mv2.png)
![hw11_100_400SamplesPM_thin_fog](https://static.wixstatic.com/media/0f46d8_e9207722e1f646ce9b9065aed00d13d5~mv2.jpg/v1/fill/w_144,h_144,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e9207722e1f646ce9b9065aed00d13d5~mv2.jpg)
![hw10_69_900SampleMIS](https://static.wixstatic.com/media/0f46d8_d7dcb3bb7b724afdb4a0389f056725e9~mv2.png/v1/fill/w_49,h_49,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_d7dcb3bb7b724afdb4a0389f056725e9~mv2.png)
![hw10_66_900SampleMIS](https://static.wixstatic.com/media/0f46d8_684c4f11bc7d47c48e85fa3d4c41ebbd~mv2.png/v1/fill/w_49,h_49,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_684c4f11bc7d47c48e85fa3d4c41ebbd~mv2.png)
![hw9_implicit_surface_68_6](https://static.wixstatic.com/media/0f46d8_9b04a52bd525476aa05ba42d7aab2730~mv2.png/v1/fill/w_51,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9b04a52bd525476aa05ba42d7aab2730~mv2.png)
![hw9_implicit_surface_62_test8](https://static.wixstatic.com/media/0f46d8_1a2a9b5f8c6c4d1fae0027a42835c2fc~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_1a2a9b5f8c6c4d1fae0027a42835c2fc~mv2.png)
![hw8_accel_47_900SampleMIS_8recur](https://static.wixstatic.com/media/0f46d8_bb5e28a8ea664153b99b48d75c3179b8~mv2.png/v1/fill/w_51,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_bb5e28a8ea664153b99b48d75c3179b8~mv2.png)
![hw8_accel_48_900SampleMIS_8recur](https://static.wixstatic.com/media/0f46d8_aee2e91f79684814ae84ac9d783058f1~mv2.png/v1/fill/w_51,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_aee2e91f79684814ae84ac9d783058f1~mv2.png)
![hw9_implicit_surface_66](https://static.wixstatic.com/media/0f46d8_f8c8a04e2f1d4efca945f6f15aef64ee~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_f8c8a04e2f1d4efca945f6f15aef64ee~mv2.png)
![hw9_thin_len_60_lensR_5.0_f_30](https://static.wixstatic.com/media/0f46d8_8fc8f17356e343088069b1f7a1813848~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_8fc8f17356e343088069b1f7a1813848~mv2.png)
![55_2](https://static.wixstatic.com/media/0f46d8_ff329b934514484e9388e03ef7576e2e~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ff329b934514484e9388e03ef7576e2e~mv2.png)
![63_4](https://static.wixstatic.com/media/0f46d8_33d0c48da7df4fdd8d1fecdb88197cdd~mv2.png/v1/fill/w_51,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_33d0c48da7df4fdd8d1fecdb88197cdd~mv2.png)
![52_5Recursion](https://static.wixstatic.com/media/0f46d8_806951741d04464e96f1ff07e3c969a3~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_806951741d04464e96f1ff07e3c969a3~mv2.png)
![53_900MIS_5recur](https://static.wixstatic.com/media/0f46d8_1a8bea73b9ca49d383d763f3f2aee033~mv2.png/v1/fill/w_51,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_1a8bea73b9ca49d383d763f3f2aee033~mv2.png)
![66](https://static.wixstatic.com/media/0f46d8_0e3e4b1041c546d992662d5e6ec27b82~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_0e3e4b1041c546d992662d5e6ec27b82~mv2.png)
![26(squareRoot_80_rec_5)](https://static.wixstatic.com/media/0f46d8_007ab01fb7c84c60be733f9552bd9e63~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_007ab01fb7c84c60be733f9552bd9e63~mv2.png)
![4_100MIS_MirrorBoxUniform_PowerHeruistic_TrowbridgeReitzDistribution](https://static.wixstatic.com/media/0f46d8_9f875210295747b8858e2cb80a947a99~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9f875210295747b8858e2cb80a947a99~mv2.png)
![5_900Direct_Veach](https://static.wixstatic.com/media/0f46d8_4cf373d5dd9b42e9b9be4b3aaffbc7a5~mv2.png/v1/fill/w_77,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_4cf373d5dd9b42e9b9be4b3aaffbc7a5~mv2.png)
![hw10_61_400SamplePM](https://static.wixstatic.com/media/0f46d8_ec5f9cf5d9bd41c2932c998c94aaec3d~mv2.png/v1/fill/w_49,h_49,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ec5f9cf5d9bd41c2932c998c94aaec3d~mv2.png)
![hw11_100_400SamplesPM_thin_fog](https://static.wixstatic.com/media/0f46d8_e9207722e1f646ce9b9065aed00d13d5~mv2.jpg/v1/fill/w_144,h_144,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e9207722e1f646ce9b9065aed00d13d5~mv2.jpg)
![hw10_69_900SampleMIS](https://static.wixstatic.com/media/0f46d8_d7dcb3bb7b724afdb4a0389f056725e9~mv2.png/v1/fill/w_49,h_49,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_d7dcb3bb7b724afdb4a0389f056725e9~mv2.png)
![hw10_66_900SampleMIS](https://static.wixstatic.com/media/0f46d8_684c4f11bc7d47c48e85fa3d4c41ebbd~mv2.png/v1/fill/w_49,h_49,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_684c4f11bc7d47c48e85fa3d4c41ebbd~mv2.png)
![hw9_implicit_surface_68_6](https://static.wixstatic.com/media/0f46d8_9b04a52bd525476aa05ba42d7aab2730~mv2.png/v1/fill/w_51,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9b04a52bd525476aa05ba42d7aab2730~mv2.png)
![hw9_implicit_surface_62_test8](https://static.wixstatic.com/media/0f46d8_1a2a9b5f8c6c4d1fae0027a42835c2fc~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_1a2a9b5f8c6c4d1fae0027a42835c2fc~mv2.png)
![hw8_accel_47_900SampleMIS_8recur](https://static.wixstatic.com/media/0f46d8_bb5e28a8ea664153b99b48d75c3179b8~mv2.png/v1/fill/w_51,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_bb5e28a8ea664153b99b48d75c3179b8~mv2.png)
![hw8_accel_48_900SampleMIS_8recur](https://static.wixstatic.com/media/0f46d8_aee2e91f79684814ae84ac9d783058f1~mv2.png/v1/fill/w_51,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_aee2e91f79684814ae84ac9d783058f1~mv2.png)
![hw9_implicit_surface_66](https://static.wixstatic.com/media/0f46d8_f8c8a04e2f1d4efca945f6f15aef64ee~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_f8c8a04e2f1d4efca945f6f15aef64ee~mv2.png)
![hw9_thin_len_60_lensR_5.0_f_30](https://static.wixstatic.com/media/0f46d8_8fc8f17356e343088069b1f7a1813848~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_8fc8f17356e343088069b1f7a1813848~mv2.png)
![55_2](https://static.wixstatic.com/media/0f46d8_ff329b934514484e9388e03ef7576e2e~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ff329b934514484e9388e03ef7576e2e~mv2.png)
![63_4](https://static.wixstatic.com/media/0f46d8_33d0c48da7df4fdd8d1fecdb88197cdd~mv2.png/v1/fill/w_51,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_33d0c48da7df4fdd8d1fecdb88197cdd~mv2.png)
![52_5Recursion](https://static.wixstatic.com/media/0f46d8_806951741d04464e96f1ff07e3c969a3~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_806951741d04464e96f1ff07e3c969a3~mv2.png)
![53_900MIS_5recur](https://static.wixstatic.com/media/0f46d8_1a8bea73b9ca49d383d763f3f2aee033~mv2.png/v1/fill/w_51,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_1a8bea73b9ca49d383d763f3f2aee033~mv2.png)
![66](https://static.wixstatic.com/media/0f46d8_0e3e4b1041c546d992662d5e6ec27b82~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_0e3e4b1041c546d992662d5e6ec27b82~mv2.png)
![26(squareRoot_80_rec_5)](https://static.wixstatic.com/media/0f46d8_007ab01fb7c84c60be733f9552bd9e63~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_007ab01fb7c84c60be733f9552bd9e63~mv2.png)
![4_100MIS_MirrorBoxUniform_PowerHeruistic_TrowbridgeReitzDistribution](https://static.wixstatic.com/media/0f46d8_9f875210295747b8858e2cb80a947a99~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9f875210295747b8858e2cb80a947a99~mv2.png)
![5_900Direct_Veach](https://static.wixstatic.com/media/0f46d8_4cf373d5dd9b42e9b9be4b3aaffbc7a5~mv2.png/v1/fill/w_77,h_51,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_4cf373d5dd9b42e9b9be4b3aaffbc7a5~mv2.png)
Path Tracer
​
It's Advanced Computer Graphics course project. Use Monte Carlo way to render. Naive, direct light, full lighting, photon mapping, and volume, five types of the integrator are implemented. Sample number, recursion depth, and some other rendering parameters can be adjusted. BVH and Kd-tree are implemented to accelerate.
To see more or discuss possible work let's talk >>
![277 2017-03-31 01-14-08-92](https://static.wixstatic.com/media/0f46d8_79d28d4f56b64e82aca8bc526e433f29~mv2.jpg/v1/fill/w_147,h_113,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_79d28d4f56b64e82aca8bc526e433f29~mv2.jpg)
![277 2017-03-31 01-15-20-47](https://static.wixstatic.com/media/0f46d8_4902a8a8eadf4f4aa1604836426d5f51~mv2.jpg/v1/fill/w_147,h_113,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_4902a8a8eadf4f4aa1604836426d5f51~mv2.jpg)
![277 2017-03-31 01-15-34-22](https://static.wixstatic.com/media/0f46d8_a73c1ea7765f4fab8c4db17feb840bf4~mv2.jpg/v1/fill/w_147,h_113,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a73c1ea7765f4fab8c4db17feb840bf4~mv2.jpg)
![277 2017-03-31 01-15-52-46](https://static.wixstatic.com/media/0f46d8_406ae4b0d73d45628fb83071e237dda0~mv2.jpg/v1/fill/w_147,h_113,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_406ae4b0d73d45628fb83071e237dda0~mv2.jpg)
![277 2017-03-31 01-14-08-92](https://static.wixstatic.com/media/0f46d8_79d28d4f56b64e82aca8bc526e433f29~mv2.jpg/v1/fill/w_147,h_113,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_79d28d4f56b64e82aca8bc526e433f29~mv2.jpg)
![277 2017-03-31 01-15-20-47](https://static.wixstatic.com/media/0f46d8_4902a8a8eadf4f4aa1604836426d5f51~mv2.jpg/v1/fill/w_147,h_113,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_4902a8a8eadf4f4aa1604836426d5f51~mv2.jpg)
![277 2017-03-31 01-15-34-22](https://static.wixstatic.com/media/0f46d8_a73c1ea7765f4fab8c4db17feb840bf4~mv2.jpg/v1/fill/w_147,h_113,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a73c1ea7765f4fab8c4db17feb840bf4~mv2.jpg)
![277 2017-03-31 01-15-52-46](https://static.wixstatic.com/media/0f46d8_406ae4b0d73d45628fb83071e237dda0~mv2.jpg/v1/fill/w_147,h_113,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_406ae4b0d73d45628fb83071e237dda0~mv2.jpg)
mini Minecraft
​
It's a course final project, our team of three use Qt and OpenGL to build a mini-version Mincecraft. Simple AI, different texture maps and game scenes(like mountains, forest, river, or cave) are implemented
![0](https://static.wixstatic.com/media/0f46d8_7d8fc1a314bf4d848cd336793c8bb2bf~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_7d8fc1a314bf4d848cd336793c8bb2bf~mv2.jpg)
![1](https://static.wixstatic.com/media/0f46d8_e46e3323ba354feba332d7f16cf89b68~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e46e3323ba354feba332d7f16cf89b68~mv2.jpg)
![5](https://static.wixstatic.com/media/0f46d8_387a35e1e673446fa52a02b9a1b3b277~mv2.jpg/v1/fill/w_106,h_87,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_387a35e1e673446fa52a02b9a1b3b277~mv2.jpg)
![3](https://static.wixstatic.com/media/0f46d8_9930d6f4166f402282ec24c87ba156d3~mv2.jpg/v1/fill/w_124,h_103,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9930d6f4166f402282ec24c87ba156d3~mv2.jpg)
![2](https://static.wixstatic.com/media/0f46d8_398d5f1cb7154263bf82a5303675b090~mv2.jpg/v1/fill/w_94,h_107,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_398d5f1cb7154263bf82a5303675b090~mv2.jpg)
![4](https://static.wixstatic.com/media/0f46d8_1609b330b8a14409a3dd32011d9595c9~mv2.jpg/v1/fill/w_144,h_88,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_1609b330b8a14409a3dd32011d9595c9~mv2.jpg)
![0](https://static.wixstatic.com/media/0f46d8_7d8fc1a314bf4d848cd336793c8bb2bf~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_7d8fc1a314bf4d848cd336793c8bb2bf~mv2.jpg)
![1](https://static.wixstatic.com/media/0f46d8_e46e3323ba354feba332d7f16cf89b68~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e46e3323ba354feba332d7f16cf89b68~mv2.jpg)
![5](https://static.wixstatic.com/media/0f46d8_387a35e1e673446fa52a02b9a1b3b277~mv2.jpg/v1/fill/w_106,h_87,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_387a35e1e673446fa52a02b9a1b3b277~mv2.jpg)
![3](https://static.wixstatic.com/media/0f46d8_9930d6f4166f402282ec24c87ba156d3~mv2.jpg/v1/fill/w_124,h_103,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9930d6f4166f402282ec24c87ba156d3~mv2.jpg)
![2](https://static.wixstatic.com/media/0f46d8_398d5f1cb7154263bf82a5303675b090~mv2.jpg/v1/fill/w_94,h_107,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_398d5f1cb7154263bf82a5303675b090~mv2.jpg)
![4](https://static.wixstatic.com/media/0f46d8_1609b330b8a14409a3dd32011d9595c9~mv2.jpg/v1/fill/w_144,h_88,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_1609b330b8a14409a3dd32011d9595c9~mv2.jpg)
Second Skin
​​
It's an authoring tool project. Our project of two implemented a Maya 2016 plug-in to fasten and help create really amazing clothes and armors. This project is mainly based on a 2015 SigGraph paper SecondSkin: Sketch-based Construction of Layered 3D Models by Chris De Paoli, Karan Singh from the University of Toronto.
![A2c-IKViewerd 2017-03-31 02-47-00-32](https://static.wixstatic.com/media/0f46d8_d5f2407401fa40beb2e4ef15b94384a4~mv2.jpg/v1/fill/w_144,h_108,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_d5f2407401fa40beb2e4ef15b94384a4~mv2.jpg)
![A2a-Rotationsd 2017-03-31 10-06-43-37](https://static.wixstatic.com/media/0f46d8_a07d34802dca404db52ada5ef946f4a6~mv2.jpg/v1/fill/w_144,h_108,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a07d34802dca404db52ada5ef946f4a6~mv2.jpg)
![A5-BehaviorViewerd 2017-03-31 10-34-52-47](https://static.wixstatic.com/media/0f46d8_ea1accb5bdda4711a23cd6b7115b7c56~mv2.jpg/v1/fill/w_144,h_108,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ea1accb5bdda4711a23cd6b7115b7c56~mv2.jpg)
![A2c-IKViewerd 2017-03-31 02-47-00-32](https://static.wixstatic.com/media/0f46d8_d5f2407401fa40beb2e4ef15b94384a4~mv2.jpg/v1/fill/w_144,h_108,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_d5f2407401fa40beb2e4ef15b94384a4~mv2.jpg)
![A2a-Rotationsd 2017-03-31 10-06-43-37](https://static.wixstatic.com/media/0f46d8_a07d34802dca404db52ada5ef946f4a6~mv2.jpg/v1/fill/w_144,h_108,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a07d34802dca404db52ada5ef946f4a6~mv2.jpg)
![A5-BehaviorViewerd 2017-03-31 10-34-52-47](https://static.wixstatic.com/media/0f46d8_ea1accb5bdda4711a23cd6b7115b7c56~mv2.jpg/v1/fill/w_144,h_108,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ea1accb5bdda4711a23cd6b7115b7c56~mv2.jpg)
Animation Toolkit
​
Animation Toolkit mainly consist of four parts : Behavior animation, Motion Control(FK, IK, Mocap), Particles and Interpolation.
![01](https://static.wixstatic.com/media/0f46d8_defe4abba3064360abdcc187078310d6~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_defe4abba3064360abdcc187078310d6~mv2.jpg)
![houdinifx 2017-03-31 11-34-33-38](https://static.wixstatic.com/media/0f46d8_805823fc47854b96bf2b7956bde762b1~mv2.jpg/v1/fill/w_147,h_93,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_805823fc47854b96bf2b7956bde762b1~mv2.jpg)
![0](https://static.wixstatic.com/media/0f46d8_6c4dbcbaa6654349a995d319508e5b0a~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_6c4dbcbaa6654349a995d319508e5b0a~mv2.jpg)
![01](https://static.wixstatic.com/media/0f46d8_defe4abba3064360abdcc187078310d6~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_defe4abba3064360abdcc187078310d6~mv2.jpg)
![houdinifx 2017-03-31 11-34-33-38](https://static.wixstatic.com/media/0f46d8_805823fc47854b96bf2b7956bde762b1~mv2.jpg/v1/fill/w_147,h_93,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_805823fc47854b96bf2b7956bde762b1~mv2.jpg)
![0](https://static.wixstatic.com/media/0f46d8_6c4dbcbaa6654349a995d319508e5b0a~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_6c4dbcbaa6654349a995d319508e5b0a~mv2.jpg)
![47](https://static.wixstatic.com/media/0f46d8_f0665afc6b6c451e8e4af4f5960d9702~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_f0665afc6b6c451e8e4af4f5960d9702~mv2.png)
![42](https://static.wixstatic.com/media/0f46d8_b1a256fb19a34379a9bc15b9fbc1adb4~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_b1a256fb19a34379a9bc15b9fbc1adb4~mv2.png)
![37](https://static.wixstatic.com/media/0f46d8_c981bd2a41a14c0bb62a92c3b4ece352~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_c981bd2a41a14c0bb62a92c3b4ece352~mv2.png)
![47](https://static.wixstatic.com/media/0f46d8_f0665afc6b6c451e8e4af4f5960d9702~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_f0665afc6b6c451e8e4af4f5960d9702~mv2.png)
![42](https://static.wixstatic.com/media/0f46d8_b1a256fb19a34379a9bc15b9fbc1adb4~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_b1a256fb19a34379a9bc15b9fbc1adb4~mv2.png)
![37](https://static.wixstatic.com/media/0f46d8_c981bd2a41a14c0bb62a92c3b4ece352~mv2.png/v1/fill/w_100,h_100,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_c981bd2a41a14c0bb62a92c3b4ece352~mv2.png)
Ray Tracer
​
It's Advanced Computer Graphics course project. Use ray trace method to render input scene. Features like AA, normal map are implemented.
![1](https://static.wixstatic.com/media/0f46d8_8a09a87eaf1b4b028a0001cbdb95c59a~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_8a09a87eaf1b4b028a0001cbdb95c59a~mv2.jpg)
![2](https://static.wixstatic.com/media/0f46d8_ede4a65ef0f2403fb3b43ded31a07298~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ede4a65ef0f2403fb3b43ded31a07298~mv2.jpg)
![0](https://static.wixstatic.com/media/0f46d8_2a35f996385344ea8ca5cfc3285d2d5d~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_2a35f996385344ea8ca5cfc3285d2d5d~mv2.jpg)
![1](https://static.wixstatic.com/media/0f46d8_8a09a87eaf1b4b028a0001cbdb95c59a~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_8a09a87eaf1b4b028a0001cbdb95c59a~mv2.jpg)
![2](https://static.wixstatic.com/media/0f46d8_ede4a65ef0f2403fb3b43ded31a07298~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ede4a65ef0f2403fb3b43ded31a07298~mv2.jpg)
![0](https://static.wixstatic.com/media/0f46d8_2a35f996385344ea8ca5cfc3285d2d5d~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_2a35f996385344ea8ca5cfc3285d2d5d~mv2.jpg)
Flying to the Moon
​
It's a Unity project inspired by classic arcade game, Asteroid and my favorite song, Flying me to the moon.
Players control a spaceship hit asteroids and enemy ships in the space. The game goal is flying to the Moon(when distance displayed on the upper right corner becomes) and get a higher score. Acceleration and more enemy/asteroid hit will get more scores.
![ScreenShot00008](https://static.wixstatic.com/media/0f46d8_ba10f41ea77c47688f4160383d0f7163~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ba10f41ea77c47688f4160383d0f7163~mv2.png)
![ScreenShot00009](https://static.wixstatic.com/media/0f46d8_74ad41db8dd7444280e1c0ecdfb8d2bc~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_74ad41db8dd7444280e1c0ecdfb8d2bc~mv2.png)
![ScreenShot00000](https://static.wixstatic.com/media/0f46d8_99ef15753a5042cab57c2ae006945153~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_99ef15753a5042cab57c2ae006945153~mv2.png)
![ScreenShot00007](https://static.wixstatic.com/media/0f46d8_4447501d30a64d2c9a4ed487bc96f6b6~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_4447501d30a64d2c9a4ed487bc96f6b6~mv2.png)
![ScreenShot00001](https://static.wixstatic.com/media/0f46d8_7f26a26c781043289a41c6e555fd61e1~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_7f26a26c781043289a41c6e555fd61e1~mv2.png)
![ScreenShot00006](https://static.wixstatic.com/media/0f46d8_9b06f6a67813421ca8a26d4bd653ed7e~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9b06f6a67813421ca8a26d4bd653ed7e~mv2.png)
![ScreenShot00008](https://static.wixstatic.com/media/0f46d8_ba10f41ea77c47688f4160383d0f7163~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ba10f41ea77c47688f4160383d0f7163~mv2.png)
![ScreenShot00009](https://static.wixstatic.com/media/0f46d8_74ad41db8dd7444280e1c0ecdfb8d2bc~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_74ad41db8dd7444280e1c0ecdfb8d2bc~mv2.png)
![ScreenShot00000](https://static.wixstatic.com/media/0f46d8_99ef15753a5042cab57c2ae006945153~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_99ef15753a5042cab57c2ae006945153~mv2.png)
![ScreenShot00007](https://static.wixstatic.com/media/0f46d8_4447501d30a64d2c9a4ed487bc96f6b6~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_4447501d30a64d2c9a4ed487bc96f6b6~mv2.png)
![ScreenShot00001](https://static.wixstatic.com/media/0f46d8_7f26a26c781043289a41c6e555fd61e1~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_7f26a26c781043289a41c6e555fd61e1~mv2.png)
![ScreenShot00006](https://static.wixstatic.com/media/0f46d8_9b06f6a67813421ca8a26d4bd653ed7e~mv2.png/v1/fill/w_49,h_27,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9b06f6a67813421ca8a26d4bd653ed7e~mv2.png)
Space Tank
​
It's my personal Space Tank project, developed by Unreal Engine 4.
Basically, It's a hovering space tank game with simple AI enemy who will chase and fire at you(Like Tank World, which I really like). A low-poly space environment with lots of emissive crystals and materials.​
![104_EnvironmentMap_Dragon_MIS_5000samp](https://static.wixstatic.com/media/0f46d8_139793a178234340ae5e8550cd56e630~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_139793a178234340ae5e8550cd56e630~mv2.png)
![110_BayonettaTable_NormalMap_MIS_2000samp](https://static.wixstatic.com/media/0f46d8_02a58794c059427e8ffc1bf21e0846ac~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_02a58794c059427e8ffc1bf21e0846ac~mv2.png)
![105_EnvironmentMap_Dragon_MIS_pure_reflective_1506samp](https://static.wixstatic.com/media/0f46d8_0a2d92d537284e72817579cf8088b17c~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_0a2d92d537284e72817579cf8088b17c~mv2.png)
![106_EnvironmentMap_Dragon_MIS_Glass_2002samp](https://static.wixstatic.com/media/0f46d8_054a1825d26a4b73a69aa6625f38fd9d~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_054a1825d26a4b73a69aa6625f38fd9d~mv2.png)
![5000samp_cornell2](https://static.wixstatic.com/media/0f46d8_e64c3798f2bc4911a55f5d8caaccec54~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e64c3798f2bc4911a55f5d8caaccec54~mv2.png)
![5000samp_cornell_thin_lens](https://static.wixstatic.com/media/0f46d8_e921c4d846a54dbc8b84113346dc5de0~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e921c4d846a54dbc8b84113346dc5de0~mv2.png)
![103_EnvironmentMap_1000samp](https://static.wixstatic.com/media/0f46d8_560e593141194bc3bbc6e6e1d7ea3d4f~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_560e593141194bc3bbc6e6e1d7ea3d4f~mv2.png)
![110_BayonettaTable_NoNormalMap_MIS_2000samp](https://static.wixstatic.com/media/0f46d8_b7aa47dc41b44e308f4b8db8a2cb470d~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_b7aa47dc41b44e308f4b8db8a2cb470d~mv2.png)
![5000samp_cornell](https://static.wixstatic.com/media/0f46d8_4184c3c3d2df40b48ba3127ee21a432c~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_4184c3c3d2df40b48ba3127ee21a432c~mv2.png)
![5000samp_cornell_mesh](https://static.wixstatic.com/media/0f46d8_00e401de10c4456dbc388b364f98def9~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_00e401de10c4456dbc388b364f98def9~mv2.png)
![70_DirctLighting_5000samp](https://static.wixstatic.com/media/0f46d8_5bb3ff96d65849caa2124e33d6dd03f1~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_5bb3ff96d65849caa2124e33d6dd03f1~mv2.png)
![102_EnvironmentMap_1000samp](https://static.wixstatic.com/media/0f46d8_2616b3d627cb472294c72aaa1537c3ec~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_2616b3d627cb472294c72aaa1537c3ec~mv2.png)
![104_EnvironmentMap_Dragon_MIS_5000samp](https://static.wixstatic.com/media/0f46d8_139793a178234340ae5e8550cd56e630~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_139793a178234340ae5e8550cd56e630~mv2.png)
![110_BayonettaTable_NormalMap_MIS_2000samp](https://static.wixstatic.com/media/0f46d8_02a58794c059427e8ffc1bf21e0846ac~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_02a58794c059427e8ffc1bf21e0846ac~mv2.png)
![105_EnvironmentMap_Dragon_MIS_pure_reflective_1506samp](https://static.wixstatic.com/media/0f46d8_0a2d92d537284e72817579cf8088b17c~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_0a2d92d537284e72817579cf8088b17c~mv2.png)
![106_EnvironmentMap_Dragon_MIS_Glass_2002samp](https://static.wixstatic.com/media/0f46d8_054a1825d26a4b73a69aa6625f38fd9d~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_054a1825d26a4b73a69aa6625f38fd9d~mv2.png)
![5000samp_cornell2](https://static.wixstatic.com/media/0f46d8_e64c3798f2bc4911a55f5d8caaccec54~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e64c3798f2bc4911a55f5d8caaccec54~mv2.png)
![5000samp_cornell_thin_lens](https://static.wixstatic.com/media/0f46d8_e921c4d846a54dbc8b84113346dc5de0~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e921c4d846a54dbc8b84113346dc5de0~mv2.png)
![103_EnvironmentMap_1000samp](https://static.wixstatic.com/media/0f46d8_560e593141194bc3bbc6e6e1d7ea3d4f~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_560e593141194bc3bbc6e6e1d7ea3d4f~mv2.png)
![110_BayonettaTable_NoNormalMap_MIS_2000samp](https://static.wixstatic.com/media/0f46d8_b7aa47dc41b44e308f4b8db8a2cb470d~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_b7aa47dc41b44e308f4b8db8a2cb470d~mv2.png)
![5000samp_cornell](https://static.wixstatic.com/media/0f46d8_4184c3c3d2df40b48ba3127ee21a432c~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_4184c3c3d2df40b48ba3127ee21a432c~mv2.png)
![5000samp_cornell_mesh](https://static.wixstatic.com/media/0f46d8_00e401de10c4456dbc388b364f98def9~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_00e401de10c4456dbc388b364f98def9~mv2.png)
![70_DirctLighting_5000samp](https://static.wixstatic.com/media/0f46d8_5bb3ff96d65849caa2124e33d6dd03f1~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_5bb3ff96d65849caa2124e33d6dd03f1~mv2.png)
![102_EnvironmentMap_1000samp](https://static.wixstatic.com/media/0f46d8_2616b3d627cb472294c72aaa1537c3ec~mv2.png/v1/fill/w_80,h_80,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_2616b3d627cb472294c72aaa1537c3ec~mv2.png)
CUDA Path Tracer
​
It's my CIS 565 GPU Programming and Architecture course project, developed by CUDA.
Compared with the CPU version path tracer above, it provides extra path compaction, which removes paths that no longer need to trace for each rendering iteration, path sorting by material and first bounce cache features. Besides that, thanks to powerful GPU, rendering time is largely reduced.
![myGrass2](https://static.wixstatic.com/media/0f46d8_da53096579ca4d129b4b597397103a4a~mv2.gif)
![collision](https://static.wixstatic.com/media/0f46d8_1694d1cf224d417c8b2a4d34c3fc1d80~mv2.jpg/v1/fill/w_147,h_116,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_1694d1cf224d417c8b2a4d34c3fc1d80~mv2.jpg)
![cullingTestView](https://static.wixstatic.com/media/0f46d8_e09de04c77d44529882fda2a8456031d~mv2.jpg/v1/fill/w_147,h_117,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e09de04c77d44529882fda2a8456031d~mv2.jpg)
![screenshot3](https://static.wixstatic.com/media/0f46d8_3740d075108e4cf48f2161c505d5547b~mv2.jpg/v1/fill/w_147,h_117,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_3740d075108e4cf48f2161c505d5547b~mv2.jpg)
![screenshot2](https://static.wixstatic.com/media/0f46d8_a181875ee75c4f1d96221160c46008c3~mv2.jpg/v1/fill/w_147,h_117,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a181875ee75c4f1d96221160c46008c3~mv2.jpg)
![screenshot](https://static.wixstatic.com/media/0f46d8_630a599a280e4a1c83e8c287670f1cb2~mv2.jpg/v1/fill/w_147,h_117,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_630a599a280e4a1c83e8c287670f1cb2~mv2.jpg)
![tessel_high](https://static.wixstatic.com/media/0f46d8_ee8182f430e1401ba6104081f90e831b~mv2.jpg/v1/fill/w_147,h_116,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ee8182f430e1401ba6104081f90e831b~mv2.jpg)
![myGrass2](https://static.wixstatic.com/media/0f46d8_da53096579ca4d129b4b597397103a4a~mv2.gif)
![collision](https://static.wixstatic.com/media/0f46d8_1694d1cf224d417c8b2a4d34c3fc1d80~mv2.jpg/v1/fill/w_147,h_116,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_1694d1cf224d417c8b2a4d34c3fc1d80~mv2.jpg)
![cullingTestView](https://static.wixstatic.com/media/0f46d8_e09de04c77d44529882fda2a8456031d~mv2.jpg/v1/fill/w_147,h_117,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e09de04c77d44529882fda2a8456031d~mv2.jpg)
![screenshot3](https://static.wixstatic.com/media/0f46d8_3740d075108e4cf48f2161c505d5547b~mv2.jpg/v1/fill/w_147,h_117,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_3740d075108e4cf48f2161c505d5547b~mv2.jpg)
![screenshot2](https://static.wixstatic.com/media/0f46d8_a181875ee75c4f1d96221160c46008c3~mv2.jpg/v1/fill/w_147,h_117,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a181875ee75c4f1d96221160c46008c3~mv2.jpg)
![screenshot](https://static.wixstatic.com/media/0f46d8_630a599a280e4a1c83e8c287670f1cb2~mv2.jpg/v1/fill/w_147,h_117,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_630a599a280e4a1c83e8c287670f1cb2~mv2.jpg)
![tessel_high](https://static.wixstatic.com/media/0f46d8_ee8182f430e1401ba6104081f90e831b~mv2.jpg/v1/fill/w_147,h_116,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ee8182f430e1401ba6104081f90e831b~mv2.jpg)
Vulkan Grass Rendering
​
Use Vulkan to implement grass simulation and rendering.
This is mainly an implementation of the paper, Responsive Real-Time Grass Rendering for General 3D Scenes(https://www.cg.tuwien.ac.at/research/publications/2017/JAHRMANN-2017-RRTG/JAHRMANN-2017-RRTG-draft.pdf)
This is a simple game written in Python and mainly use wxPython to complete the GUI part. Players can control block speed, use W, A, S, D to control.
![Game Scene](https://static.wixstatic.com/media/0f46d8_8f356e8aeb9c4578a3b7604c25f00686~mv2.jpg/v1/fill/w_113,h_144,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_8f356e8aeb9c4578a3b7604c25f00686~mv2.jpg)
![Game Scene](https://static.wixstatic.com/media/0f46d8_8f356e8aeb9c4578a3b7604c25f00686~mv2.jpg/v1/fill/w_113,h_144,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_8f356e8aeb9c4578a3b7604c25f00686~mv2.jpg)
![BabylonjsWeatherSystemImage](https://static.wixstatic.com/media/0f46d8_96b894050b5342e7bc34fd8c4055c3f5~mv2_d_3840_1996_s_2.jpg/v1/fill/w_147,h_76,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_96b894050b5342e7bc34fd8c4055c3f5~mv2_d_3840_1996_s_2.jpg)
![7_compose](https://static.wixstatic.com/media/0f46d8_9573d957729844b094b6a7c9184d573e~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9573d957729844b094b6a7c9184d573e~mv2.jpg)
![puddle](https://static.wixstatic.com/media/0f46d8_74014cb331634b04a1546fc282cf0c91~mv2.gif)
![rainSplashParticle](https://static.wixstatic.com/media/0f46d8_b7d2d9edd7ca4b1e87edf49b23c61483~mv2.gif)
![BabylonjsWeatherSystemImage](https://static.wixstatic.com/media/0f46d8_96b894050b5342e7bc34fd8c4055c3f5~mv2_d_3840_1996_s_2.jpg/v1/fill/w_147,h_76,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_96b894050b5342e7bc34fd8c4055c3f5~mv2_d_3840_1996_s_2.jpg)
![7_compose](https://static.wixstatic.com/media/0f46d8_9573d957729844b094b6a7c9184d573e~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9573d957729844b094b6a7c9184d573e~mv2.jpg)
![puddle](https://static.wixstatic.com/media/0f46d8_74014cb331634b04a1546fc282cf0c91~mv2.gif)
![rainSplashParticle](https://static.wixstatic.com/media/0f46d8_b7d2d9edd7ca4b1e87edf49b23c61483~mv2.gif)
BabylonJS post possessing & Weather Tools
​
In this project, our goal is to contribute to and extend BabylonJS WebGL engine. Our main contribution relies on several post processing effects and a weather system. To see more details, please go to the project Github page and watch our demo videos!
A Picture that Can MOVE
This is a Vuforia AR project I made in 2014. The main goal is providing tourists in our university museum a better experience. When app "find" the target, it will trigger animation effects/play related introduction video in AR context.
![ar2](https://static.wixstatic.com/media/0f46d8_a9deb631bf8a4bfd898de3be145dde99~mv2.jpg/v1/fill/w_115,h_204,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a9deb631bf8a4bfd898de3be145dde99~mv2.jpg)
![ar3](https://static.wixstatic.com/media/0f46d8_6aba104fa89b4aa5a049dd51d0736e8f~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_6aba104fa89b4aa5a049dd51d0736e8f~mv2.jpg)
![ar4](https://static.wixstatic.com/media/0f46d8_ba939a3c50344cbf9edd58ea1673ef71~mv2.jpg/v1/fill/w_144,h_108,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ba939a3c50344cbf9edd58ea1673ef71~mv2.jpg)
![ar1](https://static.wixstatic.com/media/0f46d8_2c34ff8f8b564a289600b25bcfe2da85~mv2.jpg/v1/fill/w_152,h_152,al_c,q_80,blur_3,enc_auto/0f46d8_2c34ff8f8b564a289600b25bcfe2da85~mv2.jpg)
![ar2](https://static.wixstatic.com/media/0f46d8_a9deb631bf8a4bfd898de3be145dde99~mv2.jpg/v1/fill/w_115,h_204,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a9deb631bf8a4bfd898de3be145dde99~mv2.jpg)
![ar3](https://static.wixstatic.com/media/0f46d8_6aba104fa89b4aa5a049dd51d0736e8f~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_6aba104fa89b4aa5a049dd51d0736e8f~mv2.jpg)
![ar4](https://static.wixstatic.com/media/0f46d8_ba939a3c50344cbf9edd58ea1673ef71~mv2.jpg/v1/fill/w_144,h_108,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ba939a3c50344cbf9edd58ea1673ef71~mv2.jpg)
![ar1](https://static.wixstatic.com/media/0f46d8_2c34ff8f8b564a289600b25bcfe2da85~mv2.jpg/v1/fill/w_152,h_152,al_c,q_80,blur_3,enc_auto/0f46d8_2c34ff8f8b564a289600b25bcfe2da85~mv2.jpg)
3D model reconstruction from image sequence project
​
It's my undergraduate design. Basically, users input an image sequence (images should be taken around the object aimed to be reconstructed), the system match features, rebuilding a mesh and use OpenGL to show it in GUI.
![3dRebuild07](https://static.wixstatic.com/media/0f46d8_a3ff705a0ad84fb98f9566026fe4a46a~mv2.jpg/v1/fill/w_147,h_91,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a3ff705a0ad84fb98f9566026fe4a46a~mv2.jpg)
![3dRebuild06](https://static.wixstatic.com/media/0f46d8_41c5f121bbc843adb95c962e732754f0~mv2.jpg/v1/fill/w_147,h_78,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_41c5f121bbc843adb95c962e732754f0~mv2.jpg)
![3dRebuild03](https://static.wixstatic.com/media/0f46d8_04b5f76a001d40f583135653cb2bf74d~mv2.jpg/v1/fill/w_147,h_91,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_04b5f76a001d40f583135653cb2bf74d~mv2.jpg)
![3dRebuild02](https://static.wixstatic.com/media/0f46d8_b807e5850aac45b9a114e70f46da820c~mv2.jpg/v1/fill/w_147,h_73,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_b807e5850aac45b9a114e70f46da820c~mv2.jpg)
![3dRebuild05](https://static.wixstatic.com/media/0f46d8_03079c37e096431f9f54bf786e49d7d0~mv2.jpg/v1/fill/w_147,h_90,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_03079c37e096431f9f54bf786e49d7d0~mv2.jpg)
![3dRebuild04](https://static.wixstatic.com/media/0f46d8_d32acf0bfa2b4839a5ce8dba2578f020~mv2.jpg/v1/fill/w_147,h_90,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_d32acf0bfa2b4839a5ce8dba2578f020~mv2.jpg)
![3dRebuild01](https://static.wixstatic.com/media/0f46d8_7d08e605644641f98f295630fdefa439~mv2.jpg/v1/fill/w_147,h_91,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_7d08e605644641f98f295630fdefa439~mv2.jpg)
![3dRebuild0](https://static.wixstatic.com/media/0f46d8_24bbb03b48ec476ea48a51477d69101b~mv2.jpg/v1/fill/w_147,h_91,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_24bbb03b48ec476ea48a51477d69101b~mv2.jpg)
![3dRebuild08](https://static.wixstatic.com/media/0f46d8_e97668c19e664f7d8efd424c746496ec~mv2.jpg/v1/fill/w_147,h_90,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e97668c19e664f7d8efd424c746496ec~mv2.jpg)
![3dRebuild07](https://static.wixstatic.com/media/0f46d8_a3ff705a0ad84fb98f9566026fe4a46a~mv2.jpg/v1/fill/w_147,h_91,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a3ff705a0ad84fb98f9566026fe4a46a~mv2.jpg)
![3dRebuild06](https://static.wixstatic.com/media/0f46d8_41c5f121bbc843adb95c962e732754f0~mv2.jpg/v1/fill/w_147,h_78,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_41c5f121bbc843adb95c962e732754f0~mv2.jpg)
![3dRebuild03](https://static.wixstatic.com/media/0f46d8_04b5f76a001d40f583135653cb2bf74d~mv2.jpg/v1/fill/w_147,h_91,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_04b5f76a001d40f583135653cb2bf74d~mv2.jpg)
![3dRebuild02](https://static.wixstatic.com/media/0f46d8_b807e5850aac45b9a114e70f46da820c~mv2.jpg/v1/fill/w_147,h_73,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_b807e5850aac45b9a114e70f46da820c~mv2.jpg)
![3dRebuild05](https://static.wixstatic.com/media/0f46d8_03079c37e096431f9f54bf786e49d7d0~mv2.jpg/v1/fill/w_147,h_90,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_03079c37e096431f9f54bf786e49d7d0~mv2.jpg)
![3dRebuild04](https://static.wixstatic.com/media/0f46d8_d32acf0bfa2b4839a5ce8dba2578f020~mv2.jpg/v1/fill/w_147,h_90,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_d32acf0bfa2b4839a5ce8dba2578f020~mv2.jpg)
![3dRebuild01](https://static.wixstatic.com/media/0f46d8_7d08e605644641f98f295630fdefa439~mv2.jpg/v1/fill/w_147,h_91,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_7d08e605644641f98f295630fdefa439~mv2.jpg)
![3dRebuild0](https://static.wixstatic.com/media/0f46d8_24bbb03b48ec476ea48a51477d69101b~mv2.jpg/v1/fill/w_147,h_91,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_24bbb03b48ec476ea48a51477d69101b~mv2.jpg)
![3dRebuild08](https://static.wixstatic.com/media/0f46d8_e97668c19e664f7d8efd424c746496ec~mv2.jpg/v1/fill/w_147,h_90,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e97668c19e664f7d8efd424c746496ec~mv2.jpg)
![8](https://static.wixstatic.com/media/0f46d8_964c6f0784174db2bf89f91cb4e4d504~mv2.jpg/v1/fill/w_147,h_89,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_964c6f0784174db2bf89f91cb4e4d504~mv2.jpg)
![7](https://static.wixstatic.com/media/0f46d8_88e4a7b29a604ae48bb8378b9b3f658a~mv2.jpg/v1/fill/w_147,h_87,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_88e4a7b29a604ae48bb8378b9b3f658a~mv2.jpg)
![6](https://static.wixstatic.com/media/0f46d8_2266d4f763604d20b5847572076f105c~mv2.jpg/v1/fill/w_147,h_96,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_2266d4f763604d20b5847572076f105c~mv2.jpg)
![5](https://static.wixstatic.com/media/0f46d8_a838d7623d864f2ba0cd208e6d2502f2~mv2.jpg/v1/fill/w_147,h_96,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a838d7623d864f2ba0cd208e6d2502f2~mv2.jpg)
![4](https://static.wixstatic.com/media/0f46d8_4a559c1d6efc4f90be11c02f60c2ff71~mv2.jpg/v1/fill/w_147,h_96,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_4a559c1d6efc4f90be11c02f60c2ff71~mv2.jpg)
![8](https://static.wixstatic.com/media/0f46d8_964c6f0784174db2bf89f91cb4e4d504~mv2.jpg/v1/fill/w_147,h_89,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_964c6f0784174db2bf89f91cb4e4d504~mv2.jpg)
![7](https://static.wixstatic.com/media/0f46d8_88e4a7b29a604ae48bb8378b9b3f658a~mv2.jpg/v1/fill/w_147,h_87,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_88e4a7b29a604ae48bb8378b9b3f658a~mv2.jpg)
![6](https://static.wixstatic.com/media/0f46d8_2266d4f763604d20b5847572076f105c~mv2.jpg/v1/fill/w_147,h_96,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_2266d4f763604d20b5847572076f105c~mv2.jpg)
![5](https://static.wixstatic.com/media/0f46d8_a838d7623d864f2ba0cd208e6d2502f2~mv2.jpg/v1/fill/w_147,h_96,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a838d7623d864f2ba0cd208e6d2502f2~mv2.jpg)
![4](https://static.wixstatic.com/media/0f46d8_4a559c1d6efc4f90be11c02f60c2ff71~mv2.jpg/v1/fill/w_147,h_96,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_4a559c1d6efc4f90be11c02f60c2ff71~mv2.jpg)
Mini Maya & Mesh Editor
​
This mini Maya project is based on OpenGL, using half-edge mesh data structure. The user can edit vertex, face, edge, do the Catmull-Clark subdivision, face extruding and Bevel Edge and import skeleton and do skinning.
![2](https://static.wixstatic.com/media/0f46d8_85eadfc8a1b74a19aa719ca9ca6876b6~mv2.gif)
![1](https://static.wixstatic.com/media/0f46d8_c42d4176387c44f6a7833922cb7e8214~mv2.gif)
![milkTruck](https://static.wixstatic.com/media/0f46d8_e2d001fe0ef5439e8c9314cc531888ca~mv2.jpg/v1/fill/w_145,h_154,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e2d001fe0ef5439e8c9314cc531888ca~mv2.jpg)
![colorLerp_bloom](https://static.wixstatic.com/media/0f46d8_f3d0aca09fde453390f01644c7cd113c~mv2.jpg/v1/fill/w_143,h_154,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_f3d0aca09fde453390f01644c7cd113c~mv2.jpg)
![3](https://static.wixstatic.com/media/0f46d8_127eca65d3e1411bb3aadc67bea9b1f0~mv2.gif)
![0](https://static.wixstatic.com/media/0f46d8_612d5248dae14e75b4a007e77a211b09~mv2.gif)
![bilinear_filter](https://static.wixstatic.com/media/0f46d8_72501dec03354216adcc2edd40fad400~mv2.jpg/v1/fill/w_98,h_99,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_72501dec03354216adcc2edd40fad400~mv2.jpg)
![bilinear_duck](https://static.wixstatic.com/media/0f46d8_7a93d05d3b8b45b7a860ba4057197238~mv2.jpg/v1/fill/w_100,h_97,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_7a93d05d3b8b45b7a860ba4057197238~mv2.jpg)
![2](https://static.wixstatic.com/media/0f46d8_85eadfc8a1b74a19aa719ca9ca6876b6~mv2.gif)
![1](https://static.wixstatic.com/media/0f46d8_c42d4176387c44f6a7833922cb7e8214~mv2.gif)
![milkTruck](https://static.wixstatic.com/media/0f46d8_e2d001fe0ef5439e8c9314cc531888ca~mv2.jpg/v1/fill/w_145,h_154,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e2d001fe0ef5439e8c9314cc531888ca~mv2.jpg)
![colorLerp_bloom](https://static.wixstatic.com/media/0f46d8_f3d0aca09fde453390f01644c7cd113c~mv2.jpg/v1/fill/w_143,h_154,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_f3d0aca09fde453390f01644c7cd113c~mv2.jpg)
![3](https://static.wixstatic.com/media/0f46d8_127eca65d3e1411bb3aadc67bea9b1f0~mv2.gif)
![0](https://static.wixstatic.com/media/0f46d8_612d5248dae14e75b4a007e77a211b09~mv2.gif)
![bilinear_filter](https://static.wixstatic.com/media/0f46d8_72501dec03354216adcc2edd40fad400~mv2.jpg/v1/fill/w_98,h_99,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_72501dec03354216adcc2edd40fad400~mv2.jpg)
![bilinear_duck](https://static.wixstatic.com/media/0f46d8_7a93d05d3b8b45b7a860ba4057197238~mv2.jpg/v1/fill/w_100,h_97,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_7a93d05d3b8b45b7a860ba4057197238~mv2.jpg)
CUDA Rasterizer
​
It's my CIS 565 GPU Programming and Architecture course project, developed by CUDA.
Except for main stages in rasterizer pipeline, features include bloom post-processing, backface culling, correct color interpolation between vertices on a primitive, wireframe / Points mode, and SSAA.
![screenshot](https://static.wixstatic.com/media/0f46d8_109f77d0d8544ed2b3779870da726925~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_109f77d0d8544ed2b3779870da726925~mv2.jpg)
![screenshot_bloom](https://static.wixstatic.com/media/0f46d8_ead14300669b4fe5a6c6fd223cf7f717~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ead14300669b4fe5a6c6fd223cf7f717~mv2.jpg)
![screenshot_rampShading](https://static.wixstatic.com/media/0f46d8_eb628480eaf2494992d5afa019226ada~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_eb628480eaf2494992d5afa019226ada~mv2.jpg)
![screenshot_bloom+rampShading](https://static.wixstatic.com/media/0f46d8_c50ebfd527974e989e38819f7043dce3~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_c50ebfd527974e989e38819f7043dce3~mv2.jpg)
![screenshot](https://static.wixstatic.com/media/0f46d8_109f77d0d8544ed2b3779870da726925~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_109f77d0d8544ed2b3779870da726925~mv2.jpg)
![screenshot_bloom](https://static.wixstatic.com/media/0f46d8_ead14300669b4fe5a6c6fd223cf7f717~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ead14300669b4fe5a6c6fd223cf7f717~mv2.jpg)
![screenshot_rampShading](https://static.wixstatic.com/media/0f46d8_eb628480eaf2494992d5afa019226ada~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_eb628480eaf2494992d5afa019226ada~mv2.jpg)
![screenshot_bloom+rampShading](https://static.wixstatic.com/media/0f46d8_c50ebfd527974e989e38819f7043dce3~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_c50ebfd527974e989e38819f7043dce3~mv2.jpg)
Clustered Forward Plus / Deferred Shading
​
It's a WebGL clustered Forward Plus & Deferred Shading project and also a CIS 565 GPU Programming and Architecture course project.
In this project, a cluster class is implemented to accelerate Forward Plus & deferred shading process(especially in cases of really many lights). Effects like Bloom and ramp shading are also implememted.
![2](https://static.wixstatic.com/media/0f46d8_ee5c8e3235c7444cb904d8f1bcb98ce2~mv2.png/v1/fill/w_49,h_28,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ee5c8e3235c7444cb904d8f1bcb98ce2~mv2.png)
![1](https://static.wixstatic.com/media/0f46d8_f5c049e2e114495f955027bdb1543d8c~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_f5c049e2e114495f955027bdb1543d8c~mv2.jpg)
![2](https://static.wixstatic.com/media/0f46d8_ee5c8e3235c7444cb904d8f1bcb98ce2~mv2.png/v1/fill/w_49,h_28,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_ee5c8e3235c7444cb904d8f1bcb98ce2~mv2.png)
![1](https://static.wixstatic.com/media/0f46d8_f5c049e2e114495f955027bdb1543d8c~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_f5c049e2e114495f955027bdb1543d8c~mv2.jpg)
Invisible War
​
Hi, this is our game deign course project developed using Unreal Engine 4. It's an interesting online PVP game by our group of three. The other two team members are Linshen Xiao and Youmo Yan. In our game, use your spray to spray out your invisible enemies and kill them and be the last survivor to win the game!
![Untitled2](https://static.wixstatic.com/media/0f46d8_f63fe3b8bbba47ceb76fbd3597400f19~mv2_d_3840_2160_s_2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_f63fe3b8bbba47ceb76fbd3597400f19~mv2_d_3840_2160_s_2.jpg)
![Untitled](https://static.wixstatic.com/media/0f46d8_e157038839f9407d9432542af4356220~mv2_d_3840_2160_s_2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e157038839f9407d9432542af4356220~mv2_d_3840_2160_s_2.jpg)
![Untitled](https://static.wixstatic.com/media/0f46d8_e157038839f9407d9432542af4356220~mv2_d_3840_2160_s_2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e157038839f9407d9432542af4356220~mv2_d_3840_2160_s_2.jpg)
![Untitled2](https://static.wixstatic.com/media/0f46d8_f63fe3b8bbba47ceb76fbd3597400f19~mv2_d_3840_2160_s_2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_f63fe3b8bbba47ceb76fbd3597400f19~mv2_d_3840_2160_s_2.jpg)
![Untitled](https://static.wixstatic.com/media/0f46d8_e157038839f9407d9432542af4356220~mv2_d_3840_2160_s_2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e157038839f9407d9432542af4356220~mv2_d_3840_2160_s_2.jpg)
![Untitled](https://static.wixstatic.com/media/0f46d8_e157038839f9407d9432542af4356220~mv2_d_3840_2160_s_2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e157038839f9407d9432542af4356220~mv2_d_3840_2160_s_2.jpg)
The Cube
​
Hi, this is game design VR course project, developed using Unreal Engine 4 by our group of three. The other team members are Linshen Xiao and Youmo Yan. In our VR game, you need to rotate the small cube attached to your VR motion controller so that your can rotate the whole Cube world and find clues to solve the puzzle and run out of this magic Cube world and finally win the game!
![screenshot](https://static.wixstatic.com/media/0f46d8_a00c581e16664777b1eb146e8a1fb72d~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a00c581e16664777b1eb146e8a1fb72d~mv2.jpg)
![densityWithPerlinNoise](https://static.wixstatic.com/media/0f46d8_d1a6499310e74f73b266ac5a90569490~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_d1a6499310e74f73b266ac5a90569490~mv2.jpg)
![darkscene](https://static.wixstatic.com/media/0f46d8_9efd5ea61acb44048547b160231a6e9b~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9efd5ea61acb44048547b160231a6e9b~mv2.jpg)
![dayscene](https://static.wixstatic.com/media/0f46d8_a3adb5f8d71d4b51b3ac5d1a6b073257~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a3adb5f8d71d4b51b3ac5d1a6b073257~mv2.jpg)
![cube](https://static.wixstatic.com/media/0f46d8_ebda7f6b38f6499ca5a818c166ddf1ff~mv2.gif)
![death](https://static.wixstatic.com/media/0f46d8_82324b89e1f0409d98ef9d51246814ec~mv2.gif)
![metaball](https://static.wixstatic.com/media/0f46d8_ed00ec61301442d99fcfadf69fcc9394~mv2.gif)
![0](https://static.wixstatic.com/media/0f46d8_1406e77b2b644747a4c8b96449717746~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_1406e77b2b644747a4c8b96449717746~mv2.jpg)
![1](https://static.wixstatic.com/media/0f46d8_e22d4aff5d4d4ab0b0c74091374fcbd0~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e22d4aff5d4d4ab0b0c74091374fcbd0~mv2.jpg)
![1_2](https://static.wixstatic.com/media/0f46d8_244b7dbd66b44c30874de7421423238b~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_244b7dbd66b44c30874de7421423238b~mv2.jpg)
![screenshot](https://static.wixstatic.com/media/0f46d8_a00c581e16664777b1eb146e8a1fb72d~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a00c581e16664777b1eb146e8a1fb72d~mv2.jpg)
![densityWithPerlinNoise](https://static.wixstatic.com/media/0f46d8_d1a6499310e74f73b266ac5a90569490~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_d1a6499310e74f73b266ac5a90569490~mv2.jpg)
![darkscene](https://static.wixstatic.com/media/0f46d8_9efd5ea61acb44048547b160231a6e9b~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_9efd5ea61acb44048547b160231a6e9b~mv2.jpg)
![dayscene](https://static.wixstatic.com/media/0f46d8_a3adb5f8d71d4b51b3ac5d1a6b073257~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_a3adb5f8d71d4b51b3ac5d1a6b073257~mv2.jpg)
![cube](https://static.wixstatic.com/media/0f46d8_ebda7f6b38f6499ca5a818c166ddf1ff~mv2.gif)
![death](https://static.wixstatic.com/media/0f46d8_82324b89e1f0409d98ef9d51246814ec~mv2.gif)
![metaball](https://static.wixstatic.com/media/0f46d8_ed00ec61301442d99fcfadf69fcc9394~mv2.gif)
![0](https://static.wixstatic.com/media/0f46d8_1406e77b2b644747a4c8b96449717746~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_1406e77b2b644747a4c8b96449717746~mv2.jpg)
![1](https://static.wixstatic.com/media/0f46d8_e22d4aff5d4d4ab0b0c74091374fcbd0~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_e22d4aff5d4d4ab0b0c74091374fcbd0~mv2.jpg)
![1_2](https://static.wixstatic.com/media/0f46d8_244b7dbd66b44c30874de7421423238b~mv2.jpg/v1/fill/w_147,h_83,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/0f46d8_244b7dbd66b44c30874de7421423238b~mv2.jpg)
WebGL Demos / Procedural Graphics Project Demos
​
This is my WebGL Demo collection. All projects are based on UPenn's CIS 566 Procedural Graphics course topics and require a WebGL2-capable browser (latest version Chrome recommended)