#wgpu #2d #瓦片 #tiled #游戏开发 #图形 #图像

wgpu-tilemap

WGPU中间件,用于GPU加速瓦片地图渲染,主要针对2D游戏

2个版本

0.1.1 2023年9月26日
0.1.0 2023年9月21日

#265 in 渲染

Apache-2.0

37KB
769 代码行

wgpu-tilemap

wgpu-tilemapwgpu中间件,用于GPU加速瓦片地图渲染,主要针对2D游戏。

它将每个瓦片地图绘制为一个单独的四边形,因此顶点数与瓦片地图的大小无关。它使用纹理数组来处理瓦片集,因此片段着色器实际上是加载2个纹理:一个来自瓦片地图,一个来自瓦片集。它丢弃完全透明的片段,因此可以通过深度缓冲区加速多层绘制。

示例

// Create a tilemap pipeline
let mut tilemap_pipeline = TilemapPipeline::new(device, surface_config.format, None);

// Specify a camera matrix
tilemap_pipeline.set_camera(queue, FULLSCREEN_QUAD_CAMERA);

// Create/load a tileset
use image::io::Reader as ImageReader;
let tileset_image = ImageReader::open("tileset.png").unwrap().decode().unwrap();  
let tileset = TilesetRef::from_image(&tileset_image, Vec2::new(32, 32));

// Upload a tileset to the GPU
tilemap_pipeline.upload_tilesets(device, queue, &[tileset]);

// Create/load a tilemap
let some_tilemap = TilemapRef::zeroed(Vec2::broadcast(size));

// Upload a tilemap to the GPU
self.tilemap_pipeline.upload_tilemaps(
	device,
	queue,
	&[TilemapDrawData {
		transform: Mat4::identity(),
		tilemap: Cow::Borrowed(&some_tilemap),
		tileset: 0,
		noise: TilemapNoise::default(),
	}],
);

// Render the uploaded tilemaps
tilemap_pipeline.render(&device, &mut rpass);

许可证

wgpu-tilemap 在Apache License,版本2.0下授权,(LICENSE.apache2https://apache.ac.cn/licenses/LICENSE-2.0)

依赖项

~3–38MB
~531K SLoC