26a3cda6f6
Étape 2 du plan 3D+Phong : nouveau shader unifié, non encore branché à un pipeline (Étape 3 : infra uniforms). - shaders/standard_shader.wgsl : contrat vertex complet (position/normal/uv/color, 56 octets, corrige la défaut latente du basic) ; 2 bind groups formative frame (view/proj/cam_pos/light_dir/light_color/options) + object (model) ; éclairage hemisphérique ambient + diffuse directionnel; mode unlit (options.x) pour que la 2D plate soit un cas partticulier de la 3D. - utils/conf.rs : constantes STANDARD_SHADER_PATH + STANDARD_SHADER (include_str!). - tests/wgsl_validate.rs : validation hors-ligne naga (via wgpu::naga, aucune nouvelle dépendance) tant que le shader n'est pas compilé par un pipeline. - shaders/README.md : documente le contrat standard et le statut du basic. - Erreur WGSL corrigée en validation: cast mat4x4->mat3x3 non supporte, remplacé par construction explicite de la sous-matrice 3x3. - Validation: cargo test (naga OK), check workspace+examples 0 warning, doc OK, fmt OK.
39 lines
2.3 KiB
Rust
39 lines
2.3 KiB
Rust
//! # Configuration Module
|
|
//!
|
|
//! Holds shared constants for the WSG library — primarily shader paths and embedded WGSL source code.
|
|
//! Centralized here so all submodules import from one place instead of duplicating literal strings.
|
|
//! This enables the PipelineCache to fall back to an embedded default shader when the file-based one is missing.
|
|
//! Also provides application defaults for window title, width, and height used by AppBuilder.
|
|
//!
|
|
//! ## Interaction with Other Modules
|
|
//! - **pipeline_cache::load_shader()** reads `BASIC_SHADER_PATH` from disk; if unreadable, falls back to `BASIC_SHADER`.
|
|
//! - Both constants are compile-time values (`include_str!`) ensuring the fallback shader is always available even without external files.
|
|
//! - **app::AppBuilder** reads APP_DEFAULT_TITLE, APP_DEFAULT_WIDTH, and APP_DEFAULT_HEIGHT for default window configuration.
|
|
|
|
/// Path to the default WGSL shader file on disk (runtime). Used by PipelineCache::load_shader() for file-based loading.
|
|
pub const BASIC_SHADER_PATH: &str = "assets/shaders/basic_shader.wgsl";
|
|
|
|
/// The basic WGSL shader source code, embedded at compile time via `include_str!`.
|
|
/// Serves as a fallback when `BASIC_SHADER_PATH` cannot be read at runtime.
|
|
pub const BASIC_SHADER: &str = include_str!("../shaders/basic_shader.wgsl");
|
|
|
|
/// Path to the standard (Phong) WGSL shader file on disk (runtime). Used by PipelineCache::load_shader()
|
|
/// once standardized (Étape 3) : this shader carries the full uniform contract (frame + object bind groups)
|
|
/// and supports an unlit mode so flat 2D rendering is a special case of the 3D lit path.
|
|
pub const STANDARD_SHADER_PATH: &str = "assets/shaders/standard_shader.wgsl";
|
|
|
|
/// The standard (Phong) WGSL shader source code, embedded at compile time via `include_str!`.
|
|
/// Not yet compiled by any pipeline (Étape 2 : shader seul, non branché). Becomes the unified
|
|
/// pipeline shader once the uniform infrastructure exists (Étape 3). The unlit variant is the
|
|
/// replacement for the flat `basic` family.
|
|
pub const STANDARD_SHADER: &str = include_str!("../shaders/standard_shader.wgsl");
|
|
|
|
/// Default application title displayed in the OS taskbar/window decorations.
|
|
pub const APP_DEFAULT_TITLE: &str = "WSG App";
|
|
|
|
/// Default window width in pixels.
|
|
pub const APP_DEFAULT_WIDTH: u32 = 800;
|
|
|
|
/// Default window height in pixels.
|
|
pub const APP_DEFAULT_HEIGHT: u32 = 600;
|