金属雨燕中的混沌


受到启发this tweetErwin Santacruz,该文件的拥有者http://houdinitricks.com,我想该是我和一些人一起玩的时候了strange attractors在斯威夫特。奇怪的吸引子是可以表示混沌系统中的行为的方程,其中最著名的是Lorenz Attractor这是一个简化的大气对流模型。

虽然吸引器可以创造一些非常漂亮的图案,但它们背后的数学却出人意料地简单。对于Lorenz吸引器的典型解决方案,给定三维空间中的单个点,每个时间步长都会使用以下代码更新其坐标:

float sigma = 10.0;
float beta = 8.0 / 3.0;
float rho = 28.0;
float deltaX = sigma * (y - x);
float deltaY = x * (rho - z) - y;
float deltaZ = x * y - beta * z;


previous experiments with particle systems under Metal

该项目从实际上是数组2的东西开始22或4,194,304个大小。此数组的第一项被赋予三个随机浮点值的向量。在金属计算着色器内,索引定义接下来需要使用上面的公式计算阵列中的哪个点或项目。索引随每一步递增。

人造3D渲染渲染系统绕垂直轴旋转。要做到这一点,y点的坐标直接映射到屏幕的y坐标。然而,屏幕上的xxZ乘以旋转角度的余弦:

(thisPoint.x * sin(angle) + thisPoint.z * cos(angle)) * scale


我已经添加了一个实现Bresenham's line algorithm到着色器以在点之间绘制一条连续线。即使有线条和数百万个点,我的iPad Pro仍然以60fps的速度运行,呈现出相当不错的效果:


最后一个项目是available hereStrange Attractors on Behance