MCPcopy Create free account
hub / github.com/Bloom-Engine/engine / bake_async

Function bake_async

tools/imposter-baker/src/render.rs:57–315  ·  view source on GitHub ↗
(opts: BakeOptions<'_>)

Source from the content-addressed store, hash-verified

55}
56
57async fn bake_async(opts: BakeOptions<'_>) -> Result<BakedAtlas, String> {
58 let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
59 backends: wgpu::Backends::all(),
60 ..wgpu::InstanceDescriptor::new_without_display_handle()
61 });
62 let adapter = instance
63 .request_adapter(&wgpu::RequestAdapterOptions {
64 power_preference: wgpu::PowerPreference::HighPerformance,
65 compatible_surface: None,
66 force_fallback_adapter: false,
67 })
68 .await
69 .map_err(|e| format!("no adapter: {e}"))?;
70
71 let (device, queue) = adapter
72 .request_device(&wgpu::DeviceDescriptor {
73 label: Some("imposter-baker"),
74 required_features: wgpu::Features::empty(),
75 required_limits: wgpu::Limits::downlevel_defaults(),
76 ..Default::default()
77 })
78 .await
79 .map_err(|e| format!("device: {e}"))?;
80
81 let n = opts.grid;
82 let cell = opts.cell_px;
83 let atlas_w = n * cell;
84 let atlas_h = n * cell;
85
86 // ── Geometry buffers ────────────────────────────────────────────
87 let verts: Vec<Vertex> = opts
88 .mesh
89 .positions
90 .iter()
91 .zip(opts.mesh.normals.iter())
92 .map(|(p, n)| Vertex { pos: *p, _pad0: 0.0, nrm: *n, _pad1: 0.0 })
93 .collect();
94 let vbuf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
95 label: Some("imposter-vb"),
96 contents: bytemuck::cast_slice(&verts),
97 usage: wgpu::BufferUsages::VERTEX,
98 });
99 let ibuf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
100 label: Some("imposter-ib"),
101 contents: bytemuck::cast_slice(&opts.mesh.indices),
102 usage: wgpu::BufferUsages::INDEX,
103 });
104 let index_count = opts.mesh.indices.len() as u32;
105
106 // ── Uniform buffer (re-uploaded per view) ───────────────────────
107 let ubuf = device.create_buffer(&wgpu::BufferDescriptor {
108 label: Some("imposter-ubo"),
109 size: std::mem::size_of::<Uniforms>() as u64,
110 usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
111 mapped_at_creation: false,
112 });
113
114 let bgl = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {

Callers 1

bakeFunction · 0.85

Calls 11

cell_directionFunction · 0.85
look_at_rhFunction · 0.85
ortho_rhFunction · 0.85
mat_mulFunction · 0.85
render_oneFunction · 0.85
blit_into_atlasFunction · 0.85
read_atlasFunction · 0.85
iterMethod · 0.80
centerMethod · 0.80
radiusMethod · 0.80
normalize3Function · 0.70

Tested by

no test coverage detected