2个版本
0.1.1 | 2023年9月26日 |
---|---|
0.1.0 | 2023年9月21日 |
#265 in 渲染
37KB
769 代码行
wgpu-tilemap
wgpu-tilemap
是 wgpu中间件,用于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.apache2 或 https://apache.ac.cn/licenses/LICENSE-2.0)
依赖项
~3–38MB
~531K SLoC