个人项目

下列是我的一些个人项目

显示所有项目。您可以通过标签来限定显示包含指定标签的项目。

CUDA Flocking (2020)

这个项目利用CUDA来实现了Boid集群运动的模拟。Boid是一种模拟鱼类或鸟类的植群行为的人工生命程序。在简单的暴力破解算法之外,该项目还可以利用空间网格数据结构来大幅加速运算。模拟的数据最终被传给OpenGL来实现可视化。

Minimal Visual Pedagogical Interpreter (2020)

MVP解释器是一个基于代入消元法(substitution)的教学编程语言解释器。目的是为不熟悉该概念的学生直观地演示编程语言的小步操作语义(small-step operation semantics)。该项目支持单步向前/向后执行程序,并在每一步都可视化语法树。

beyond::core (2020)

beyond::core带有一堆与图形学应用相关联的实用程序的库。我在许多个人的图形学项目中使用了该库。该库包含一个ECS实现,一个用于图形编程的数学库,线程池以及一些自定义容器。

OpenGL草地渲染器 (2019)

这个项目实现了是对论文Responsive Real-Time Grass Rendering for General 3D Scenes的复现。它使用贝塞尔曲线(Bézier curve)来表示单根草的数据,然后使用细分曲面着色器(tessellation shader)来从曲线动态生成草地的几何模型。同时,它使用了计算着色器(compute shader)来实现基于欧拉法的草地物理模拟,计算着色器同时使用了各种culling的技术来减少每帧所需要画的三角数量。

Embedded ML (2018)

Embedded ML是一个基于C++的脚本语言。与一般的脚本语言不同,Embedded ML是静态类型的。 这个项目包含了一个该语言的字节码编译器以及一个虚拟机。

Elm黑白棋 (2018-2019)

Reversi-Elm是一个用Elm语言写的基于浏览器的黑白棋游戏实现。 它支持单机双人游戏、人机对战、以及AI对战AI模拟。 该游戏的AI实现基于极小化极大算法(minimax)以及Alpha-beta剪枝, 以及一个基于棋子个数、各棋子位置、以及行动力(玩家可选的合法行动数)的评价函数(evaluation function)。