Skip to content

A qt/opengl/cuda demo to render & display fractal art textures.

Notifications You must be signed in to change notification settings

KagaKyouichirou/CudaFractal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

项目依赖

Windows10平台
Qt6.5 (+OpenGL)
CUDA 12.6

功能简述

Task Input

根据用户输入的参数渲染Mandelbrot集相应局部的分形图案。

任务参数

Resolution

从下拉菜单中选择渲染图像的分辨率。

Center.X & Center.Y

输入图像中心点对应的复平面坐标(即实部与虚部)。
1.单击以切换正负符号 $S$
2.输入十六进制数 $N$
3.从右侧下拉菜单中选择微缩指数 $E$
则对应的数值为 $(-1)^S \cdot \frac{N}{2^E}$
在当前设定里,可选的图像分辨率尺寸均为偶数,中心点对应图像中央 $4$ 个像素的交界位置(因此不是采样点之一)。

Half Unit

像素边长所对应的复平面距离的一半,即相邻采样点距离(步长)的一半。

Iter Limit

迭代次数上限。
对于每个像素中心对应的采样点 $c$ ,进行 $z_0:=0\space ;\space \space z_{n+1}:=z_{n}^2+c\space ;$ 的迭代,直至 $|z_k|>2$ 或者迭代次数到达上限。
实际迭代次数 $k$ 除以上限后得到归一化的像素值, 作为后续染色过程的输入。

调整色彩

Color Config

归一化的原始像素灰值,若为 $1.0$ (对应“迭代后未发散至无穷”的采样点),则映射至黑色;
否则,经过两个步骤的映射得到RGB色彩值。

灰值矫正

通过横向滑块调整映射 $f(x)=\frac{e^{px}-1}{e^p-1}$ 的参数 $p$ .
$p<0$ 时,此映射将原值向 $1.0$ 膨胀
$p>0$ 时,此映射将原值向 $0.0$ 压缩
$p=0$ 时,此映射退化为恒等映射。
当原始灰值分布过分集中于 $0.0$ 附近或 $1.0$ 附近时,矫正映射能够令其分布均匀化,使得后续染色过程的调整空间更大。
此映射的图像在小视图中以灰色线条展示。

RGB通道染色

通过纵向滑块调整RGB三通道各自的映射曲线。
这些曲线是区间 $[0,1]$ 上带有 $7$ 等分控制点的三次样条插值曲线,每个控制点的取值范围也是 $[0,1]$
每条曲线将上一步矫正后灰值映射为该通道的最终输出值,其中超出上限 $1.0$ 或下限 $0.0$ 的结果将会被限制为上/下限。
各通道映射的图像在小视图中以该通道对应颜色的线条展示。

About

A qt/opengl/cuda demo to render & display fractal art textures.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published