#image #renderer #ppm #write #read #graphics #read-write

pixel-weaver

多线程逐像素图像渲染器

3个版本

0.1.2 2024年2月4日
0.1.1 2024年2月4日
0.1.0 2024年2月4日

#258 in 图像

MIT许可证

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<_>结构中,其中xyz字段作为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球体基准测试结果

Sphere

Single thread:	  380.341435ms
Multi thread(10):  85.168631ms

2D UV正方形基准测试结果

UVSquare

Single thread:	  2.473724ms
Multi thread(10): 1.922870ms

结论

似乎多线程始终比单线程运行得更好,但这可能取决于像素函数的内容或运行代码的机器。但对于计算量较大的函数,多线程将大大提高性能。

依赖项

~470KB