张春成

V2

2023/01/18阅读:16主题:默认主题

基于GPU的快速Julia集计算

基于GPU的快速Julia集计算

本文记录一个利用GPU计算的前端程序,它用来在PC上快速计算和实时渲染大量迭代的 Julia 集。由于 GPU 算的实在是太快了,因此我决定让它成为一个实时计算和渲染程序。开源代码可见我的前端笔记本 The Fractal (Julia Set) on GPU[1]

或GITHUB页面 JuliaSet-GPUIO[2]


Julia集

Julia集是在复数空间上的著名自相似集。它的生成过程是求解如下迭代方程,并且记录每次得到的复数值。再将这些值以概率密度的形式绘制在复数平面上。

其中,参数 值可以用来控制图像的形状。

Julia Set -- from Wolfram MathWorld[3]

GPU计算和渲染

由于计算过程非常简单,因此乘下的工作就是使用 GPU-IO 工具进行快速计算,并将概率密度函数用采样的方法渲染在图像上。在计算和渲染过程中,有一个因素比较关键的,它就是“迭代次数”(Iterations)和“渲染振幅”(Render Amplitude)选项之间的平衡。“迭代次数”选项对可视化效果至关重要,值越小,绘图越模糊,扩展范围越大。较大的值提供了集合的更多细节。当“迭代次数”选项足够大时,您可能会对相邻参数之间的快速变化感到惊讶。“渲染振幅”选项控制集的增强部分,值越小,集的渲染效果越好,而值越大,集的边缘渲染效果越好。

由于 GPU 算的实在是太快了,因此我决定让它成为一个实时计算和渲染程序。因此我提供了一个可以通过鼠标拖动来改变参数的控制板(Touch Pad of Parameter),并且为了增强它的可用性,我在触摸板上放置了一些预定义的参数,拖动它们附近的红色点以使用这些参数。开源代码可见我的前端笔记本

The Fractal (Julia Set) on GPU[4]

当然,该集合具有自相似性,您可以缩放绘图以查看它,下面是一些渲染的样例。

Parameter-1
Parameter-1

Parameter-1

Parameter-2
Parameter-2

Parameter-2

Parameter-3
Parameter-3

Parameter-3

Parameter-3-zoom-in
Parameter-3-zoom-in

Parameter-3-zoom-in

参考资料

[1]

The Fractal (Julia Set) on GPU: https://observablehq.com/@listenzcc/the-fractal-julia-set-on-gpu

[2]

JuliaSet-GPUIO: https://listenzcc.github.io/JuliaSet-GPUIO/

[3]

Julia Set -- from Wolfram MathWorld: https://mathworld.wolfram.com/JuliaSet.html

[4]

The Fractal (Julia Set) on GPU: https://observablehq.com/@listenzcc/the-fractal-julia-set-on-gpu

分类:

后端

标签:

后端

作者介绍

张春成
V2