examples: apply real texture assets to multi-mesh examples
- meshes/cube: procedural checkerboard -> uv_texture.jpg (8x8 UV grid) - meshes/pbr: floor -> ground.jpeg, bump cube -> cave.jpg + caveNormal.jpg (normal map pre-encoded via sRGB OETF to cancel the GPU sRGB decode) - lights/shadow: ground -> ground.jpeg, cube -> uv_texture.jpg - effects/demo: ground -> ground.jpeg, cube -> uv_texture.jpg - effects/fog: ground -> ground.jpeg (tiled 80x80), cubes -> stonewall.jpg - effects/dof: ground -> ground.jpeg, cubes -> uv_texture.jpg - cameras/culling: shared cube mesh -> uv_texture.jpg - add lib/examples/assets/textures/ (19 assets, 6.5 MB) - document assets + usage in examples READMEs, docs/user/examples.md, docs/user/meshes/materials.md (CARGO_MANIFEST_DIR pattern, sRGB caveat)
This commit is contained in:
@@ -6,8 +6,8 @@ PBR shading, file import, and the low-level (non-`App`) workflow.
|
||||
| Example | Run command | What it shows |
|
||||
|---------|-------------|---------------|
|
||||
| `simple` | `cargo run -p wsg-lib --example simple` | The minimal declarative workflow: a flat two-tone quad, **unlit**, rendered automatically |
|
||||
| `cube` | `cargo run -p wsg-lib --example cube` | The 3D MVP: a textured (checkerboard) cube, lit (directional + point + spot), spinning |
|
||||
| `pbr` | `cargo run -p wsg-lib --example pbr` | PBR metallic/roughness + normal mapping |
|
||||
| `cube` | `cargo run -p wsg-lib --example cube` | The 3D MVP: a textured (`uv_texture.jpg` UV atlas) cube, lit (directional + point + spot), spinning |
|
||||
| `pbr` | `cargo run -p wsg-lib --example pbr` | PBR metallic/roughness + normal mapping (real `cave.jpg` albedo + `caveNormal.jpg`) |
|
||||
| `import` | `cargo run -p wsg-lib --example import --features import-obj` | OBJ file import (non-graphical, prints stats to stdout) |
|
||||
| `manual` | `cargo run -p wsg-lib --example manual` | The **advanced** workflow: `Context`/`Renderer`/`PipelineCache` driven by hand, without the `App` facade |
|
||||
|
||||
@@ -37,12 +37,15 @@ No keys — static render.
|
||||
|
||||
## `cube` — The 3D MVP
|
||||
|
||||
A lit unit cube that rotates, **textured** with a procedural 8×8 checkerboard
|
||||
via the diffuse path (bind group `@group(2)`). Follows the declarative workflow
|
||||
(like `simple`): `AppBuilder` + automatic scene, **no wgpu import**. The texture
|
||||
is generated procedurally (RGBA bytes → `Texture::from_rgba8`) to stay
|
||||
self-contained; the default camera at (0, 0, 3) frames the cube, and
|
||||
`update()` rotates the entity via `set_entity_transform` each frame.
|
||||
A lit unit cube that rotates, **textured** with the `uv_texture.jpg` asset — an
|
||||
8×8 UV atlas visualization (labelled cells + corner coordinates) that makes
|
||||
exactly where each face's UVs land visible. The texture is loaded from
|
||||
`assets/textures/` via `Texture::from_file` (path resolved against
|
||||
`CARGO_MANIFEST_DIR`), registered by id (`add_texture`) and bound through
|
||||
`add_material_texture` (diffuse path, bind group `@group(2)`). Follows the
|
||||
declarative workflow (like `simple`): `AppBuilder` + automatic scene, **no wgpu
|
||||
import**; the default camera at (0, 0, 3) frames the cube, and `update()`
|
||||
rotates the entity via `set_entity_transform` each frame.
|
||||
|
||||
```sh
|
||||
cargo run -p wsg-lib --example cube
|
||||
@@ -68,8 +71,10 @@ cargo run -p wsg-lib --example pbr
|
||||
| `R` | Reset camera |
|
||||
|
||||
Scene: 6 PBR materials (mirror metal, smooth plastic, rusty metal, ceramic,
|
||||
bump map, matte floor). The bump-map cube shows procedural sin-wave surface
|
||||
detail.
|
||||
cave, textured floor). The floor is a 20×20 plane with the `ground.jpeg`
|
||||
albedo; the cave cube pairs `cave.jpg` (albedo) with `caveNormal.jpg`
|
||||
(normal map, pre-encoded sRGB before upload — see the *Texture assets* section
|
||||
in the parent README) and shows real surface detail under the light.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user