3个版本
0.1.2 | 2024年2月4日 |
---|---|
0.1.1 | 2024年2月4日 |
0.1.0 | 2024年2月4日 |
#258 in 图像
15KB
161 行
pixel-weaver
一个CPU多线程逐像素图像渲染器。
前言
该crate目前仅支持24位色彩空间,主要是为了与simple-canvas
crate和rusty-ppm
crate结合使用,以创建.ppm
格式的图像。
如何使用
依赖项
必需
可选
要使用此crate,您需要导入simple-canvas
crate,因为pixel-weaver
使用simple-canvas::Canvas
结构来创建图像。像素数据被封装在cgmath
Vector3<_>
结构中,其中x
、y
和z
字段作为RGB颜色,因此您还需要导入此结构。您还可以导入rusty-ppm
crate来将画布编码为.ppm
图像,这也依赖于simple-canvas
,但这不是必需的。
该crate背后的想法是像编写GPU着色器一样使用它。您创建一个函数,该函数将对每个像素进行操作,仅使用像素坐标或UV来决定最终像素颜色。
示例基准测试
测试方法
每个测试运行10次,然后取平均值。
机器规格
OS: Pop!_OS 22.04 LTS x86_64
Host: 20QNS00Q00 ThinkPad P53
CPU: Intel i5-9400H (8) @ 4.300GHz
RAM: 8GB
GPU1: Intel CoffeLake-H GT2 [UHD Graphics 630]
GPU2: NVIDIA Quadro T1000 Mobile
基准渲染图像规格
Width: 1_000 pixels
Height: 1_000 pixels
Total: 1_000_000 pixels
3D球体基准测试结果
Single thread: 380.341435ms
Multi thread(10): 85.168631ms
2D UV正方形基准测试结果
Single thread: 2.473724ms
Multi thread(10): 1.922870ms
结论
似乎多线程始终比单线程运行得更好,但这可能取决于像素函数的内容或运行代码的机器。但对于计算量较大的函数,多线程将大大提高性能。
依赖项
~470KB