pub(crate) const GAME_3D_HEADER_TITLE: &str = "3D Game Engine";
pub(crate) const GAME_3D_HEADER_SUBTITLE: &str = "A rotating cubes 3D demo powered by euv-engine's Vector3D, Quaternion, Matrix4x4, and Camera3D. Drag to orbit the camera. Switch tabs to compare Canvas 2D and WebGPU rendering backends.";
pub(crate) const GAME_3D_CANVAS_CARD_TITLE: &str = "3D Rendering Demo";
pub(crate) const GAME_3D_FEATURES_CARD_TITLE: &str = "3D Engine Features";
pub(crate) const GAME_3D_CANVAS_DESCRIPTION: &str = "This demo uses euv-engine's 3D math: Vector3D for positions, Quaternion for rotation, Matrix4x4 for view/projection transforms, Camera3D for orbit camera with perspective projection, and Transform3D for cube transforms. Features include back-face culling, painter's algorithm depth sorting, and quaternion-based angular velocity integration. The WebGPU tab demonstrates GPU-accelerated rendering with a WGSL shader pipeline.";
pub(crate) const GAME_3D_WEBGPU_DESCRIPTION: &str = "This demo uses euv-engine's WebGpuRenderer to initialize a GPU device, create a render pipeline from a WGSL shader, and render the same rotating cubes scene as the Canvas 2D tab: every cube is drawn as 12 shader-generated triangles with per-cube transform and colors uploaded to a uniform buffer each frame via requestAnimationFrame. Drag on the canvas to orbit the camera. Requires a WebGPU-capable browser (Chrome 113+, Edge 113+).";
pub(crate) const GAME_3D_WEBGL_DESCRIPTION: &str = "This demo uses euv-engine's WebGl2Backend to acquire a WebGL 2 context, compile a GLSL ES 3.00 program, and render the same rotating cubes scene as the Canvas 2D tab: every cube is drawn as 12 shader-generated triangles with per-cube transform and colors uploaded to vec4 uniform arrays each frame via requestAnimationFrame. Drag on the canvas to orbit the camera. Works in every modern browser with WebGL 2 support.";
pub(crate) const GAME_3D_PAUSE_LABEL: &str = "Pause";
pub(crate) const GAME_3D_RESUME_LABEL: &str = "Resume";
pub(crate) const GAME_3D_AUTO_ROTATE_ON_LABEL: &str = "Auto: On";
pub(crate) const GAME_3D_AUTO_ROTATE_OFF_LABEL: &str = "Auto: Off";
pub(crate) const GAME_3D_FPS_PREFIX: &str = "FPS: ";
pub(crate) const GAME_3D_CUBES_PREFIX: &str = "Cubes: ";
pub(crate) const GAME_3D_EXIT_BUTTON_LABEL: &str = "Exit";
pub(crate) const GAME_3D_RESET_CAMERA_BUTTON_LABEL: &str = "Reset Camera";
pub(crate) const GAME_3D_ENTER_FULLSCREEN_BUTTON_LABEL: &str = "Enter Fullscreen";
pub(crate) const GAME_3D_STATUS_PREFIX: &str = "Status: ";
pub(crate) const GAME_3D_INITIALIZING_STATUS: &str = "Initializing...";
pub(crate) const GAME_3D_WEBGL_ACTIVE_STATUS: &str = "WebGL Active";
pub(crate) const GAME_3D_WEBGL_NOT_SUPPORTED_STATUS: &str = "WebGL not supported";
pub(crate) const GAME_3D_WEBGL_INIT_FAILED_STATUS: &str = "WebGL init failed";