跳转到内容
查看源码

示例一览

examples/ 下有 33 个示例。每个示例是一个目录:入口 scene.esn、通常还有 kernels/(它用到的 .ent 库)、tests/(.replay 脚本及其场景)和一份说明运行方式的 README.md。示例使用包,没有任何东西依赖示例;包由自己的 tests/ 测试。

终端窗口
entelechy run examples/<example>/scene.esn --out output.ppm --watch
entelechy replay examples/<example>/tests/*.replay
示例 内容
grayscale 渐变经过灰度与像素化两个 Kernel——第一个证明,也是分步教程的主角。
life 康威生命游戏:Grid<Cell> 通过反馈绑定(<~)演化,可以用指针绘制。
ant 兰顿蚂蚁:在网格 memory 上的 scan。
modes Kernel 的各种执行方式:merge 归约、两次 map 排序、一个 Kernel 写三个输出、scatter 溅射粒子、async 离帧运行的状态机。
image 用数组、矩阵、体和采样器生成图片:高斯核、Mat3 浮雕、立方体、marching squares、Volume<Float> 云、mod 平铺滚动。
data Field 如何存放数据:窄编码、Double 与 Long、Grid<Tile> 洪泛、写文件再读回、按帧读取目录。
示例 内容
path 渐进式路径追踪:采样数与反弹次数是图参数,累积和是状态。
mesh 圆环细分、投影、由 raster 包光栅化并着色(native.rasterize@1 为快速路径);导入 GLB 并贴图。
mipmap 按每个像素所需的 mip 级别读取地面,级别由 carry 放置的子图生成。
culled 一千万个三角形,每帧通过 parallel 包只放置可见的块。
surface 每帧从 Volume<Int> 生成网格,单元被压缩并计数。
text 通过 run --save 烘焙的字体图集绘制字形。
ui 用 ui 包绘制设置界面与角色面板,可用键盘、手柄或指针操作。
controls 键盘或手柄控制一个点,动作由 controls 包从表中读取。
vector 用 entelechy-import 导入 SVG,由 vector 包在任意尺寸下清晰绘制;可拖动缩放。
showcase 有符号距离场建模的手柄,基于物理的着色,工具栏使用逻辑像素。
darkroom 用 image 包冲洗一张 raw 照片:均衡、调色、锐化,并由距离场画出霓虹描边。
nebula 由 random 包生成的星云,叠加辉光、景深、色调与颗粒。
logo Entelechy 的标志:所有版本都来自同一个 Kernel,并画出标志的作图稿。
示例 内容
genesis 一个不断改写自己生长规律、直到生命达到平衡的世界,通过 to files 输出写下每条规律。
swarm 大量物体:一百万个由 map 推进、由 scatter 绘制;六万五千个通过网格(scatter sum + prefix)寻找邻居。
physics 盒子和球下落、堆叠、滑动、弹跳(physics 包);传感器、射线、点击投球。
fluid Navier–Stokes 烟雾,压力求解是一个用 times 重复放置的 Jacobi Kernel。
collapse 在 tile 位掩码的 Grid<Int> 上做波函数坍缩。
learn 用梯度下降训练的 2-16-1 网络,梯度是一次 scatter。
cube-puzzle 可玩的魔方,以及在打乱步数上训练的 54-32-1 网络;play.esn 读取保存的权重。
示例 内容
sound 用 Kernel 写声音:合成器经 scan 滤波并画成示波器,人声与频谱;拨弦、鼓采样、MIDI 钢琴卷帘、游戏配乐与音效。
示例 内容
animation 骨骼、动画片段与跟随的网格:导入 Blender 手臂并混合两个片段、64 人群、肩部瞄准、根运动。
示例 内容
slg 回合制战棋:回合状态机,移动范围是放置三次的子图。
arcade 几个 Kernel 写成的小游戏:俄罗斯方块(位掩码表)与贪吃蛇;回放会把游戏完整玩一遍。
machines 把处理器写成对内存的 scan:CHIP-8 解释器和 ARM7TDMI Thumb 核心,绘制帧缓冲。
voxel Volume<Int> 上的体素编辑器,带撤销和工具栏;火光或日光下的地穴,以及由关节驱动的体素身体。
示例 内容
level 由 Kernel 从 bytes 读取的二进制关卡格式。