You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The shader `location` qualifiers match the vertex buffer layouts declared on the pipeline, and the `PositionVertex` and `ColorVertex` types mirror the `vec3` inputs as `[f32; 3]` arrays in Rust.
137
+
The shader `location` qualifiers match the vertex buffer layouts declared on the pipeline, and the `PositionVertex` and `ColorVertex` types mirror the `vec3` inputs as `[f32; 3]` arrays in Rust. The `PlainOldData` implementations mark the types as safe for `BufferBuilder` uploads.
134
138
135
139
### Step 2 — Component State and Shader Construction <aname="step-2"></a>
136
140
@@ -498,6 +502,8 @@ This tutorial demonstrates how indexed draws and multiple vertex buffers combine
498
502
499
503
## Changelog <aname="changelog"></a>
500
504
505
+
- 2026-01-24 (v0.3.3) — Move `PlainOldData` to `lambda::pod::PlainOldData`.
- 2026-01-16 (v0.3.1) — Update resize handling examples to use `event_mask()` and `on_window_event`.
502
508
- 2025-12-15 (v0.3.0) — Update builder API calls to use `render_context.gpu()` and add `surface_format`/`depth_format` parameters to `RenderPassBuilder` and `RenderPipelineBuilder`.
503
509
- 2025-11-23 (v0.2.0) — Filled in the implementation steps for the indexed draws and multiple vertex buffers tutorial and aligned the narrative with the `indexed_multi_vertex_buffers` example.
@@ -210,7 +214,7 @@ impl Default for InstancedQuadsExample {
210
214
}
211
215
```
212
216
213
-
The `QuadVertex` and `InstanceData` structures mirror the GLSL inputs as arrays of `f32`, and the component tracks resource identifiers and counts that are populated during attachment. The `Default` implementation constructs shader objects from the GLSL source so that the component is ready to build a pipeline when it receives a `RenderContext`.
217
+
The `QuadVertex` and `InstanceData` structures mirror the GLSL inputs as arrays of `f32`, and the component tracks resource identifiers and counts that are populated during attachment. The `PlainOldData` implementations mark the types as safe for `BufferBuilder` uploads, which reinterpret values as raw bytes when initializing GPU buffers. The `Default` implementation constructs shader objects from the GLSL source so that the component is ready to build a pipeline when it receives a `RenderContext`.
- 2026-01-16 (v0.2.1) — Update resize handling examples to use `event_mask()` and `on_window_event`.
514
520
- 2025-12-15 (v0.2.0) — Update builder API calls to use `render_context.gpu()` and add `surface_format`/`depth_format` parameters to `RenderPassBuilder` and `RenderPipelineBuilder`.
515
521
- 2025-11-25 (v0.1.1) — Align feature naming with `render-validation-instancing` and update metadata.
@@ -222,14 +222,16 @@ let mesh: Mesh = mesh_builder
222
222
223
223
### Step 4 — Uniform Data Layout in Rust <aname="step-4"></a>
224
224
225
-
Mirror the shader’s uniform block with a Rust structure. Use `#[repr(C)]` so the memory layout is predictable. A `mat4` in the shader corresponds to a 4×4 `f32` array here. Many GPU interfaces expect column‑major matrices; transpose before upload if the local math library is row‑major. This avoids implicit driver conversions and prevents incorrect transforms.
225
+
Mirror the shader’s uniform block with a Rust structure. Use `#[repr(C)]` so the memory layout is predictable. A `mat4` in the shader corresponds to a 4×4 `f32` array here. `PlainOldData` MUST be implemented so the engine can upload the uniform by reinterpreting its bytes. Many GPU interfaces expect column‑major matrices; transpose before upload if the local math library is row‑major. This avoids implicit driver conversions and prevents incorrect transforms.
### Step 5 — Bind Group Layout at Set 0 <aname="step-5"></a>
@@ -443,6 +445,8 @@ multiple objects and passes.
443
445
444
446
## Changelog <aname="changelog"></a>
445
447
448
+
- 0.5.3 (2026-01-24): Move `PlainOldData` to `lambda::pod::PlainOldData`.
449
+
- 0.5.2 (2026-01-24): Add `PlainOldData` requirements for uniform buffer data.
446
450
- 0.5.1 (2026-01-16): Replace `on_event` resize handling with `event_mask()` and `on_window_event`.
447
451
- 0.5.0 (2025-12-15): Update builder API calls to use `render_context.gpu()` and add `surface_format`/`depth_format` parameters to `RenderPassBuilder` and `RenderPipelineBuilder`.
0 commit comments