From a1dfeea7a6d1093ddaf65f0bf252e78910f889c5 Mon Sep 17 00:00:00 2001 From: EtienneLescot Date: Sun, 4 Oct 2026 12:02:59 +0200 Subject: [PATCH 1/3] feat(cursor): add Glass Lens, a glass cursor that refracts the picture in 2D and 3D --- crates/compositor/src/compositor_linux.rs | 103 ++++++- crates/compositor/src/compositor_macos.rs | 11 + crates/compositor/src/compositor_windows.rs | 11 + crates/compositor/src/frame_geometry.rs | 138 ++++++++- crates/compositor/src/scene.rs | 5 + crates/compositor/src/sculpt.rs | 39 ++- crates/compositor/src/shaders.hlsl | 289 ++++++++++++++++-- crates/compositor/src/shaders.metal | 232 +++++++++++++- crates/compositor/src/vk_shaders/layer.wgsl | 217 ++++++++++++- .../compositor/tests/cursor_model_render.rs | 181 +++++++++-- design/cursors/3d-direction.md | 20 +- design/cursors/README.md | 12 +- design/cursors/requirements.md | 1 + .../services/compositorViewService.test.ts | 15 + .../services/compositorViewService.ts | 22 +- public/cursors/glass-lens/arrow.png | Bin 0 -> 4719 bytes public/cursors/glass-lens/pointer.png | Bin 0 -> 6863 bytes scripts/generate-glass-lens-cursor.mjs | 211 +++++++++++++ src/lib/cursor/cursorThemes.test.ts | 16 + src/lib/cursor/cursorThemes.ts | 39 ++- 20 files changed, 1452 insertions(+), 110 deletions(-) create mode 100644 public/cursors/glass-lens/arrow.png create mode 100644 public/cursors/glass-lens/pointer.png create mode 100644 scripts/generate-glass-lens-cursor.mjs diff --git a/crates/compositor/src/compositor_linux.rs b/crates/compositor/src/compositor_linux.rs index f7c5204b6..507b28617 100644 --- a/crates/compositor/src/compositor_linux.rs +++ b/crates/compositor/src/compositor_linux.rs @@ -43,9 +43,9 @@ pub use crate::frame_geometry::{ live_params_from_scene, webcam_shape_code, FIXTURE_FRAMES, LayerCB, LiveParams, OUT_H, OUT_W, }; use crate::frame_geometry::{ - cursor_model_cb, cursor_sprite_cb, cursor_sprite_dst, parse_hex, plan_cursor, plan_frame, - tilted_screen_cb, CursorPlacement, CursorPlanInput, FrameGeometryInput, ShadowCaster, - SpriteShape, + cursor_glass_cb, cursor_model_cb, cursor_sprite_cb, cursor_sprite_dst, parse_hex, plan_cursor, + plan_frame, tilted_screen_cb, CursorPlacement, CursorPlanInput, FrameGeometryInput, + ShadowCaster, SpriteShape, }; use crate::scene::{Scene, SceneBackground, WallpaperMotion}; @@ -3041,6 +3041,27 @@ impl Compositor { } } + // Le verre a plat de Glass Lens (mode 19) : la copie de l'image composee qu'il + // refracte au binding 1 (texY), comme le cristal du mode 15. Parite Windows/macOS. + if let Some(name) = sprite.glass.as_deref().filter(|_| plan.model.is_none()) { + for placement in placements { + let Some(cb) = + cursor_glass_cb(placement, plan.size_px, name, plan.alpha, plan.clip, [rw, rh]) + else { + continue; + }; + binds.push(self.make_bind(&cb, Some((&self.ann_copy_view, &dummy, &dummy)), &dummy)); + grow(cb.dst); + } + return (!binds.is_empty()).then_some(CursorDraw { + _tex: vec![(tex, view)], + binds, + bounds, + impacts, + glass: plan.glass, + }); + } + for placement in placements { // Geometrie partagee avec Windows et macOS (`cursor_sprite_cb`) : // mode 7 droit, ou mode 13 pose sur le plan -- le clip vit alors @@ -6039,7 +6060,7 @@ mod tests { for state in ["arrow", "pointer"] { let still = model_track(state, false, 0.5); let sprite = compose_model(&comp, &blue, &extruded, &still); - for theme in ["studio-ink", "prism-glow", "pop-coral", "pixel-candy", "star-sprout"] { + for theme in ["studio-ink", "prism-glow", "pop-coral", "pixel-candy", "star-sprout", "glass-lens"] { // Le sprite reste celui du theme par defaut : seul le nom pose le modele. let json = extruded .replace(&format!(r#"/{state}.png","#), &format!(r#"/{state}.png","sculpt":"{theme}/{state}","#)); @@ -6049,7 +6070,7 @@ mod tests { failures.push(format!("{theme}/{state}: le sprite extrude au lieu du modele")); } let (tip, u) = model_tip(&json, &still); - let glass = theme == "prism-glow"; + let glass = matches!(theme, "prism-glow" | "glass-lens"); let mask = if glass { model_covered(&hover, &hover_b, &bare, &bare_orange) } else { @@ -6094,6 +6115,78 @@ mod tests { assert!(failures.is_empty(), "{failures:#?}"); } + /// Pendant de `the_flat_glass_lens_refracts_the_picture` (Windows) : Glass Lens, 3D éteinte, + /// passe par le verre à plat du WGSL (mode 19), sans ombre, si bien que tout pixel changé est + /// le sien. Il tient au hotspot, en bas à droite de lui ; l'écran se voit au travers ; le trait + /// le cerne ; et le verre déplace les barres de l'écran. + #[test] + fn the_flat_glass_lens_refracts_the_picture() { + let Some(gpu) = gpu() else { return }; + let comp = Compositor::new_sized(&gpu, 1280, 720).expect("Compositor::new_sized"); + let (y, uv) = model_screen_planes(false); + let blue = FakeFrame::from_planes(&gpu, 640, 360, &y, &uv); + let (y, uv) = model_screen_planes(true); + let orange = FakeFrame::from_planes(&gpu, 640, 360, &y, &uv); + let flat = model_scene_json("null", Some(false), "glass-lens", true, 5.0); + let hidden = model_scene_json("null", Some(false), "glass-lens", false, 5.0); + let bare = compose_model(&comp, &blue, &hidden, &model_track("arrow", false, 0.5)); + let bare_orange = compose_model(&comp, &orange, &hidden, &model_track("arrow", false, 0.5)); + let mut failures = Vec::new(); + for state in ["arrow", "pointer"] { + let still = model_track(state, false, 0.5); + let sprite = compose_model(&comp, &blue, &flat, &still); + let json = flat.replace(&format!(r#"/{state}.png","#), &format!(r#"/{state}.png","glass":"glass-lens/{state}","#)); + let (on_blue, on_orange) = (compose_model(&comp, &blue, &json, &still), compose_model(&comp, &orange, &json, &still)); + model_save(&format!("glass-flat-{state}"), &on_blue); + if on_blue == sprite { + failures.push(format!("glass-lens/{state}: le sprite plat au lieu du verre")); + } + let (tip, u) = model_tip(&json, &still); + let rgb = |img: &[u8], i: usize| [img[i * 4], img[i * 4 + 1], img[i * 4 + 2]]; + let (mut body, mut c, mut near) = (0usize, [0.0f32; 2], f32::MAX); + let (mut through, mut line, mut moved) = (0usize, 0usize, 0usize); + for i in 0..1280 * 720 { + let (a, b) = (rgb(&on_blue, i), rgb(&on_orange, i)); + if a == rgb(&bare, i) && b == rgb(&bare_orange, i) { + continue; + } + let (x, y) = ((i % 1280) as f32, (i / 1280) as f32); + body += 1; + c = [c[0] + x, c[1] + y]; + near = near.min((x - tip[0]).hypot(y - tip[1])); + if a != b { + through += 1; + moved += ((model_luma(&a) - model_luma(&rgb(&bare, i))).abs() > 25.0) as usize; + } else if model_luma(&a) < 60.0 { + line += 1; + } + } + let c = [c[0] / body.max(1) as f32, c[1] / body.max(1) as f32]; + println!( + "glass-lens/{state} a plat : unite {u:.1} px, corps {body} px, a {near:.1} px du hotspot {tip:?}, centroide {c:?}, {through} px laissent voir l'ecran, {line} px de trait, {moved} px deplaces" + ); + if (body as f32) < 0.12 * u * u { + failures.push(format!("glass-lens/{state}: {body} px de corps pour {u:.0} px d'unite")); + } + if near > 0.08 * u { + failures.push(format!("glass-lens/{state}: le verre est a {near:.1} px du hotspot")); + } + if !(c[0] > tip[0] && c[1] > tip[1] + 0.2 * u) { + failures.push(format!("glass-lens/{state}: corps en {c:?}, pas en bas a droite de {tip:?}")); + } + if through * 10 < body * 5 { + failures.push(format!("glass-lens/{state}: l'ecran ne se voit que sur {through} px")); + } + if line * 20 < body { + failures.push(format!("glass-lens/{state}: {line} px de trait seulement")); + } + if moved * 50 < through { + failures.push(format!("glass-lens/{state}: le verre ne deplace l'ecran que sur {moved} px")); + } + } + assert!(failures.is_empty(), "{failures:#?}"); + } + /// Le métrage, puis ses flous de confidentialité, puis le curseur, net par-dessus (parité /// Windows et macOS) : le cristal de Prism Glow réfracte l'image déjà floutée. Sous le flou, /// des rayures fines décalées d'une colonne donnent la même image floutée ; si le verre lisait diff --git a/crates/compositor/src/compositor_macos.rs b/crates/compositor/src/compositor_macos.rs index 5440cfb51..07ea2dd7c 100644 --- a/crates/compositor/src/compositor_macos.rs +++ b/crates/compositor/src/compositor_macos.rs @@ -2189,6 +2189,17 @@ impl Compositor { } } let (rw, rh) = (self.render_w as f32, self.render_h as f32); + // Le verre à plat de Glass Lens (mode 19) : la copie qu'il réfracte est déjà en + // texture(5) (`CursorPlan::glass`). Parité Windows. + if model.is_none() { + let glass = sprite.glass.as_deref().and_then(|name| { + crate::frame_geometry::cursor_glass_cb(placement, size_px, name, a, clip, [rw, rh]) + }); + if let Some(cb) = glass { + self.draw_solid(enc, &cb); + return Ok(Some(cb.dst)); + } + } let ar = iw as f32 / ih.max(1) as f32; let (pw, ph) = if ar >= 1.0 { (size_px, size_px / ar) } else { (size_px * ar, size_px) }; let cb = crate::frame_geometry::cursor_sprite_cb( diff --git a/crates/compositor/src/compositor_windows.rs b/crates/compositor/src/compositor_windows.rs index 11952713d..26dc8f67b 100644 --- a/crates/compositor/src/compositor_windows.rs +++ b/crates/compositor/src/compositor_windows.rs @@ -1837,6 +1837,17 @@ impl Compositor { Err(e) => eprintln!("[curseur] champ de \"{path}\" : {e:#}"), } } + // Le verre à plat de Glass Lens (mode 19) : la copie qu'il réfracte est déjà en t5 + // (`CursorPlan::glass`). + if model.is_none() { + let glass = sprite.glass.as_deref().and_then(|name| { + crate::frame_geometry::cursor_glass_cb(placement, size_px, name, a, clip, [self.rw(), self.rh()]) + }); + if let Some(cb) = glass { + self.draw_layer(&cb); + return Ok(Some(cb.dst)); + } + } let ar = iw as f32 / ih as f32; let (pw, ph) = if ar >= 1.0 { (size_px, size_px / ar) } else { (size_px * ar, size_px) }; let cb = crate::frame_geometry::cursor_sprite_cb( diff --git a/crates/compositor/src/frame_geometry.rs b/crates/compositor/src/frame_geometry.rs index a8ef080e4..4845cb823 100644 --- a/crates/compositor/src/frame_geometry.rs +++ b/crates/compositor/src/frame_geometry.rs @@ -66,12 +66,13 @@ pub struct LayerCB { impl LayerCB { /// Le calque est l'un des modèles 3D — le curseur modelé (mode 15), l'impact de son clic - /// (16), l'appareil et son ombre (17) — que seule la variante « modèles » du shader de calque - /// compile. Dans le même shader que les autres, leurs branches fixaient l'occupation de TOUS - /// les calques (168 VGPR sur RADV) ; les trois backends décident donc du shader d'un calque - /// par ce test, au moment de le dessiner (cf. le haut de `vk_shaders/layer.wgsl`). + /// (16), l'appareil et son ombre (17) — ou le verre à plat de Glass Lens (19), qui en reprend + /// les formes : seule la variante « modèles » du shader de calque les compile. Dans le même + /// shader que les autres, leurs branches fixaient l'occupation de TOUS les calques (168 VGPR + /// sur RADV) ; les trois backends décident donc du shader d'un calque par ce test, au moment de + /// le dessiner (cf. le haut de `vk_shaders/layer.wgsl`). pub fn needs_models(&self) -> bool { - self.mode > 14.5 && self.mode < 17.5 + (self.mode > 14.5 && self.mode < 17.5) || self.mode > 18.5 } } @@ -1212,6 +1213,61 @@ pub fn cursor_sprite_cb( } } +// ============ Verre à plat (mode 19) ============ +// +// Glass Lens, 3D éteinte : la lentille de son modèle (`sculpt.rs`, `s_glass` dans les shaders) +// vue de face, posée sur l'image comme le sprite plat (le quad projeté et le warp inverse du +// mode 13), mais dessinée par le shader, qui réfracte la copie de l'image composée +// (`CursorPlan::glass`) au travers d'un relief tiré des mêmes formes. Le PNG du thème ne sert plus +// qu'au sélecteur. +// +// Emplacements du `LayerCB` au mode 19 : +// dst, quad_px bbox du rect du modèle projeté (sortie 0..1, px) +// fx, src_prev coins TL, TR puis BR, BL, en px locaux à la bbox (comme au mode 13) +// dst_prev rect de clip « Clip to canvas » (sortie 0..1) +// mb.x 1 = warp projectif (caméra réelle) +// src.xy l'unité du modèle en fractions de la sortie (x, y) : le décalage de la réfraction +// color.rg coin haut-gauche du rect, repère du modèle (unités), comme au mode 15 +// color.b l'unité du modèle en px de sortie : l'antialiasing +// color.a opacité +// radius_px rapport w/h du rect (`sprite_size` des shaders) +// trail_a.x le curseur sculpté (`SpriteShape::sculpt`) +// Texture : la copie de l'image composée, t5/texture(5) (`texDof`) sous Windows et macOS, au +// binding 1 (`texY`) sous Linux, comme pour le cristal du mode 15. + +/// Le verre à plat du curseur sculpté `name` posé en `placement` : la boîte du modèle a pour plus +/// grand côté `size_px`, comme au mode 15. `None` pour un nom qui n'est pas un modèle. +pub fn cursor_glass_cb( + placement: CursorPlacement, + size_px: f32, + name: &str, + alpha: f32, + clip: [f32; 4], + render_px: [f32; 2], +) -> Option { + let shape = crate::sculpt::sculpted_shape(name)?; + let [rw, rh] = render_px; + let sprite_px = [shape.size[0] * size_px, shape.size[1] * size_px]; + let mut cb = cursor_sprite_cb(placement, sprite_px, shape.hotspot, alpha, clip, render_px); + if cb.mode < 12.5 { + // Écran droit (mode 7) : son rect, sous la forme du mode 13. Le warp bilinéaire d'un + // rect est exact. + let [w, h] = [cb.dst[2] * rw, cb.dst[3] * rh]; + cb.quad_px = [w, h]; + cb.fx = [0.0, 0.0, w, 0.0]; + cb.src_prev = [w, h, 0.0, h]; + cb.dst_prev = clip; + } + // L'unité telle que le plan la montre : le bord gauche du rect projeté (TL -> BL). + let unit_px = (cb.src_prev[2] - cb.fx[0]).hypot(cb.src_prev[3] - cb.fx[1]) / shape.size[1]; + cb.mode = 19.0; + cb.src = [unit_px / rw, unit_px / rh, 0.0, 0.0]; + cb.color = [shape.origin()[0], shape.origin()[1], unit_px, alpha]; + cb.radius_px = shape.size[0] / shape.size[1]; + cb.trail_a = [shape.sculpt as f32, 0.0, 0.0, 0.0]; + Some(cb) +} + /// Gain de l'éclairage de la caméra réelle : une lampe posée sur la caméra, dont la lumière /// décroît avec le carré de la distance. 1 = la décroissance physique ; moins, pour que le /// contenu reste lisible. L'œil en orbite passe loin de l'axe : à 22° d'azimut, l'écart d'un bord @@ -3538,9 +3594,10 @@ pub struct CursorPlan { /// L'impact des clics récents sur l'écran (mode 16), à dessiner SOUS le curseur. Vide sans /// curseur modélisé, sans clic récent ou à `clickBounce` nul. pub impacts: Vec, - /// Le curseur modélisé est le cristal de Prism Glow : il réfracte l'image déjà composée, le - /// métrage et ses flous de confidentialité, que le backend lui copie juste avant de le - /// dessiner. Seuls des pixels floutés passent ainsi à travers le verre. + /// Le curseur est de verre — le cristal de Prism Glow ou la lentille de Glass Lens en 3D, le + /// verre à plat de Glass Lens sans elle (`SceneCursorSprite::glass`) : il réfracte l'image déjà + /// composée, le métrage et ses flous de confidentialité, que le backend lui copie juste avant + /// de le dessiner. Seuls des pixels floutés passent ainsi à travers le verre. pub glass: bool, } @@ -3673,8 +3730,8 @@ pub fn plan_cursor(g: &FrameGeometry, input: &CursorPlanInput) -> Option, dst: [f32; 4]| -> Option { cxy.and_then(|p| { @@ -3843,7 +3900,10 @@ pub fn plan_cursor(g: &FrameGeometry, input: &CursorPlanInput) -> Option s.sculpt.as_deref().is_some_and(crate::sculpt::refracts), + None => sprite.and_then(|s| s.glass.as_deref()).is_some_and(|n| crate::sculpt::sculpted_shape(n).is_some()), + }, }) } @@ -4510,9 +4570,9 @@ mod tests { /// Les modèles 3D, et eux seuls, passent par la variante « modèles » du shader de calque. #[test] fn only_the_3d_models_need_the_models_shader() { - for mode in 0..=18 { + for mode in 0..=19 { let cb = super::LayerCB { mode: mode as f32, ..Default::default() }; - assert_eq!(cb.needs_models(), (15..=17).contains(&mode), "mode {mode}"); + assert_eq!(cb.needs_models(), (15..=17).contains(&mode) || mode == 19, "mode {mode}"); } } @@ -8077,6 +8137,7 @@ mod tests { hotspot_x: hx, hotspot_y: hy, sculpt: None, + glass: None, }, ); } @@ -8309,6 +8370,7 @@ mod tests { hotspot_x: 0.1947, hotspot_y: 0.0656, sculpt: Some("studio-ink/arrow".into()), + glass: None, }; themed.cursor.cursor_sprites.insert("arrow".into(), themed_arrow.clone()); assert_eq!( @@ -8322,6 +8384,56 @@ mod tests { assert!(model_plan([0.0; 3], &bare, &track, 0.3, true).expect("plan").model.is_none()); } + /// Glass Lens est de verre 3D éteinte aussi : le plan demande la copie de l'image composée + /// sans modèle (le verre à plat), puis avec lui (sa lentille sculptée). Le thème par défaut + /// n'a rien à réfracter. + #[test] + fn the_glass_lens_is_glass_with_and_without_3d() { + let track = still_track(vec![]); + let mut scene = model_scene(); + scene.cursor.theme = "glass-lens".into(); + let arrow = crate::scene::SceneCursorSprite { + path: "glass-lens/arrow.png".into(), + hotspot_x: 0.3045, + hotspot_y: 0.0255, + sculpt: Some("glass-lens/arrow".into()), + glass: Some("glass-lens/arrow".into()), + }; + scene.cursor.cursor_sprites.insert("arrow".into(), arrow); + let flat = model_plan([0.0; 3], &scene, &track, 0.3, false).expect("plan"); + assert!(flat.model.is_none() && flat.glass, "3D éteinte : le verre à plat"); + let modelled = model_plan([0.0; 3], &scene, &track, 0.3, true).expect("plan"); + assert!(modelled.model.is_some() && modelled.glass, "3D : la lentille sculptée"); + let plain = model_plan([0.0; 3], &model_scene(), &track, 0.3, false).expect("plan"); + assert!(!plain.glass); + } + + /// Le verre à plat (mode 19) pose la boîte du modèle sculpté comme le sprite plat pose le + /// sien : son hotspot au point visé, son plus grand côté à `size_px`, ses coins sous la forme + /// du mode 13 et le clip dans `dst_prev`. Il porte le modèle et l'unité qui règle la + /// réfraction ; un nom qui n'est pas un modèle n'a pas de verre. + #[test] + fn the_flat_glass_layer_sits_the_model_box_on_the_hotspot() { + let render = [1920.0, 1080.0]; + let (clip, center) = ([0.1, 0.2, 0.7, 0.6], [0.5, 0.4]); + let place = CursorPlacement::Upright { center }; + let cb = cursor_glass_cb(place, 100.0, "glass-lens/arrow", 0.8, clip, render).expect("modèle"); + let shape = crate::sculpt::sculpted_shape("glass-lens/arrow").unwrap(); + assert_eq!(cb.mode, 19.0); + assert!(cb.needs_models()); + assert_eq!((cb.dst_prev, cb.trail_a[0], cb.color[3]), (clip, shape.sculpt as f32, 0.8)); + let [w, h] = [shape.size[0] * 100.0, shape.size[1] * 100.0]; + assert!((cb.quad_px[0] - w).abs() < 1e-3 && (cb.quad_px[1] - h).abs() < 1e-3); + assert_eq!(cb.fx, [0.0, 0.0, cb.quad_px[0], 0.0]); + assert_eq!(cb.src_prev, [cb.quad_px[0], cb.quad_px[1], 0.0, cb.quad_px[1]]); + let tip = [cb.dst[0] * render[0] + shape.hotspot[0] * w, cb.dst[1] * render[1] + shape.hotspot[1] * h]; + assert!((tip[0] - center[0] * render[0]).abs() < 1e-2, "{tip:?}"); + assert!((tip[1] - center[1] * render[1]).abs() < 1e-2, "{tip:?}"); + assert!((cb.color[2] - 100.0).abs() < 1e-3); + assert!((cb.src[0] - 100.0 / render[0]).abs() < 1e-6 && (cb.src[1] - 100.0 / render[1]).abs() < 1e-6); + assert!(cursor_glass_cb(place, 100.0, "studio-ink/text", 0.8, clip, render).is_none()); + } + /// Les poses d'essai, pour chaque état de `MODEL_STATES` : au repos, posé, tourné. fn model_cases() -> Vec<(String, CursorPlan, SpriteShape, crate::cursor_sdf::CursorSdf)> { let scene = model_scene(); diff --git a/crates/compositor/src/scene.rs b/crates/compositor/src/scene.rs index bddd7d55c..4b9da53cd 100644 --- a/crates/compositor/src/scene.rs +++ b/crates/compositor/src/scene.rs @@ -595,6 +595,11 @@ pub struct SceneCursorSprite { /// shaders le modèlent au lieu d'extruder le sprite, qui reste l'art en 2D. #[serde(default)] pub sculpt: Option, + /// Le verre de cet état à plat, `"/<état>"` comme `sculpt` mais 3D éteinte comprise : + /// le shader dessine ce modèle en lentille de verre posée sur l'image (mode 19, + /// `frame_geometry::cursor_glass_cb`) au lieu du sprite, qui ne sert plus qu'au sélecteur. + #[serde(default)] + pub glass: Option, } #[derive(Debug, Clone, Copy, Deserialize)] diff --git a/crates/compositor/src/sculpt.rs b/crates/compositor/src/sculpt.rs index 89fa9a277..b22662353 100644 --- a/crates/compositor/src/sculpt.rs +++ b/crates/compositor/src/sculpt.rs @@ -2,9 +2,11 @@ //! shaders (mode 15, `sculpt_proto`) au lieu d'extruder leur PNG — voxels (Pixel Candy), pièces //! cerclées du trait de leur dessin (Studio Ink, Pop Coral, Star Sprout). Prism Glow est à part : //! un MAILLAGE tracé sur son dessin à facettes, un cristal lancé de rayons boîte par boîte -//! dans son serti marine (`prism_mesh`). Ce module en tient ce que la géométrie doit savoir côté -//! CPU : l'identifiant que lit le shader, et la boîte du modèle (`SpriteShape`) qui pose le -//! hotspot, règle la garde au sol et borne la boîte de dessin. +//! dans son serti marine (`prism_mesh`). Glass Lens est une lentille de verre cerclée d'un trait +//! sombre et d'un liseré de verre (`s_glass`) : le seul dont le verre se dessine aussi à plat +//! (mode 19, `frame_geometry::cursor_glass_cb`). Ce module en tient ce que la géométrie doit +//! savoir côté CPU : l'identifiant que lit le shader, et la boîte du modèle (`SpriteShape`) qui +//! pose le hotspot, règle la garde au sol et borne la boîte de dessin. //! //! Les formes sont écrites dans le repère du PROTOTYPE où elles ont été dessinées : hauteur du //! curseur 1, x à droite, y VERS LE HAUT, z vers la caméra, l'écran en z = 0. Les constantes @@ -43,9 +45,13 @@ const BOX_CORAL_ARROW: [f32; 3] = [-0.35, 0.6, 0.06]; const BOX_CORAL_HAND: [f32; 3] = [-0.38, 0.62, 0.04]; const BOX_SPROUT_ARROW: [f32; 3] = [-0.08, 0.87, 0.03]; const BOX_SPROUT_HAND: [f32; 3] = [-0.33, 0.56, 0.03]; +/// Glass Lens : la flèche et le gant de Studio Ink, que le liseré de verre élargit au-delà du +/// trait (`GLASS_RIM` des shaders). `scripts/generate-glass-lens-cursor.mjs` lit ces boîtes. +const BOX_GLASS_ARROW: [f32; 3] = [-0.1, 0.56, 0.03]; +const BOX_GLASS_HAND: [f32; 3] = [-0.4, 0.63, 0.03]; /// Dans l'ordre des identifiants du shader. -const THEMES: [&str; 5] = ["studio-ink", "prism-glow", "pop-coral", "pixel-candy", "star-sprout"]; +const THEMES: [&str; 6] = ["studio-ink", "prism-glow", "pop-coral", "pixel-candy", "star-sprout", "glass-lens"]; /// La boîte du modèle (x0, x1, haut) dans le prototype. fn model_box(theme: usize, arrow: bool) -> [f32; 3] { @@ -58,13 +64,16 @@ fn model_box(theme: usize, arrow: bool) -> [f32; 3] { ("pixel-candy", false) => BOX_PIXEL_HAND, ("star-sprout", true) => BOX_SPROUT_ARROW, ("star-sprout", false) => BOX_SPROUT_HAND, + ("glass-lens", true) => BOX_GLASS_ARROW, + ("glass-lens", false) => BOX_GLASS_HAND, (other, _) => unreachable!("thème sculpté inconnu : {other}"), } } -/// Le curseur sculpté que nomme la scène est de verre (Prism Glow) : il réfracte ce qui est dessous. +/// Le curseur sculpté que nomme la scène est de verre (le cristal de Prism Glow, la lentille de +/// Glass Lens) : il réfracte ce qui est dessous. pub fn refracts(name: &str) -> bool { - sculpted_shape(name).is_some_and(|s| THEMES[((s.sculpt - 1) / 2) as usize] == "prism-glow") + sculpted_shape(name).is_some_and(|s| matches!(THEMES[((s.sculpt - 1) / 2) as usize], "prism-glow" | "glass-lens")) } /// Le curseur sculpté que nomme la scène (`"/<état>"`, cf. `resolveCursorSprites`), sous @@ -109,7 +118,11 @@ pub fn sculpted_shape(name: &str) -> Option { mod tests { use super::*; - const NAMES: [&str; 10] = [ + /// La largeur du contour de Glass Lens, trait sombre et liseré de verre compris : ses boîtes + /// en dépendent, les shaders la portent. + const GLASS_RIM: f32 = 0.085; + + const NAMES: [&str; 12] = [ "studio-ink/arrow", "studio-ink/pointer", "prism-glow/arrow", @@ -120,6 +133,8 @@ mod tests { "pixel-candy/pointer", "star-sprout/arrow", "star-sprout/pointer", + "glass-lens/arrow", + "glass-lens/pointer", ]; #[test] @@ -167,6 +182,7 @@ mod tests { ("SCULPT_HOVER", Z_LOW), ("SCULPT_VOX", VOX), ("PRISM_BEVEL", crate::prism_mesh::BEVEL), + ("GLASS_RIM", GLASS_RIM), ] { let line = src .lines() @@ -230,13 +246,14 @@ mod tests { } } - /// Seul Prism Glow est de verre, flèche et main. + /// Seuls Prism Glow et Glass Lens sont de verre, flèche et main. #[test] - fn only_prism_glow_refracts() { + fn only_the_glass_themes_refract() { for name in NAMES { - assert_eq!(refracts(name), name.starts_with("prism-glow/"), "{name}"); + let glass = name.starts_with("prism-glow/") || name.starts_with("glass-lens/"); + assert_eq!(refracts(name), glass, "{name}"); } - assert!(!refracts("prism-glow/text")); + assert!(!refracts("prism-glow/text") && !refracts("glass-lens/text")); } /// Le maillage de Prism Glow tient dans sa boîte (le shader n'y lance de rayons que là), son diff --git a/crates/compositor/src/shaders.hlsl b/crates/compositor/src/shaders.hlsl index c17d207d9..847882303 100644 --- a/crates/compositor/src/shaders.hlsl +++ b/crates/compositor/src/shaders.hlsl @@ -14,7 +14,7 @@ cbuffer Layer : register(b0) float4 src; // u0,v0,u1,v1 dans l'espace source 0..1 ; modes 15 et 17 : décalage px du rayon, P, U float2 quad_px; // taille du quad en pixels (pour les SDF) float radius_px; // rayon des coins arrondis en px (0 = aucun) ; mode 17 : rayon des coins hauts du corps (unités du modèle) - float mode; // 0 = vidéo NV12, 1 = couleur pleine, 2 = ombre portée, 4 = curseur, 15 = curseur 3D, 16 = impact du clic, 17 = appareil modelé, 18 = écran cadré flouté en bloc + float mode; // 0 = vidéo NV12, 1 = couleur pleine, 2 = ombre portée, 4 = curseur, 15 = curseur 3D, 16 = impact du clic, 17 = appareil modelé, 18 = écran cadré flouté en bloc, 19 = curseur de verre à plat float4 color; // couleur pleine / teinte (ombre : rgb + opacité dans a) ; mode 15 : coin du sprite, écrasement, opacité ; mode 17 : .r = l'appareil (1 portable, 2 téléphone, 3 moniteur), .g = thème sombre, .b = rayon des coins bas du corps, .a = opacité float4 fx; // fx.x = spread ombre (px), fx.y,fx.z libres ; mode 15 : rotation du plan (rad), tangage ; mode 17 : rotation du plan (rad), épaisseur float4 src_prev; // src à la frame précédente (flou de mouvement par vélocité) ; mode 15 : hotspot, lacet ; mode 17 : marges du corps (unités du modèle) @@ -933,6 +933,80 @@ float2 s_rimmed(float3 p, int theme, int shape) return s_opu(r, float2(s_ellipsoid(e, float3(0.075, 0.13, 0.1)) * rs, 5.0)); } +// ---- Glass Lens ---- +// Une lentille de verre dans un trait sombre, et au-delà un liseré de verre. Ses formes sont la +// flèche et le gant de Studio Ink (RIM_POLY 0, RIM_GLOVE 1) ; mesurées depuis le bord de la +// lentille, le trait en occupe GLASS_LINE et le contour entier GLASS_RIM (miroir de `sculpt.rs`). +// En volume (mode 15, `s_glass`) : un socle de verre sous toute la silhouette, de SCULPT_HOVER à +// GLASS_TOP, arrondi sur toute la largeur du liseré ; la lentille, bombée de GLASS_DOME, qui en +// sort dans le trait ; le trait, une bande graphite au dessus plat sur le bord de la lentille. +// À plat (mode 19, `cursor_glass`), le même relief vu de face. Le verre (matière GLASS_MAT) entre +// par sa face bombée et sort par le dessous plat du socle vers l'image (`glass_shade`). +static const float GLASS_LINE = 0.04; +static const float GLASS_RIM = 0.085; +static const float GLASS_TOP = 0.18; +static const float GLASS_DOME = 0.03; +// La lentille monte sur cette largeur depuis son bord, puis reste à plat. +static const float GLASS_RISE = 0.08; +static const float GLASS_IOR = 1.5; +static const float GLASS_DISPERSION = 0.012; +static const float GLASS_MAT = 10.0; +// À plat : l'air sous le socle, que le mode 15 tient de la garde au sol du modèle (prototype). +static const float GLASS_GAP_FLAT = 0.15; +// L'écart des deux prises de part et d'autre du point réfracté, rapporté au décalage +// (`glass_smear`). +static const float GLASS_SMEAR = 0.15; +// La lueur propre du verre (linéaire) : sur un fond noir, la lentille reste un verre fumé visible. +static const float GLASS_LIFT = 0.02; +// L'ombre de la lentille, rapportée à celle d'un modèle opaque : le verre laisse passer la lumière. +static const float GLASS_SHADOW = 0.6; + +// Glass Lens dans le plan (prototype) : x = la silhouette, y = la lentille (distances signées, +// négatives dedans). Le trait est entre 0 et GLASS_LINE de la lentille, le liseré au-delà ; les +// fentes entre les doigts, creusées dans la lentille, s'y remplissent du trait. Les formes +// descendent de ce que le contour a de plus que le trait de Studio Ink : la pointe et le bout de +// l'index restent au hotspot. +float2 s_glass2(float2 p, int shape) +{ + if (shape == 0) + { + float poly = s_rim_poly(p + float2(0.0, GLASS_RIM - 0.06), 0); + return float2(poly - GLASS_RIM, poly); + } + float2 q = p + float2(0.0, GLASS_RIM - RIM_GLOVE_R[5].z); + float2 v = s_rim_glove(q, 1, s_rim_poly(q, 14) - 0.05); + return float2(v.x - GLASS_RIM, v.y); +} + +// La hauteur du verre au-dessus de GLASS_TOP en fonction de la distance `d` à la lentille +// (`s_glass2`), et sa pente : x = la hauteur, y = sa dérivée. La lentille monte de GLASS_DOME sur +// GLASS_RISE ; le liseré tombe en quart de rond jusqu'au bord, l'arrondi du socle (`s_glass`). Le +// trait n'est pas du verre : rien ne s'y lit. +float2 s_glass_relief(float d) +{ + if (d < 0.0) + { + float u = saturate(-d / GLASS_RISE); + return float2(GLASS_DOME * u * (2.0 - u), -2.0 * GLASS_DOME * (1.0 - u) / GLASS_RISE); + } + float w = GLASS_RIM - GLASS_LINE; + float x = saturate((d - GLASS_LINE) / w); + float s = sqrt(max(1.0 - x * x, 0.05)); + return float2(w * (s - 1.0), -x / s); +} + +// Glass Lens en volume, repère du prototype : (distance, matière). +float2 s_glass(float3 p, int shape) +{ + float2 g = s_glass2(p.xy, shape); + float half_h = 0.5 * (GLASS_TOP - SCULPT_HOVER); + float slab = s_extrude(g.x, p.z - SCULPT_HOVER - half_h, half_h, min(GLASS_RIM - GLASS_LINE, half_h)); + float u = saturate(-g.y / GLASS_RISE); + float dome = 0.8 * s_extrude(g.y, p.z - GLASS_TOP, 0.009 + GLASS_DOME * u * (2.0 - u), 0.008); + float band = s_extrude(abs(g.y - 0.5 * GLASS_LINE) - 0.5 * GLASS_LINE, p.z - GLASS_TOP, 0.016, 0.008); + return s_opu(float2(min(slab, dome), GLASS_MAT), float2(band, 5.0)); +} + // Pixel Candy est un pixel art, dessiné une fois : la même grille donne ses PNG 2D et, ici, un cube // par pixel. Une ligne par entier, bit c = colonne c, ligne 0 en haut. `PIX_BODY` : les pixels // pleins ; `PIX_LINE`, `PIX_HI`, `PIX_SHADE` : ceux du contour prune, du reflet rose pâle et de @@ -2005,6 +2079,10 @@ float2 sculpt_proto(float3 p, int theme, int shape) { return s_voxels(p, shape); } + if (theme == 5) + { + return s_glass(p, shape); + } // Un seul appel pour les trois thèmes cerclés et leurs deux formes (FXC recopie chaque appel). return s_rimmed(p, theme, shape); } @@ -2192,6 +2270,12 @@ SculptMat sculpt_material(float mat, float3 p, int theme, int shape) // Le serti de Prism Glow : un émail marine, brillant sur son arrondi seulement (`model_shade`). return s_mat(s_lin(0.02, 0.05, 0.33), 0.35, 0.5, 0.05, 0.3); } + if (theme == 5) + { + // Le trait de Glass Lens : un graphite laqué, dont seuls les bords arrondis brillent (le + // verre a son propre ombrage, `glass_shade`). + return s_mat(s_lin(0.05, 0.055, 0.07), 0.25, 0.7, 0.0, 0.35); + } if (theme == 2) { // Corail : la flèche, le calque et les tirets de la main ; jaune : le gant, le calque et les @@ -2266,10 +2350,10 @@ float3 model_shade(float3 q, float3 n, float3 rd, float3 L, float fall, float sh // La matière d'un voxel se lit juste sous la surface : son flanc lit sa propre cellule. float3 p = sculpt_point(q) - float3(n.x, -n.y, n.z) * 0.01; m = sculpt_material(mat, p, (id - 1) / 2, (id - 1) % 2); - if (id == 3 || id == 4) + if (id == 3 || id == 4 || id > 10) { - // Le serti de Prism Glow, comme un sprite : son dessus plat, face à la lampe, prendrait - // tout son reflet et virerait au gris. + // Le serti de Prism Glow et le trait de Glass Lens, comme un sprite : leur dessus plat, + // face à la lampe, prendrait tout son reflet et virerait au gris. gloss = 1.0 - smoothstep(0.97, 0.995, abs(n.z)); } } @@ -2365,27 +2449,31 @@ float3 plane_to_world(float3 v, ModelFrame f) return float3(x * f.c.y + v.z * f.s.y, y * f.c.x - z * f.s.x, y * f.s.x + z * f.c.x); } -// Ce que montre l'image là où le rayon (q, d) du modèle retombe sur le plan : la copie de l'image -// composée faite juste avant le curseur (t5), flous de confidentialité compris, lue au pixel de -// sortie de ce point, en linéaire. Seuls des pixels déjà floutés passent donc à travers le verre. -// L'œil est en (-mb.zw, persp) du repère caméra, le rayon du pixel `local` y va vers +// L'uv de sortie du point où le rayon (q, d) du modèle retombe sur le plan, (-1, -1) s'il n'y +// retombe pas. L'œil est en (-mb.zw, persp) du repère caméra, le rayon du pixel `local` y va vers // (local + src.xy, -persp) : on remonte de ce point du plan à son `local`, puis à son uv de sortie. -// Hors de l'image, l'écran sombre du studio. -float3 prism_screen(float3 q, float3 d, float3 nz, float hz, float3 tip, float unit, ModelFrame f) +float2 screen_uv(float3 q, float3 d, float3 nz, float hz, float3 tip, float unit, ModelFrame f) { float denom = dot(d, nz); if (denom > -1e-4) { - return SCULPT_SCREEN * 0.2; + return float2(-1.0, -1.0); } float3 g = q + d * ((hz - dot(q, nz)) / denom); float3 w = plane_to_world(tip + unit * model_to_plane(g, f), f); float k = 1.0 - w.z / src.z; if (k < 1e-3) { - return SCULPT_SCREEN * 0.2; + return float2(-1.0, -1.0); } - float2 uv = dst.xy + ((w.xy + mb.zw) / k - src.xy) / quad_px * dst.zw; + return dst.xy + ((w.xy + mb.zw) / k - src.xy) / quad_px * dst.zw; +} + +// Ce que montre l'image en `uv` : la copie de l'image composée faite juste avant le curseur (t5), +// flous de confidentialité compris, en linéaire. Seuls des pixels déjà floutés passent donc à +// travers le verre. Hors de l'image, l'écran sombre du studio. +float3 screen_at(float2 uv) +{ if (any(uv < 0.0) || any(uv > 1.0)) { return SCULPT_SCREEN * 0.2; @@ -2393,6 +2481,12 @@ float3 prism_screen(float3 q, float3 d, float3 nz, float hz, float3 tip, float u return pow(texDof.SampleLevel(samp, uv, 0.0).rgb, 2.2); } +// Ce que montre l'image là où le rayon (q, d) du modèle retombe sur le plan. +float3 prism_screen(float3 q, float3 d, float3 nz, float hz, float3 tip, float unit, ModelFrame f) +{ + return screen_at(screen_uv(q, d, nz, hz, tip, unit, f)); +} + // La couleur (sRGB, comme `model_shade`) du cristal au point `p` de la facette `h`, vu le long de // `rd` : reflet du studio, l'enregistrement réfracté par canal (la dispersion) à travers les // facettes et le fond plat, la lueur de la couleur de la facette dans l'art, ses plis en liseré. @@ -2468,6 +2562,63 @@ float3 prism_shade(float3 p, float3 n, float3 rd, int h, float px, float3 l, flo return model_tonemap(col); } +// ---- Le verre de Glass Lens ---- + +// La lumière qu'un verre de normale `n` (vue le long de `rd`, éclairé par `L`, `l`, `fill`) +// ajoute à ce qu'il transmet `trans` (linéaire) : le reflet du studio pondéré de Fresnel, l'éclat +// net de la lampe et son halo, et un liseré de lumière où la surface se dérobe, plus franc du +// côté de la lampe. Commun au verre en volume et au verre à plat. +float3 glass_light(float3 trans, float3 n, float3 rd, float3 L, float fall, float3 l, float3 fill) +{ + float c = saturate(-dot(rd, n)); + float F = prism_fresnel(c, GLASS_IOR); + float ndh = saturate(dot(n, normalize(L - rd))); + float ndl = dot(n, L); + float3 key = s_lin(1.0, 0.97, 0.93) * 2.1 * fall; + float spe = (pow(ndh, 900.0) * 5.0 + pow(ndh, 40.0) * 0.12) * saturate(ndl * 4.0); + float edge = pow(1.0 - c, 4.0) * (0.25 + 0.75 * saturate(ndl + 0.3)); + float3 col = (1.0 - F) * (trans * s_lin(0.97, 0.985, 1.0) + GLASS_LIFT) + F * model_env(reflect(rd, n), 0.03, l, fill); + return col + key * spe + s_lin(0.92, 0.96, 1.0) * edge * 0.6; +} + +// L'image en `uv`, moyennée le long de la réfraction, de `uv0` (où le pixel tomberait sans verre) +// à `uv` : là où le bord de la lentille comprime l'image, trois prises au lieu d'une l'empêchent de +// s'émietter en pixels qui scintillent quand le curseur bouge. +float3 glass_smear(float2 uv, float2 uv0) +{ + float2 s = all(uv0 >= 0.0) ? (uv - uv0) * GLASS_SMEAR : float2(0.0, 0.0); + return (screen_at(uv) + screen_at(uv - s) + screen_at(uv + s)) / 3.0; +} + +// Couleur (sRGB, comme `model_shade`) du verre de Glass Lens au point `q` du modèle, de normale +// `n`, vu le long de `rd` : l'enregistrement réfracté par canal (la dispersion), entré par la face +// touchée, sorti par le dessous plat du socle vers l'image, comme le cristal de Prism Glow sort +// par son fond ; une réflexion totale y renvoie le studio. L'image transmise n'est pas tonemappée : +// sous la lentille, un blanc reste blanc. +float3 glass_shade(float3 q, float3 n, float3 rd, float3 L, float fall, float3 l, float3 fill, float3 nz, + float hz, float3 tip, float unit, ModelFrame f) +{ + float zb = -model_thick(); + float2 uv0 = screen_uv(q, rd, nz, hz, tip, unit, f); + float3 trans = 0.0; + [loop] for (int ch = 0; ch < 3; ch++) + { + float3 mask = float3(ch == 0, ch == 1, ch == 2); + float ior = GLASS_IOR + GLASS_DISPERSION * (ch - 1); + float3 d = refract(rd, n, 1.0 / ior); + float3 seen = model_env(d, 0.05, l, fill); + if (d.z < -1e-4) + { + float3 qb = q + d * ((zb - q.z) / d.z); + float3 d2 = refract(d, float3(0.0, 0.0, 1.0), ior); + seen = dot(d2, d2) < 1e-8 ? model_env(reflect(d, float3(0.0, 0.0, 1.0)), 0.05, l, fill) + : glass_smear(screen_uv(qb, d2, nz, hz, tip, unit, f), uv0); + } + trans += seen * mask; + } + return pow(saturate(glass_light(trans, n, rd, L, fall, l, fill)), 1.0 / 2.2); +} + // Les passes de la boucle unique de `cursor_model`, dans l'ordre. Chaque tour n'évalue le modèle // QU'UNE fois (`model_eval`) : FXC recopie une fonction à chaque appel, et un curseur sculpté est // assez gros pour qu'un appel par passe multiplie par neuf le temps de compilation de ps_main. @@ -2596,14 +2747,18 @@ float4 cursor_model(float2 local) if (cov_s > 0.0) { float3 c; - if (mat > PRISM_MAT - 0.5) + float3 tl = lamp - q; + float fall = SCULPT_LAMP_DIST * SCULPT_LAMP_DIST / dot(tl, tl); + if (abs(mat - PRISM_MAT) < 0.5) { c = prism_shade(q, n, ray, hc, t_best / dlen, l, fill, nz, hz, tip, unit, f); } + else if (mat > GLASS_MAT - 0.5) + { + c = glass_shade(q, n, ray, normalize(tl), fall, l, fill, nz, hz, tip, unit, f); + } else { - float3 tl = lamp - q; - float fall = SCULPT_LAMP_DIST * SCULPT_LAMP_DIST / dot(tl, tl); c = model_shade(q, n, ray, normalize(tl), fall, sh, ao, mat, l, fill); } acc += float4(c * cov_s, cov_s); @@ -2716,7 +2871,7 @@ float4 cursor_model(float2 local) plane_next = true; } } - if (stage == STAGE_NORMAL && mat > PRISM_MAT - 0.5) + if (stage == STAGE_NORMAL && abs(mat - PRISM_MAT) < 0.5) { // Le cristal : la normale de sa facette, sans sondes ; ni occlusion ni ombre // propre. Un bord réel à moins d'un pixel (le serti, un pli) appelle les trois @@ -2758,7 +2913,7 @@ float4 cursor_model(float2 local) { sub = 3; } - if (k == 0 && mat > 7.5) + if (k == 0 && mat > 7.5 && mat < PRISM_MAT + 0.5) { // Le serti de Prism Glow au bord du cristal : son contour à moins d'un pixel. int ps = prism_shape(); @@ -2842,11 +2997,96 @@ float4 cursor_model(float2 local) } float w = 1.0 / max(shaded, 1); - float shadow = inside * max(dropped * MODEL_SHADOW_ALPHA, contact * MODEL_CONTACT_ALPHA); + // La lentille de Glass Lens laisse passer la lumière : son ombre est plus claire. + float clear = sculpt_id() > 10 ? GLASS_SHADOW : 1.0; + float shadow = inside * clear * max(dropped * MODEL_SHADOW_ALPHA, contact * MODEL_CONTACT_ALPHA); float a = acc.a * w * color.a; return float4(acc.rgb * w * color.a, a + (1.0 - a) * shadow * color.a); // prémultiplié, ombre noire } +// ============ Verre à plat (mode 19) ============ +// Glass Lens, 3D éteinte (`frame_geometry::cursor_glass_cb`, qui documente les emplacements) : le +// relief de son modèle vu de face (`s_glass2`, `s_glass_relief`), posé sur l'image comme le sprite +// du mode 13. Un rayon de vue droit y entre, plie à la surface, traverse le verre jusqu'au dessous +// plat du socle, en sort et descend GLASS_GAP_FLAT jusqu'à l'image : la copie de l'image composée +// (t5), lue par canal (la dispersion), décalée d'autant. Le trait est une bande graphite. +float4 cursor_glass(float2 local, float2 pout) +{ + if (pout.x < dst_prev.x || pout.x > dst_prev.x + dst_prev.z || + pout.y < dst_prev.y || pout.y > dst_prev.y + dst_prev.w) + { + return float4(0.0, 0.0, 0.0, 0.0); + } + float3 r = quad_inverse(local, fx.xy, fx.zw, src_prev.xy, src_prev.zw, mb.x); + if (r.z < 0.5) + { + return float4(0.0, 0.0, 0.0, 0.0); + } + // Le point du prototype (y vers le haut) sous ce pixel, et un pixel en unités du prototype. + float2 m = color.rg + saturate(r.xy) * sprite_size(); + float2 p = float2(m.x, -m.y) / SCULPT_SCALE; + float px = 1.0 / max(color.b * SCULPT_SCALE, 1e-3); + int shape = (sculpt_id() - 1) % 2; + // La forme et le gradient de la lentille : trois évaluations dans une boucle, un seul appel + // pour FXC. + float2 g = 0.0; + float2 gd = 0.0; + float e = 0.25 * px; + [loop] for (int k = 0; k < 3; k++) + { + float2 v = s_glass2(p + (k == 1 ? float2(e, 0.0) : (k == 2 ? float2(0.0, e) : float2(0.0, 0.0))), shape); + if (k == 0) g = v; + else if (k == 1) gd.x = v.y; + else gd.y = v.y; + } + float cov = saturate(0.5 - g.x / px); + if (cov <= 0.0) + { + return float4(0.0, 0.0, 0.0, 0.0); + } + float2 out_dir = (gd - g.y) / e; + out_dir /= max(length(out_dir), 1e-4); + // Le relief, repère de la sortie (x à droite, y vers le bas, z vers le spectateur). + float2 relief = s_glass_relief(g.y); + float2 dir = float2(out_dir.x, -out_dir.y); + float3 n = normalize(float3(-relief.y * dir, 1.0)); + float3 rd = float3(0.0, 0.0, -1.0); + // Le verre : par canal, la réfraction à la surface, la traversée jusqu'au dessous du socle, + // la sortie, puis l'air jusqu'à l'image. Le liseré, lui, est un bord arrondi : la lumière en + // ressort par le côté, après sa seule largeur de verre. Décalage en unités du prototype, puis + // de la sortie. + bool rim = g.y > GLASS_LINE; + float depth = rim ? GLASS_RIM - GLASS_LINE : GLASS_TOP - SCULPT_HOVER + relief.x; + float3 trans = 0.0; + [loop] for (int ch = 0; ch < 3; ch++) + { + float3 mask = float3(ch == 0, ch == 1, ch == 2); + float ior = GLASS_IOR + GLASS_DISPERSION * (ch - 1); + float3 d = refract(rd, n, 1.0 / ior); + float3 d2 = refract(d, float3(0.0, 0.0, 1.0), ior); + float2 off = d.xy * depth / max(-d.z, 0.05); + if (!rim && dot(d2, d2) > 1e-8) + { + off += d2.xy * GLASS_GAP_FLAT / max(-d2.z, 0.05); + } + off *= SCULPT_SCALE * src.xy; + trans += glass_smear(pout + off, pout) * mask; + } + float3 col = glass_light(trans, n, rd, MODEL_LIGHT, 1.0, MODEL_LIGHT, MODEL_FILL); + // Le trait : une bande graphite au dessus plat, comme en volume ; ses bords arrondis sur un + // quart de sa largeur prennent la lumière du côté de la lampe. + float edge_k = saturate(1.0 - min(g.y, GLASS_LINE - g.y) / (0.25 * GLASS_LINE)); + float side = g.y < 0.5 * GLASS_LINE ? -1.0 : 1.0; + float3 nl = normalize(float3(side * edge_k * dir, 1.0)); + float3 hl = normalize(MODEL_LIGHT + float3(0.0, 0.0, 1.0)); + float3 line_col = s_lin(0.05, 0.055, 0.07) * (0.6 + 0.5 * saturate(dot(nl, MODEL_LIGHT))) + + s_lin(1.0, 0.97, 0.93) * 0.8 * edge_k * pow(saturate(dot(nl, hl)), 40.0); + float in_line = saturate(0.5 + g.y / px) * saturate(0.5 - (g.y - GLASS_LINE) / px); + col = lerp(col, line_col, in_line); + float a = cov * color.a; + return float4(pow(saturate(col), 1.0 / 2.2) * a, a); // prémultiplié +} + // ============ Impact du clic (mode 16) ============ // Sous le curseur modélisé : une tache de pression et un anneau posés SUR l'écran, centrés sur le // point cliqué. Même warp que le mode 13 (fx/src_prev = coins, mb.x = 1 : projectif) ; le carré @@ -3470,6 +3710,17 @@ float4 device_frame(float2 local) float4 ps_main(VSOut i) : SV_Target { + // mode 19 : VERRE À PLAT de Glass Lens (cf. `cursor_glass`). Testé avant le mode 18, dont la + // branche n'a pas de borne haute. C'est un modèle, compilé avec les modes 15 à 17. + if (mode > 18.5) + { +#ifdef LAYER_MODELS + return cursor_glass(i.local, i.pout); +#else + return float4(0.0, 0.0, 0.0, 0.0); +#endif + } + // mode 18 : l'écran CADRÉ (ombre, cadre, métrage, appareil) flouté comme UN objet rigide // (`FrameGeometry::screen_trail`). t2 = son rendu isolé, prémultiplié, à la taille de la // sortie. Chaque tap retrouve le point de l'objet qui couvrait ce pixel plus tôt sur la diff --git a/crates/compositor/src/shaders.metal b/crates/compositor/src/shaders.metal index 7ca87d3f2..2a469a504 100644 --- a/crates/compositor/src/shaders.metal +++ b/crates/compositor/src/shaders.metal @@ -57,7 +57,7 @@ struct Layer float4 src; // u0,v0,u1,v1 dans l'espace source 0..1 ; modes 15 et 17 : décalage px du rayon, P, U float2 quad_px; // taille du quad en pixels (pour les SDF) float radius_px; // rayon des coins arrondis en px (0 = aucun) ; mode 17 : rayon des coins hauts du corps (unités du modèle) - float mode; // 0 = vidéo NV12, 1 = couleur pleine, 2 = ombre portée, ..., 15 = curseur 3D, 16 = impact du clic, 17 = appareil modelé, 18 = écran cadré flouté en bloc + float mode; // 0 = vidéo NV12, 1 = couleur pleine, 2 = ombre portée, ..., 15 = curseur 3D, 16 = impact du clic, 17 = appareil modelé, 18 = écran cadré flouté en bloc, 19 = curseur de verre à plat float4 color; // couleur pleine / teinte (ombre : rgb + opacité dans a) ; mode 15 : coin du sprite, texel, opacité ; mode 17 : .r = l'appareil (1 portable, 2 téléphone, 3 moniteur), .g = thème sombre, .b = rayon des coins bas du corps, .a = opacité float4 fx; // fx.x = spread ombre (px), fx.y,fx.z libres ; mode 15 : rotation du plan (rad), tangage ; mode 17 : rotation du plan (rad), épaisseur float4 src_prev; // src à la frame précédente (flou de mouvement par vélocité) ; mode 15 : hotspot, lacet ; mode 17 : marges du corps (unités du modèle) @@ -879,6 +879,59 @@ static float2 s_rimmed(float3 p, int theme, int shape) return s_opu(r, float2(s_ellipsoid(e, float3(0.075, 0.13, 0.1)) * rs, 5.0)); } +// ---- Glass Lens ---- (cf. HLSL : une lentille de verre dans un trait sombre, un liseré de verre +// au-delà ; `s_glass` en volume, `cursor_glass` à plat, `glass_shade` pour le verre.) +constant float GLASS_LINE = 0.04; +constant float GLASS_RIM = 0.085; +constant float GLASS_TOP = 0.18; +constant float GLASS_DOME = 0.03; +constant float GLASS_RISE = 0.08; +constant float GLASS_IOR = 1.5; +constant float GLASS_DISPERSION = 0.012; +constant float GLASS_MAT = 10.0; +constant float GLASS_GAP_FLAT = 0.15; +constant float GLASS_SMEAR = 0.15; +constant float GLASS_LIFT = 0.02; +constant float GLASS_SHADOW = 0.6; + +// x = la silhouette, y = la lentille (distances signées du prototype, négatives dedans). +static float2 s_glass2(float2 p, int shape) +{ + if (shape == 0) + { + float poly = s_rim_poly(p + float2(0.0, GLASS_RIM - 0.06), 0); + return float2(poly - GLASS_RIM, poly); + } + float2 q = p + float2(0.0, GLASS_RIM - RIM_GLOVE_R[5].z); + float2 v = s_rim_glove(q, 1, s_rim_poly(q, 14) - 0.05); + return float2(v.x - GLASS_RIM, v.y); +} + +// La hauteur du verre au-dessus de GLASS_TOP selon la distance `d` à la lentille, et sa pente. +inline float2 s_glass_relief(float d) +{ + if (d < 0.0) + { + float u = saturate(-d / GLASS_RISE); + return float2(GLASS_DOME * u * (2.0 - u), -2.0 * GLASS_DOME * (1.0 - u) / GLASS_RISE); + } + float w = GLASS_RIM - GLASS_LINE; + float x = saturate((d - GLASS_LINE) / w); + float s = sqrt(max(1.0 - x * x, 0.05)); + return float2(w * (s - 1.0), -x / s); +} + +static float2 s_glass(float3 p, int shape) +{ + float2 g = s_glass2(p.xy, shape); + float half_h = 0.5 * (GLASS_TOP - SCULPT_HOVER); + float slab = s_extrude(g.x, p.z - SCULPT_HOVER - half_h, half_h, min(GLASS_RIM - GLASS_LINE, half_h)); + float u = saturate(-g.y / GLASS_RISE); + float dome = 0.8 * s_extrude(g.y, p.z - GLASS_TOP, 0.009 + GLASS_DOME * u * (2.0 - u), 0.008); + float band = s_extrude(abs(g.y - 0.5 * GLASS_LINE) - 0.5 * GLASS_LINE, p.z - GLASS_TOP, 0.016, 0.008); + return s_opu(float2(min(slab, dome), GLASS_MAT), float2(band, 5.0)); +} + // Pixel Candy : tables générées par scripts/generate-pixel-candy-voxels.mjs (cf. HLSL). // constant int PIX_BODY[32] = { 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 127, 247, 243, 480, 192, 48, 120, 120, 120, 504, 4088, 32760, 65534, 65535, 65535, 65534, 32766, 32764, 16380, 16376, 16376 }; @@ -1912,6 +1965,10 @@ static float2 sculpt_proto(float3 p, int theme, int shape) { return s_voxels(p, shape); } + if (theme == 5) + { + return s_glass(p, shape); + } return s_rimmed(p, theme, shape); } @@ -2067,6 +2124,7 @@ static SculptMat sculpt_material(float mat, float3 p, int theme, int shape) return s_mat(s_lin(0.1, 0.1, 0.11), 0.55, 0.05, 0.0, 0.1); } if (theme == 1) return s_mat(s_lin(0.02, 0.05, 0.33), 0.35, 0.5, 0.05, 0.3); + if (theme == 5) return s_mat(s_lin(0.05, 0.055, 0.07), 0.25, 0.7, 0.0, 0.35); if (theme == 2) { if ((primary && shape == 0) || (mat > 2.5 && mat < 3.5 && shape == 1)) return s_mat(s_lin(1.0, 0.40, 0.30), 0.85, 0.08, 0.15, 0.03); @@ -2124,7 +2182,7 @@ static float3 model_shade(float3 q, float3 n, float3 rd, float3 L, float fall, f { float3 p = sculpt_point(q, layer) - float3(n.x, -n.y, n.z) * 0.01; m = sculpt_material(mat, p, (id - 1) / 2, (id - 1) % 2); - if (id == 3 || id == 4) + if (id == 3 || id == 4 || id > 10) { gloss = 1.0 - smoothstep(0.97, 0.995, abs(n.z)); } @@ -2211,22 +2269,29 @@ static float3 plane_to_world(float3 v, ModelFrame f) return float3(x * f.c.y + v.z * f.s.y, y * f.c.x - z * f.s.x, y * f.s.x + z * f.c.x); } -static float3 prism_screen(float3 q, float3 d, float3 nz, float hz, float3 tip, float unit, ModelFrame f, - constant Layer &layer, texture2d texFrame) +// L'uv de sortie du point où le rayon (q, d) du modèle retombe sur le plan, (-1, -1) s'il n'y +// retombe pas (cf. HLSL). +static float2 screen_uv(float3 q, float3 d, float3 nz, float hz, float3 tip, float unit, ModelFrame f, + constant Layer &layer) { float denom = dot(d, nz); if (denom > -1e-4) { - return SCULPT_SCREEN * 0.2; + return float2(-1.0); } float3 g = q + d * ((hz - dot(q, nz)) / denom); float3 w = plane_to_world(tip + unit * model_to_plane(g, f), f); float k = 1.0 - w.z / layer.src.z; if (k < 1e-3) { - return SCULPT_SCREEN * 0.2; + return float2(-1.0); } - float2 uv = layer.dst.xy + ((w.xy + layer.mb.zw) / k - layer.src.xy) / layer.quad_px * layer.dst.zw; + return layer.dst.xy + ((w.xy + layer.mb.zw) / k - layer.src.xy) / layer.quad_px * layer.dst.zw; +} + +// La copie de l'image composée en `uv`, en linéaire ; hors de l'image, l'écran sombre du studio. +static float3 screen_at(float2 uv, texture2d texFrame) +{ if (any(uv < 0.0) || any(uv > 1.0)) { return SCULPT_SCREEN * 0.2; @@ -2234,6 +2299,12 @@ static float3 prism_screen(float3 q, float3 d, float3 nz, float hz, float3 tip, return pow(texFrame.sample(samp, uv, level(0.0)).rgb, float3(2.2)); } +static float3 prism_screen(float3 q, float3 d, float3 nz, float hz, float3 tip, float unit, ModelFrame f, + constant Layer &layer, texture2d texFrame) +{ + return screen_at(screen_uv(q, d, nz, hz, tip, unit, f, layer), texFrame); +} + static float3 prism_shade(float3 p, float3 n, float3 rd, int h, float px, float3 l, float3 fill, float3 nz, float hz, float3 tip, float unit, ModelFrame f, constant Layer &layer, texture2d texFrame) @@ -2302,6 +2373,55 @@ static float3 prism_shade(float3 p, float3 n, float3 rd, int h, float px, float3 return model_tonemap(col); } +// ---- Le verre de Glass Lens ---- (cf. HLSL) + +// Ce que le verre ajoute à ce qu'il transmet : Fresnel, l'éclat de la lampe, le liseré de lumière. +static float3 glass_light(float3 trans, float3 n, float3 rd, float3 L, float fall, float3 l, float3 fill) +{ + float c = saturate(-dot(rd, n)); + float F = prism_fresnel(c, GLASS_IOR); + float ndh = saturate(dot(n, normalize(L - rd))); + float ndl = dot(n, L); + float3 key = s_lin(1.0, 0.97, 0.93) * 2.1 * fall; + float spe = (pow(ndh, 900.0) * 5.0 + pow(ndh, 40.0) * 0.12) * saturate(ndl * 4.0); + float edge = pow(1.0 - c, 4.0) * (0.25 + 0.75 * saturate(ndl + 0.3)); + float3 col = (1.0 - F) * (trans * s_lin(0.97, 0.985, 1.0) + GLASS_LIFT) + F * model_env(reflect(rd, n), 0.03, l, fill); + return col + key * spe + s_lin(0.92, 0.96, 1.0) * edge * 0.6; +} + +// L'image en `uv`, moyennée le long de la réfraction depuis `uv0` (cf. HLSL). +static float3 glass_smear(float2 uv, float2 uv0, texture2d texFrame) +{ + float2 s = all(uv0 >= 0.0) ? (uv - uv0) * GLASS_SMEAR : float2(0.0); + return (screen_at(uv, texFrame) + screen_at(uv - s, texFrame) + screen_at(uv + s, texFrame)) / 3.0; +} + +static float3 glass_shade(float3 q, float3 n, float3 rd, float3 L, float fall, float3 l, float3 fill, float3 nz, + float hz, float3 tip, float unit, ModelFrame f, constant Layer &layer, + texture2d texFrame) +{ + float zb = -model_thick(layer); + float2 uv0 = screen_uv(q, rd, nz, hz, tip, unit, f, layer); + float3 trans = float3(0.0); + for (int ch = 0; ch < 3; ch++) + { + float3 mask = float3(float(ch == 0), float(ch == 1), float(ch == 2)); + float ior = GLASS_IOR + GLASS_DISPERSION * float(ch - 1); + float3 d = refract(rd, n, 1.0 / ior); + float3 seen = model_env(d, 0.05, l, fill); + if (d.z < -1e-4) + { + float3 qb = q + d * ((zb - q.z) / d.z); + float3 d2 = refract(d, float3(0.0, 0.0, 1.0), ior); + seen = dot(d2, d2) < 1e-8 + ? model_env(reflect(d, float3(0.0, 0.0, 1.0)), 0.05, l, fill) + : glass_smear(screen_uv(qb, d2, nz, hz, tip, unit, f, layer), uv0, texFrame); + } + trans += seen * mask; + } + return pow(saturate(glass_light(trans, n, rd, L, fall, l, fill)), float3(1.0 / 2.2)); +} + // Les passes de la boucle unique de `cursor_model` (cf. HLSL : un seul appel de `model_eval`). constant int STAGE_MARCH = 0; constant int STAGE_NORMAL = 1; @@ -2408,14 +2528,18 @@ static float4 cursor_model(float2 local, constant Layer &layer, if (cov_s > 0.0) { float3 c; - if (mat > PRISM_MAT - 0.5) + float3 tl = lamp - q; + float fall = SCULPT_LAMP_DIST * SCULPT_LAMP_DIST / dot(tl, tl); + if (abs(mat - PRISM_MAT) < 0.5) { c = prism_shade(q, n, ray, hc, t_best / dlen, l, fill, nz, hz, tip, unit, f, layer, texFrame); } + else if (mat > GLASS_MAT - 0.5) + { + c = glass_shade(q, n, ray, normalize(tl), fall, l, fill, nz, hz, tip, unit, f, layer, texFrame); + } else { - float3 tl = lamp - q; - float fall = SCULPT_LAMP_DIST * SCULPT_LAMP_DIST / dot(tl, tl); c = model_shade(q, n, ray, normalize(tl), fall, sh, ao, mat, l, fill, layer, texSdf, texImg); } acc += float4(c * cov_s, cov_s); @@ -2525,7 +2649,7 @@ static float4 cursor_model(float2 local, constant Layer &layer, plane_next = true; } } - if (stage == STAGE_NORMAL && mat > PRISM_MAT - 0.5) + if (stage == STAGE_NORMAL && abs(mat - PRISM_MAT) < 0.5) { n = prism_normal(hc, ray); k = 0; @@ -2562,7 +2686,7 @@ static float4 cursor_model(float2 local, constant Layer &layer, { sub = 3; } - if (k == 0 && mat > 7.5) + if (k == 0 && mat > 7.5 && mat < PRISM_MAT + 0.5) { int ps = prism_shape(layer); if (ps >= 0) @@ -2643,11 +2767,82 @@ static float4 cursor_model(float2 local, constant Layer &layer, } float w = 1.0 / max(shaded, 1); - float shadow = inside * max(dropped * MODEL_SHADOW_ALPHA, contact * MODEL_CONTACT_ALPHA); + // La lentille de Glass Lens laisse passer la lumière : son ombre est plus claire. + float clear = sculpt_id(layer) > 10 ? GLASS_SHADOW : 1.0; + float shadow = inside * clear * max(dropped * MODEL_SHADOW_ALPHA, contact * MODEL_CONTACT_ALPHA); float a = acc.a * w * layer.color.a; return float4(acc.rgb * w * layer.color.a, a + (1.0 - a) * shadow * layer.color.a); // prémultiplié, ombre noire } +// ============ Verre à plat (mode 19) ============ (cf. HLSL, `cursor_glass`) +static float4 cursor_glass(float2 local, float2 pout, constant Layer &layer, + texture2d texFrame) +{ + if (pout.x < layer.dst_prev.x || pout.x > layer.dst_prev.x + layer.dst_prev.z || + pout.y < layer.dst_prev.y || pout.y > layer.dst_prev.y + layer.dst_prev.w) + { + return float4(0.0); + } + float3 r = quad_inverse(local, layer.fx.xy, layer.fx.zw, layer.src_prev.xy, layer.src_prev.zw, layer.mb.x); + if (r.z < 0.5) + { + return float4(0.0); + } + float2 m = layer.color.rg + saturate(r.xy) * sprite_size(layer); + float2 p = float2(m.x, -m.y) / SCULPT_SCALE; + float px = 1.0 / max(layer.color.b * SCULPT_SCALE, 1e-3); + int shape = (sculpt_id(layer) - 1) % 2; + float2 g = float2(0.0); + float2 gd = float2(0.0); + float e = 0.25 * px; + for (int k = 0; k < 3; k++) + { + float2 v = s_glass2(p + (k == 1 ? float2(e, 0.0) : (k == 2 ? float2(0.0, e) : float2(0.0))), shape); + if (k == 0) g = v; + else if (k == 1) gd.x = v.y; + else gd.y = v.y; + } + float cov = saturate(0.5 - g.x / px); + if (cov <= 0.0) + { + return float4(0.0); + } + float2 out_dir = (gd - g.y) / e; + out_dir /= max(length(out_dir), 1e-4); + float2 relief = s_glass_relief(g.y); + float2 dir = float2(out_dir.x, -out_dir.y); + float3 n = normalize(float3(-relief.y * dir, 1.0)); + float3 rd = float3(0.0, 0.0, -1.0); + bool rim = g.y > GLASS_LINE; + float depth = rim ? GLASS_RIM - GLASS_LINE : GLASS_TOP - SCULPT_HOVER + relief.x; + float3 trans = float3(0.0); + for (int ch = 0; ch < 3; ch++) + { + float3 mask = float3(float(ch == 0), float(ch == 1), float(ch == 2)); + float ior = GLASS_IOR + GLASS_DISPERSION * float(ch - 1); + float3 d = refract(rd, n, 1.0 / ior); + float3 d2 = refract(d, float3(0.0, 0.0, 1.0), ior); + float2 off = d.xy * depth / max(-d.z, 0.05); + if (!rim && dot(d2, d2) > 1e-8) + { + off += d2.xy * GLASS_GAP_FLAT / max(-d2.z, 0.05); + } + off *= SCULPT_SCALE * layer.src.xy; + trans += glass_smear(pout + off, pout, texFrame) * mask; + } + float3 col = glass_light(trans, n, rd, MODEL_LIGHT, 1.0, MODEL_LIGHT, MODEL_FILL); + float edge_k = saturate(1.0 - min(g.y, GLASS_LINE - g.y) / (0.25 * GLASS_LINE)); + float side = g.y < 0.5 * GLASS_LINE ? -1.0 : 1.0; + float3 nl = normalize(float3(side * edge_k * dir, 1.0)); + float3 hl = normalize(MODEL_LIGHT + float3(0.0, 0.0, 1.0)); + float3 line_col = s_lin(0.05, 0.055, 0.07) * (0.6 + 0.5 * saturate(dot(nl, MODEL_LIGHT))) + + s_lin(1.0, 0.97, 0.93) * 0.8 * edge_k * pow(saturate(dot(nl, hl)), 40.0); + float in_line = saturate(0.5 + g.y / px) * saturate(0.5 - (g.y - GLASS_LINE) / px); + col = mix(col, line_col, in_line); + float a = cov * layer.color.a; + return float4(pow(saturate(col), float3(1.0 / 2.2)) * a, a); // prémultiplié +} + // ============ Impact du clic (mode 16) ============ // Port ligne pour ligne de `cursor_impact` (HLSL), dont les commentaires font foi. static float4 cursor_impact(float2 local, constant Layer &layer) @@ -3243,6 +3438,17 @@ fragment float4 ps_main(VSOut i [[stage_in]], // par le repli du mode 18, qui garde texture(2) pour son rendu isolé. texture2d texDof [[texture(5)]]) { + // mode 19 : VERRE À PLAT de Glass Lens (`cursor_glass`). Testé avant le mode 18, dont la + // branche n'a pas de borne haute. C'est un modèle, compilé avec les modes 15 à 17. + if (layer.mode > 18.5) + { +#ifdef LAYER_MODELS + return cursor_glass(i.local, i.pout, layer, texDof); +#else + return float4(0.0); +#endif + } + // mode 18 : l'écran CADRÉ (ombre, cadre, métrage, appareil) flouté comme UN objet rigide // (`FrameGeometry::screen_trail`), port 1:1 du HLSL. texImg = son rendu isolé, prémultiplié, // à la taille de la sortie. À plat, sa boîte va de `dst_prev` (frame précédente) à `fx` diff --git a/crates/compositor/src/vk_shaders/layer.wgsl b/crates/compositor/src/vk_shaders/layer.wgsl index ecf4960a1..48902d420 100644 --- a/crates/compositor/src/vk_shaders/layer.wgsl +++ b/crates/compositor/src/vk_shaders/layer.wgsl @@ -880,6 +880,54 @@ fn s_rimmed(p: vec3, theme: i32, shape: i32) -> vec2 { return s_opu(r, vec2(s_ellipsoid(e, vec3(0.075, 0.13, 0.1)) * rs, 5.0)); } +// ---- Glass Lens ---- (cf. HLSL : une lentille de verre dans un trait sombre, un liseré de verre +// au-delà ; `s_glass` en volume, `cursor_glass` à plat, `glass_shade` pour le verre.) +const GLASS_LINE: f32 = 0.04; +const GLASS_RIM: f32 = 0.085; +const GLASS_TOP: f32 = 0.18; +const GLASS_DOME: f32 = 0.03; +const GLASS_RISE: f32 = 0.08; +const GLASS_IOR: f32 = 1.5; +const GLASS_DISPERSION: f32 = 0.012; +const GLASS_MAT: f32 = 10.0; +const GLASS_GAP_FLAT: f32 = 0.15; +const GLASS_SMEAR: f32 = 0.15; +const GLASS_LIFT: f32 = 0.02; +const GLASS_SHADOW: f32 = 0.6; + +// x = la silhouette, y = la lentille (distances signées du prototype, négatives dedans). +fn s_glass2(p: vec2, shape: i32) -> vec2 { + if shape == 0 { + let poly = s_rim_poly(p + vec2(0.0, GLASS_RIM - 0.06), 0); + return vec2(poly - GLASS_RIM, poly); + } + let q = p + vec2(0.0, GLASS_RIM - RIM_GLOVE_R[5].z); + let v = s_rim_glove(q, 1, s_rim_poly(q, 14) - 0.05); + return vec2(v.x - GLASS_RIM, v.y); +} + +// La hauteur du verre au-dessus de GLASS_TOP selon la distance `d` à la lentille, et sa pente. +fn s_glass_relief(d: f32) -> vec2 { + if d < 0.0 { + let u = saturate(-d / GLASS_RISE); + return vec2(GLASS_DOME * u * (2.0 - u), -2.0 * GLASS_DOME * (1.0 - u) / GLASS_RISE); + } + let w = GLASS_RIM - GLASS_LINE; + let x = saturate((d - GLASS_LINE) / w); + let s = sqrt(max(1.0 - x * x, 0.05)); + return vec2(w * (s - 1.0), -x / s); +} + +fn s_glass(p: vec3, shape: i32) -> vec2 { + let g = s_glass2(p.xy, shape); + let half_h = 0.5 * (GLASS_TOP - SCULPT_HOVER); + let slab = s_extrude(g.x, p.z - SCULPT_HOVER - half_h, half_h, min(GLASS_RIM - GLASS_LINE, half_h)); + let u = saturate(-g.y / GLASS_RISE); + let dome = 0.8 * s_extrude(g.y, p.z - GLASS_TOP, 0.009 + GLASS_DOME * u * (2.0 - u), 0.008); + let band = s_extrude(abs(g.y - 0.5 * GLASS_LINE) - 0.5 * GLASS_LINE, p.z - GLASS_TOP, 0.016, 0.008); + return s_opu(vec2(min(slab, dome), GLASS_MAT), vec2(band, 5.0)); +} + // Pixel Candy : tables générées par scripts/generate-pixel-candy-voxels.mjs (cf. HLSL). // const PIX_BODY = array(1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 127, 247, 243, 480, 192, 48, 120, 120, 120, 504, 4088, 32760, 65534, 65535, 65535, 65534, 32766, 32764, 16380, 16376, 16376); @@ -1102,6 +1150,9 @@ fn sculpt_proto(p: vec3, theme: i32, shape: i32) -> vec2 { if theme == 3 { return s_voxels(p, shape); } + if theme == 5 { + return s_glass(p, shape); + } return s_rimmed(p, theme, shape); } @@ -1236,6 +1287,9 @@ fn sculpt_material(mat: f32, p: vec3, theme: i32, shape: i32) -> SculptMat if theme == 1 { return SculptMat(s_lin(0.02, 0.05, 0.33), 0.35, 0.5, 0.05, 0.3); } + if theme == 5 { + return SculptMat(s_lin(0.05, 0.055, 0.07), 0.25, 0.7, 0.0, 0.35); + } if theme == 2 { if (primary && shape == 0) || (mat > 2.5 && mat < 3.5 && shape == 1) { return SculptMat(s_lin(1.0, 0.40, 0.30), 0.85, 0.08, 0.15, 0.03); @@ -1298,8 +1352,9 @@ fn model_shade(q: vec3, n: vec3, rd: vec3, L: vec3, fall: f3 if id > 0 { let p = sculpt_point(q) - vec3(n.x, -n.y, n.z) * 0.01; m = sculpt_material(mat, p, (id - 1) / 2, (id - 1) % 2); - if id == 3 || id == 4 { - // Le serti de Prism Glow, comme un sprite : brillant sur son arrondi seulement. + if id == 3 || id == 4 || id > 10 { + // Le serti de Prism Glow et le trait de Glass Lens, comme un sprite : brillants sur + // leur arrondi seulement. gloss = 1.0 - smoothstep(0.97, 0.995, abs(n.z)); } } else { @@ -1384,25 +1439,36 @@ fn plane_to_world(v: vec3, f: ModelFrame) -> vec3 { return vec3(x * f.c.y + v.z * f.s.y, y * f.c.x - z * f.s.x, y * f.s.x + z * f.c.x); } -// L'image composee la ou le rayon retombe sur le plan (cf. HLSL) : sa copie au binding 1. -fn prism_screen(q: vec3, d: vec3, nz: vec3, hz: f32, tip: vec3, unit: f32, f: ModelFrame) -> vec3 { +// L'uv de sortie du point ou le rayon (q, d) du modele retombe sur le plan, (-1, -1) s'il n'y +// retombe pas (cf. HLSL). +fn screen_uv(q: vec3, d: vec3, nz: vec3, hz: f32, tip: vec3, unit: f32, f: ModelFrame) -> vec2 { let denom = dot(d, nz); if denom > -1e-4 { - return SCULPT_SCREEN * 0.2; + return vec2(-1.0); } let g = q + d * ((hz - dot(q, nz)) / denom); let w = plane_to_world(tip + unit * model_to_plane(g, f), f); let k = 1.0 - w.z / layer.src.z; if k < 1e-3 { - return SCULPT_SCREEN * 0.2; + return vec2(-1.0); } - let uv = layer.dst.xy + ((w.xy + layer.mb.zw) / k - layer.src.xy) / layer.quad_px * layer.dst.zw; + return layer.dst.xy + ((w.xy + layer.mb.zw) / k - layer.src.xy) / layer.quad_px * layer.dst.zw; +} + +// L'image composee en `uv` : sa copie au binding 1, en lineaire ; hors de l'image, l'ecran sombre +// du studio. +fn screen_at(uv: vec2) -> vec3 { if any(uv < vec2(0.0)) || any(uv > vec2(1.0)) { return SCULPT_SCREEN * 0.2; } return pow(textureSampleLevel(texY, samp, uv, 0.0).rgb, vec3(2.2)); } +// L'image composee la ou le rayon retombe sur le plan (cf. HLSL). +fn prism_screen(q: vec3, d: vec3, nz: vec3, hz: f32, tip: vec3, unit: f32, f: ModelFrame) -> vec3 { + return screen_at(screen_uv(q, d, nz, hz, tip, unit, f)); +} + fn prism_shade(p: vec3, n: vec3, rd: vec3, h: i32, px: f32, l: vec3, fill: vec3, nz: vec3, hz: f32, tip: vec3, unit: f32, f: ModelFrame) -> vec3 { let shape = prism_shape(); @@ -1466,6 +1532,53 @@ fn prism_shade(p: vec3, n: vec3, rd: vec3, h: i32, px: f32, l: ve return model_tonemap(col); } +// ---- Le verre de Glass Lens ---- (cf. HLSL) + +// Ce que le verre ajoute a ce qu'il transmet : Fresnel, l'eclat de la lampe, le liseré de lumiere. +fn glass_light(trans: vec3, n: vec3, rd: vec3, L: vec3, fall: f32, l: vec3, + fill: vec3) -> vec3 { + let c = saturate(-dot(rd, n)); + let F = prism_fresnel(c, GLASS_IOR); + let ndh = saturate(dot(n, normalize(L - rd))); + let ndl = dot(n, L); + let key = s_lin(1.0, 0.97, 0.93) * 2.1 * fall; + let spe = (pow(ndh, 900.0) * 5.0 + pow(ndh, 40.0) * 0.12) * saturate(ndl * 4.0); + let edge = pow(1.0 - c, 4.0) * (0.25 + 0.75 * saturate(ndl + 0.3)); + let col = (1.0 - F) * (trans * s_lin(0.97, 0.985, 1.0) + vec3(GLASS_LIFT)) + + F * model_env(reflect(rd, n), 0.03, l, fill); + return col + key * spe + s_lin(0.92, 0.96, 1.0) * edge * 0.6; +} + +// L'image en `uv`, moyennee le long de la refraction depuis `uv0` (cf. HLSL). +fn glass_smear(uv: vec2, uv0: vec2) -> vec3 { + let s = select(vec2(0.0), (uv - uv0) * GLASS_SMEAR, all(uv0 >= vec2(0.0))); + return (screen_at(uv) + screen_at(uv - s) + screen_at(uv + s)) / 3.0; +} + +fn glass_shade(q: vec3, n: vec3, rd: vec3, L: vec3, fall: f32, l: vec3, + fill: vec3, nz: vec3, hz: f32, tip: vec3, unit: f32, f: ModelFrame) -> vec3 { + let zb = -model_thick(); + let uv0 = screen_uv(q, rd, nz, hz, tip, unit, f); + var trans = vec3(0.0); + for (var ch = 0; ch < 3; ch++) { + let mask = vec3(f32(ch == 0), f32(ch == 1), f32(ch == 2)); + let ior = GLASS_IOR + GLASS_DISPERSION * f32(ch - 1); + let d = refract(rd, n, 1.0 / ior); + var seen = model_env(d, 0.05, l, fill); + if d.z < -1e-4 { + let qb = q + d * ((zb - q.z) / d.z); + let d2 = refract(d, vec3(0.0, 0.0, 1.0), ior); + if dot(d2, d2) < 1e-8 { + seen = model_env(reflect(d, vec3(0.0, 0.0, 1.0)), 0.05, l, fill); + } else { + seen = glass_smear(screen_uv(qb, d2, nz, hz, tip, unit, f), uv0); + } + } + trans = trans + seen * mask; + } + return pow(saturate(glass_light(trans, n, rd, L, fall, l, fill)), vec3(1.0 / 2.2)); +} + // Les passes de la boucle unique de `cursor_model` (cf. HLSL : un seul appel de `model_eval`). const STAGE_MARCH: i32 = 0; const STAGE_NORMAL: i32 = 1; @@ -1564,11 +1677,13 @@ fn cursor_model(local: vec2) -> vec4 { if stage == STAGE_SHADE { if cov_s > 0.0 { var c: vec3; - if mat > PRISM_MAT - 0.5 { + let tl = lamp - q; + let fall = SCULPT_LAMP_DIST * SCULPT_LAMP_DIST / dot(tl, tl); + if abs(mat - PRISM_MAT) < 0.5 { c = prism_shade(q, n, ray, hc, t_best / dlen, l, fill, nz, hz, tip, unit, f); + } else if mat > GLASS_MAT - 0.5 { + c = glass_shade(q, n, ray, normalize(tl), fall, l, fill, nz, hz, tip, unit, f); } else { - let tl = lamp - q; - let fall = SCULPT_LAMP_DIST * SCULPT_LAMP_DIST / dot(tl, tl); c = model_shade(q, n, ray, normalize(tl), fall, sh, ao, mat, l, fill); } acc = acc + vec4(c * cov_s, cov_s); @@ -1653,7 +1768,7 @@ fn cursor_model(local: vec2) -> vec4 { plane_next = true; } } - if stage == STAGE_NORMAL && mat > PRISM_MAT - 0.5 { + if stage == STAGE_NORMAL && abs(mat - PRISM_MAT) < 0.5 { // Le cristal : la normale de sa facette, ni occlusion ni ombre propre ; un bord // reel a moins d'un pixel appelle les trois rayons de plus. n = prism_normal(hc, ray); @@ -1681,7 +1796,7 @@ fn cursor_model(local: vec2) -> vec4 { if m.y != mat || abs(d - d_best) > 0.02 * t_best / dlen { sub = 3; } - if k == 0 && mat > 7.5 { + if k == 0 && mat > 7.5 && mat < PRISM_MAT + 0.5 { // Le serti de Prism Glow au bord du cristal : son contour a moins d'un pixel. let ps = prism_shape(); if ps >= 0 { @@ -1744,11 +1859,80 @@ fn cursor_model(local: vec2) -> vec4 { } let w = 1.0 / f32(max(shaded, 1)); - let shadow = inside * max(dropped * MODEL_SHADOW_ALPHA, contact * MODEL_CONTACT_ALPHA); + // La lentille de Glass Lens laisse passer la lumiere : son ombre est plus claire. + let clear = select(1.0, GLASS_SHADOW, sculpt_id() > 10); + let shadow = inside * clear * max(dropped * MODEL_SHADOW_ALPHA, contact * MODEL_CONTACT_ALPHA); let a = acc.a * w * layer.color.a; return vec4(acc.rgb * w * layer.color.a, a + (1.0 - a) * shadow * layer.color.a); // premultiplie, ombre noire } +// ============ Verre a plat (mode 19) ============ (cf. HLSL, `cursor_glass`) : la copie de +// l'image composee au binding 1. +fn cursor_glass(local: vec2, pout: vec2) -> vec4 { + if pout.x < layer.dst_prev.x || pout.x > layer.dst_prev.x + layer.dst_prev.z || + pout.y < layer.dst_prev.y || pout.y > layer.dst_prev.y + layer.dst_prev.w { + return vec4(0.0); + } + let r = quad_inverse(local, layer.fx.xy, layer.fx.zw, layer.src_prev.xy, layer.src_prev.zw, layer.mb.x); + if r.z < 0.5 { + return vec4(0.0); + } + let m = layer.color.rg + saturate(r.xy) * sprite_size(); + let p = vec2(m.x, -m.y) / SCULPT_SCALE; + let px = 1.0 / max(layer.color.b * SCULPT_SCALE, 1e-3); + let shape = (sculpt_id() - 1) % 2; + var g = vec2(0.0); + var gd = vec2(0.0); + let e = 0.25 * px; + for (var k = 0; k < 3; k++) { + let o = select(select(vec2(0.0), vec2(0.0, e), k == 2), vec2(e, 0.0), k == 1); + let v = s_glass2(p + o, shape); + if k == 0 { + g = v; + } else if k == 1 { + gd.x = v.y; + } else { + gd.y = v.y; + } + } + let cov = saturate(0.5 - g.x / px); + if cov <= 0.0 { + return vec4(0.0); + } + var out_dir = (gd - vec2(g.y)) / e; + out_dir = out_dir / max(length(out_dir), 1e-4); + let relief = s_glass_relief(g.y); + let dir = vec2(out_dir.x, -out_dir.y); + let n = normalize(vec3(-relief.y * dir, 1.0)); + let rd = vec3(0.0, 0.0, -1.0); + let rim = g.y > GLASS_LINE; + let depth = select(GLASS_TOP - SCULPT_HOVER + relief.x, GLASS_RIM - GLASS_LINE, rim); + var trans = vec3(0.0); + for (var ch = 0; ch < 3; ch++) { + let mask = vec3(f32(ch == 0), f32(ch == 1), f32(ch == 2)); + let ior = GLASS_IOR + GLASS_DISPERSION * f32(ch - 1); + let d = refract(rd, n, 1.0 / ior); + let d2 = refract(d, vec3(0.0, 0.0, 1.0), ior); + var off = d.xy * depth / max(-d.z, 0.05); + if !rim && dot(d2, d2) > 1e-8 { + off = off + d2.xy * GLASS_GAP_FLAT / max(-d2.z, 0.05); + } + off = off * SCULPT_SCALE * layer.src.xy; + trans = trans + glass_smear(pout + off, pout) * mask; + } + var col = glass_light(trans, n, rd, MODEL_LIGHT, 1.0, MODEL_LIGHT, MODEL_FILL); + let edge_k = saturate(1.0 - min(g.y, GLASS_LINE - g.y) / (0.25 * GLASS_LINE)); + let side = select(1.0, -1.0, g.y < 0.5 * GLASS_LINE); + let nl = normalize(vec3(side * edge_k * dir, 1.0)); + let hl = normalize(MODEL_LIGHT + vec3(0.0, 0.0, 1.0)); + let line_col = s_lin(0.05, 0.055, 0.07) * (0.6 + 0.5 * saturate(dot(nl, MODEL_LIGHT))) + + s_lin(1.0, 0.97, 0.93) * 0.8 * edge_k * pow(saturate(dot(nl, hl)), 40.0); + let in_line = saturate(0.5 + g.y / px) * saturate(0.5 - (g.y - GLASS_LINE) / px); + col = mix(col, line_col, in_line); + let a = cov * layer.color.a; + return vec4(pow(saturate(col), vec3(1.0 / 2.2)) * a, a); // premultiplie +} + // ---- Impact du clic (mode 16) ---- // Port ligne pour ligne de `cursor_impact` (HLSL), dont les commentaires font foi. fn cursor_impact(local: vec2) -> vec4 { @@ -2665,6 +2849,13 @@ fn fs_main(i: VsOut) -> @location(0) vec4 { } // Mode 17 -- cadre d'appareil modelise (`device_frame`). return device_frame(i.local); + } else if layer.mode > 18.5 { + // Mode 19 -- verre a plat de Glass Lens (`cursor_glass`) : un modele, que seul le + // pipeline `LAYER_MODELS` compile, comme les modes 15 a 17. + if !LAYER_MODELS { + return vec4(0.0, 0.0, 0.0, 0.0); + } + return cursor_glass(i.local, i.pout); } else if layer.mode > 17.5 { // Mode 18 -- ecran cadre floute en bloc (`screen_trail`). return screen_trail(i.pout); diff --git a/crates/compositor/tests/cursor_model_render.rs b/crates/compositor/tests/cursor_model_render.rs index 70151158f..68f940cbb 100644 --- a/crates/compositor/tests/cursor_model_render.rs +++ b/crates/compositor/tests/cursor_model_render.rs @@ -83,6 +83,14 @@ fn gpu() -> Option { enum Tint { Blue, Orange, + /// Pour l'œil, pas pour les masques : un damier clair et sombre sur un dégradé de teintes, où + /// la réfraction d'un verre se lit d'un coup. + Checker, + /// Pour l'œil aussi : une page claire, des lignes de texte et un bouton bleu, ce qu'une démo + /// filme le plus souvent. + Page, + /// La même page en thème sombre : là où un trait noir ne se voit plus. + DarkPage, } /// Une frame NV12 synthétique : `data[0]` = la texture, `data[1]` = tranche 0, comme une frame @@ -97,9 +105,21 @@ struct FakeFrame { impl FakeFrame { fn new(gpu: &Gpu, tint: Tint) -> FakeFrame { let (w, h) = SRC; + let checker = matches!(tint, Tint::Checker); + let page = matches!(tint, Tint::Page | Tint::DarkPage); + let dark = matches!(tint, Tint::DarkPage); let (u, v) = match tint { Tint::Blue => (150, 120), - Tint::Orange => (100, 170), + Tint::Orange | Tint::Checker => (100, 170), + Tint::Page | Tint::DarkPage => (128, 128), + }; + // Le bouton de la page : un rect bleu, texte blanc. + let button = |row: usize, col: usize| (150..190).contains(&row) && (330..470).contains(&col); + // Une ligne de texte sur trois rangées de 18 px, en mots de largeur variable. + let text = |row: usize, col: usize| { + let (line, y) = (row / 18, row % 18); + let word = (col + line * 37) / 23; + (5..11).contains(&y) && (col + line * 37) % 23 < 4 + (word * 7 + line * 3) % 15 && line % 5 != 4 }; let desc = D3D11_TEXTURE2D_DESC { Width: w, @@ -124,12 +144,26 @@ impl FakeFrame { for row in 0..h as usize { for col in 0..w as usize { let bar = row % 24 >= 8 && row % 24 < 12 && (col / 40) % 3 != 2; - *dst.add(row * pitch + col) = if bar { 90 } else { 150 }; + let luma = match (checker, (row / 10 + col / 10) % 2 == 0) { + (true, light) => if light { 200 } else { 60 }, + _ if page && button(row, col) => if text(row, col) { 235 } else { 105 }, + _ if page && dark => if text(row, col) { 200 } else { 28 }, + _ if page => if text(row, col) { 45 } else { 232 }, + (false, _) => if bar { 90 } else { 150 }, + }; + *dst.add(row * pitch + col) = luma; } } for row in 0..(h / 2) as usize { for col in 0..w as usize { let uv = (h as usize + row) * pitch + col; + let (u, v) = if checker { + ((70 + col * 120 / w as usize) as u8, (190 - row * 2 * 120 / h as usize) as u8) + } else if page && button(2 * row, col) { + (175, 105) + } else { + (u, v) + }; *dst.add(uv) = if col % 2 == 0 { u } else { v }; } } @@ -148,11 +182,6 @@ impl FakeFrame { } } -/// Les seize sprites livrés, au format `cursorSprites` de la scène. -fn sprites_json() -> String { - sprites_json_with(None) -} - /// Le dossier des curseurs livrés, `public/cursors`. fn cursors_dir() -> String { std::path::Path::new(env!("CARGO_MANIFEST_DIR")) @@ -163,27 +192,38 @@ fn cursors_dir() -> String { /// Les thèmes d'origine et les hotspots de leur flèche et de leur main plates (`CURSOR_THEMES`, /// `src/lib/cursor/cursorThemes.ts`, sur 32). -const SCULPTED: [(&str, [f32; 2], [f32; 2]); 5] = [ +const SCULPTED: [(&str, [f32; 2], [f32; 2]); 6] = [ ("studio-ink", [6.2304, 2.0992], [12.848, 2.0704]), ("prism-glow", [6.3456, 2.0672], [11.968, 2.0352]), ("pop-coral", [10.4768, 2.1792], [12.3456, 2.0]), ("pixel-candy", [6.5, 2.0], [10.75, 2.0]), ("star-sprout", [4.7232, 2.1152], [13.1712, 2.0384]), + ("glass-lens", [6.2304, 2.0992], [12.848, 2.0704]), ]; -/// `sprites_json`, avec la flèche et la main plates du thème d'origine `sculpted` et leur curseur -/// sculpté, comme les passe `resolveCursorSprites` en 3D. -fn sprites_json_with(sculpted: Option<&str>) -> String { +/// Les thèmes de verre : le cristal de Prism Glow, la lentille de Glass Lens. +fn is_glass(theme: &str) -> bool { + matches!(theme, "prism-glow" | "glass-lens") +} + +/// Les seize sprites livrés au format `cursorSprites` de la scène, avec la flèche et la main +/// plates du thème d'origine `sculpted`, comme les passe `resolveCursorSprites` : leur curseur +/// sculpté en 3D, et le verre à plat de Glass Lens dans tous les cas. +fn sprites_json_with(sculpted: Option<&str>, model3d: bool) -> String { let dir = cursors_dir(); let theme = sculpted.map(|name| *SCULPTED.iter().find(|(t, ..)| *t == name).expect("thème d'origine")); let entries: Vec = STATES .iter() .map(|(key, [hx, hy])| match (theme, *key) { - (Some((name, [ax, ay], _)), "arrow") | (Some((name, _, [ax, ay])), "pointer") => format!( - r#""{key}":{{"path":"{dir}/{name}/{key}.png","hotspotX":{},"hotspotY":{},"sculpt":"{name}/{key}"}}"#, - ax / 32.0, - ay / 32.0 - ), + (Some((name, [ax, ay], _)), "arrow") | (Some((name, _, [ax, ay])), "pointer") => { + let sculpt = if model3d { format!(r#","sculpt":"{name}/{key}""#) } else { String::new() }; + let glass = if name == "glass-lens" { format!(r#","glass":"{name}/{key}""#) } else { String::new() }; + format!( + r#""{key}":{{"path":"{dir}/{name}/{key}.png","hotspotX":{},"hotspotY":{}{sculpt}{glass}}}"#, + ax / 32.0, + ay / 32.0 + ) + } _ => format!(r#""{key}":{{"path":"{dir}/default/{key}.png","hotspotX":{hx},"hotspotY":{hy}}}"#), }) .collect(); @@ -192,12 +232,17 @@ fn sprites_json_with(sculpted: Option<&str>) -> String { /// `model3d` : `None` = clé absente (payload d'avant le réglage). fn scene_json(rotation: &str, model3d: Option, theme: &str, motion_blur: f32, size: f32) -> String { - scene_json_with(rotation, model3d, theme, motion_blur, size, &sprites_json()) + scene_json_with(rotation, model3d, theme, motion_blur, size, &sprites_json_with(None, false)) } /// Un thème d'origine en 3D : sa flèche et sa main sculptées. fn sculpted_scene_json(rotation: &str, theme: &str, size: f32) -> String { - scene_json_with(rotation, Some(true), theme, 0.0, size, &sprites_json_with(Some(theme))) + scene_json_with(rotation, Some(true), theme, 0.0, size, &sprites_json_with(Some(theme), true)) +} + +/// Glass Lens, 3D éteinte : son verre à plat. +fn glass_scene_json(rotation: &str, size: f32) -> String { + scene_json_with(rotation, Some(false), "glass-lens", 0.0, size, &sprites_json_with(Some("glass-lens"), false)) } fn scene_json_with( @@ -799,7 +844,7 @@ fn the_sculpted_cursors_stand_at_the_hotspot() { let (hover, p) = render(&comp, &blue, &json, &still); let hover_b = render(&comp, &orange, &json, &still).0; save(&format!("sculpt-{theme}-{state}"), &hover); - let glass = theme == "prism-glow"; + let glass = is_glass(theme); let mask = if glass { covered_mask(&hover, &hover_b, &bare, &bare_orange) } else { opaque_mask(&hover, &hover_b, &bare) }; let (mut body, mut c, mut near) = (0usize, [0.0f32; 2], f32::MAX); for y in 0..720 { @@ -848,6 +893,75 @@ fn the_sculpted_cursors_stand_at_the_hotspot() { assert!(failures.is_empty(), "{failures:#?}"); } +/// Glass Lens, 3D éteinte : son verre à plat (mode 19), sans ombre, donc tout pixel changé est le +/// sien. La flèche et la main sont là, pointe au hotspot et corps en bas à droite ; l'écran se +/// voit au travers (une bonne part du corps change avec sa teinte) ; le trait les cerne (des +/// pixels sombres, les mêmes sur les deux teintes) ; et le verre réfracte : il déplace les barres +/// de l'écran, si bien que des pixels qui laissent voir l'écran n'y montrent pas le pixel d'en +/// dessous. +#[test] +fn the_flat_glass_lens_refracts_the_picture() { + let Some(gpu) = gpu() else { return }; + let comp = Compositor::new_sized(&gpu, 1280, 720).expect("compositor"); + let (blue, orange) = (FakeFrame::new(&gpu, Tint::Blue), FakeFrame::new(&gpu, Tint::Orange)); + let bare = render_any(&comp, &blue, &hidden_json("null"), &resting("glass-bare", false)).0; + let bare_orange = render_any(&comp, &orange, &hidden_json("null"), &resting("glass-bare", false)).0; + let mut failures = Vec::new(); + for state in ["arrow", "pointer"] { + let json = glass_scene_json("null", 5.0); + let still = resting_at(&format!("glass-flat-{state}"), Some(state), false, 0.5); + let (on_blue, p) = render(&comp, &blue, &json, &still); + let on_orange = render(&comp, &orange, &json, &still).0; + save(&format!("glass-flat-{state}"), &on_blue); + let rgb = |img: &[u8], i: usize| [img[i * 4], img[i * 4 + 1], img[i * 4 + 2], 255]; + let (mut body, mut c, mut near) = (0usize, [0.0f32; 2], f32::MAX); + let (mut through, mut line, mut moved) = (0usize, 0usize, 0usize); + for i in 0..1280 * 720 { + let (a, b) = (rgb(&on_blue, i), rgb(&on_orange, i)); + if a == rgb(&bare, i) && b == rgb(&bare_orange, i) { + continue; + } + let (x, y) = ((i % 1280) as f32, (i / 1280) as f32); + body += 1; + c = [c[0] + x, c[1] + y]; + near = near.min((x - p.tip[0]).hypot(y - p.tip[1])); + if a != b { + through += 1; + moved += ((luma(a) - luma(rgb(&bare, i))).abs() > 25.0) as usize; + } else if luma(a) < 60.0 { + line += 1; + } + } + let c = [c[0] / body.max(1) as f32, c[1] / body.max(1) as f32]; + let u = p.unit; + println!( + "glass-lens/{state} à plat : unité {u:.1} px, corps {body} px, pointe à {near:.1} px du hotspot, \ + centroïde {c:?} pour la pointe {:?}, {through} px laissent voir l'écran, {line} px de trait, \ + {moved} px déplacés", + p.tip + ); + if (body as f32) < 0.12 * u * u { + failures.push(format!("glass-lens/{state} : {body} px de corps pour {u:.0} px d'unité")); + } + if near > 0.08 * u { + failures.push(format!("glass-lens/{state} : le verre est à {near:.1} px du hotspot")); + } + if !(c[0] > p.tip[0] && c[1] > p.tip[1] + 0.2 * u) { + failures.push(format!("glass-lens/{state} : corps en {c:?}, pas en bas à droite de {:?}", p.tip)); + } + if through * 10 < body * 5 { + failures.push(format!("glass-lens/{state} : l'écran ne se voit que sur {through} px")); + } + if line * 20 < body { + failures.push(format!("glass-lens/{state} : {line} px de trait seulement")); + } + if moved * 50 < through { + failures.push(format!("glass-lens/{state} : le verre ne déplace l'écran que sur {moved} px")); + } + } + assert!(failures.is_empty(), "{failures:#?}"); +} + /// Planches à regarder (opt-in, `OPENSCREEN_CURSOR3D_OUT`) : les seize états en l'air sur un /// écran à plat, chacun à côté de son sprite plat ; la flèche, la main et le I posés sur un écran /// incliné ; et les grandes flèches (taille 8) qui servent à la comparaison avec le modèle @@ -902,6 +1016,35 @@ fn contact_sheets() { } sculpted.save(format!("{dir}/sculpted.png")).expect("planche"); + // Glass Lens à la taille par défaut, sur une page claire puis sombre : son verre à plat (3D + // éteinte, sans clic : le sprite plat rapetisse au clic) sur l'écran droit puis incliné, et son + // modèle 3D dans les mêmes cases. + let checker = FakeFrame::new(&gpu, Tint::Checker); + let page = FakeFrame::new(&gpu, Tint::Page); + let dark_page = FakeFrame::new(&gpu, Tint::DarkPage); + let mut glass = image::RgbaImage::new(4 * CELL, 4 * CELL); + for (row, screen) in [&page, &dark_page].into_iter().enumerate() { + for (col, (state, rotation, click)) in cases.iter().enumerate() { + let still = resting_as(&format!("sheet-glass-flat-{col}"), Some(state), false); + let (rgba, p) = render(&comp, screen, &glass_scene_json(rotation, 3.6), &still); + let y = (2 * row as u32 * CELL) as i64; + image::imageops::overlay(&mut glass, &crop(&rgba, p), (col as u32 * CELL) as i64, y); + let track = resting_as(&format!("sheet-glass-{col}"), Some(state), *click); + let (rgba, p) = render(&comp, screen, &sculpted_scene_json(rotation, "glass-lens", 3.6), &track); + image::imageops::overlay(&mut glass, &crop(&rgba, p), (col as u32 * CELL) as i64, y + CELL as i64); + } + } + glass.save(format!("{dir}/glass-lens.png")).expect("planche"); + for (bg, screen) in [("checker", &checker), ("page", &page), ("dark", &dark_page)] { + for state in ["arrow", "pointer"] { + let still = resting_as(&format!("big-glass-{state}"), Some(state), false); + let (rgba, _) = render(&comp, screen, &glass_scene_json("null", 10.0), &still); + save(&format!("big-glass-flat-{state}-{bg}"), &rgba); + let (rgba, _) = render(&comp, screen, &sculpted_scene_json("null", "glass-lens", 10.0), &still); + save(&format!("big-glass-3d-{state}-{bg}"), &rgba); + } + } + let (still, clicked) = (resting("big-still", false), resting("big-clicked", true)); for (name, rotation) in [("flat", "null"), ("iso", r#""iso""#)] { for (case, tr) in [("hover", &still), ("touch", &clicked)] { diff --git a/design/cursors/3d-direction.md b/design/cursors/3d-direction.md index 1205d3174..f715a93cb 100644 --- a/design/cursors/3d-direction.md +++ b/design/cursors/3d-direction.md @@ -3,9 +3,9 @@ `3d-concept.png` is a visual reference, not a render from OpenScreen. With the 3D option on, mode 15 ray-marches the arrow and hand of Studio Ink, Pop -Coral, Pixel Candy and Star Sprout as sculpted models: signed distance functions -written in the compositor's three shaders (HLSL, Metal, WGSL), not a PNG face or -a height map. Prism Glow's arrow and hand are glass crystals: a triangle mesh +Coral, Pixel Candy, Star Sprout and Glass Lens as sculpted models: signed distance +functions written in the compositor's three shaders (HLSL, Metal, WGSL), not a PNG +face or a height map. Prism Glow's arrow and hand are glass crystals: a triangle mesh traced on its drawing, ray-traced in a navy rim. `crates/compositor/src/sculpt.rs` names the ten models and holds their bounding boxes and hotspots. The scene names the model (`"/"`); text, resize, move and the other OS states keep @@ -18,6 +18,7 @@ their built-in art and the compositor's beveled extrusion. | Pop Coral | Cut paper: flat-topped sheets, no rounded bead or gloss. A coral sheet on a navy sheet, a yellow sheet behind them offset down-left, two yellow click dashes. | A yellow sheet on a navy sheet, the navy showing between the fingers, a coral sheet behind offset down-left, two coral click dashes. | | Pixel Candy | Simplified pixel art, one cube per pixel: a plum outline, a pink body with a pale highlight down the lit edge and a darker shade along the outline. The 3D model and the 2D sprite come from the same grid. | The same, a pixel hand: the index up, three knuckles apart, the thumb. | | Star Sprout | Glossy mint cushion framed by the navy outline of its drawing, carrying a star with a face and two leaves. | Ivory glove cushion in the same navy frame, navy ridges between the fingers, a mint cuff and the same star. | +| Glass Lens | A clear glass lens in a flat-topped graphite outline, and beyond it a rounded rim of glass. The picture under it shows through, refracted: magnified by the lens, bent along its edge with a slight dispersion. | The same glass glove, the outline running between the fingers as ridges. | Studio Ink, Pop Coral and Star Sprout keep their drawn outline, as in `3d-concept.png` (and `star-sprout/3d-reference.png` for the Star Sprout hand). @@ -44,6 +45,19 @@ sharp on top, so only blurred pixels show through the glass. The rim is its silhouette extruded, a distance field like the other models: it gives the coverage and the shadows. +Glass Lens takes the Studio Ink arrow and glove (`s_glass2`) and widens their +outline by `GLASS_RIM`: a graphite band of `GLASS_LINE`, then the glass rim. In +volume (`s_glass`), a glass slab runs under the whole silhouette, rounded across +the rim, and the lens rises `GLASS_DOME` above it inside the band. A ray that hits +the glass is refracted per colour channel, crosses to the flat underside of the +slab, leaves it and lands on the picture under the cursor, the same copy of the +composed frame the Prism Glow crystal refracts (`glass_shade`); three samples +along the refraction keep a compressed edge from breaking into sparkles. Its +shadow is lighter than an opaque model's. With the 3D option off, the theme stays +glass: mode 19 (`cursor_glass`) draws the same relief seen face on, its height +read off the same distances (`s_glass_relief`), and refracts the picture the same +way, the air under the slab standing in for the model's hover. + All models share one close lamp: a gradient and a highlight even on flat faces, soft self shadows, ambient occlusion and a studio environment in the reflections, plus the compositor's cast and contact shadows on the screen. The diff --git a/design/cursors/README.md b/design/cursors/README.md index c6cd471c4..99f9b954b 100644 --- a/design/cursors/README.md +++ b/design/cursors/README.md @@ -1,8 +1,9 @@ # Original OpenScreen cursor themes -These five themes replace the removed Sweezy packs. The artwork was created for +These six themes replace the removed Sweezy packs. The artwork was created for OpenScreen as transparent raster images. The PNGs in this directory are the -original high-resolution masters; there is no SVG conversion step. +original high-resolution masters; there is no SVG conversion step. Glass Lens is +the exception: it has no raster master (see below). | Theme | Intent | | --- | --- | @@ -11,6 +12,7 @@ original high-resolution masters; there is no SVG conversion step. | Pop Coral | Warm, playful choice for casual recordings | | Pixel Candy | A small retro option for people who liked pixel packs | | Star Sprout | An original tiny character for people who liked mascot packs | +| Glass Lens | A clear lens of glass in a defined outline: the recording shows through the cursor | Each `source.png` contains an arrow on the left and a hand on the right. Run `node scripts/generate-original-cursor-themes.mjs` to crop, remove low-alpha @@ -26,6 +28,12 @@ picker and the flat cursor keep using the PNGs. Text, resize, move and other states remain state-accurate through the built-in art and receive the shared 3D extrusion. +Glass Lens is glass with the 3D option off too: the compositor draws its arrow +and hand as its model seen face on (mode 19), a lens that refracts the picture +under it, instead of a PNG. Its shapes are the Studio Ink arrow and glove, and +`node scripts/generate-glass-lens-cursor.mjs` draws its picker PNGs from the +same distance fields, read from the shaders, then prints their hotspots. + `contact-sheet.png` shows the sprites enlarged on a light background; `dark-32px.png` shows them at their 32-pixel reference size on a dark background. The 3D modeling direction and the reference sheet the models follow are in diff --git a/design/cursors/requirements.md b/design/cursors/requirements.md index 1cf03d987..88ab1ede1 100644 --- a/design/cursors/requirements.md +++ b/design/cursors/requirements.md @@ -46,6 +46,7 @@ their 3D models. | Pop Coral | Cut paper: a coral sheet on a navy sheet, flat tops, matte; the yellow offset becomes a flat sheet behind; the click dashes become flat pieces. | A yellow sheet on a navy sheet, flat tops, matte; the coral offset becomes a flat sheet behind; the coral click dashes become flat pieces. | | Pixel Candy | Simplified pixel art that reads at 20 px as at full size; the 3D model is one cube per pixel of the same grid as the sprite. | A pixel hand from the same kind of grid: index, three knuckles, thumb. | | Star Sprout | Puffy mint cushion; the navy outline stays as a physical rim (a navy tray and a rounded bead) around it, the star and its leaves in front, each in its own navy rim. | Puffy ivory glove in the same navy rim, with navy ridges between the fingers; separate mint cuff framed in navy; the star and leaves in front, as in `star-sprout/3d-reference.png`. | +| Glass Lens | A glass lens with a defined dark outline and an outer rim of glass, after the macOS glass material: the picture under it is refracted by real shader optics (magnified by the lens, bent and slightly dispersed along its edge), in 3D and, unlike the other themes, in 2D too. | The same, a glass glove with dark ridges between the fingers. | The 2D PNG may keep a drawn contour where it helps readability. Its contour must not be copied blindly onto the 3D material: decide per model whether it diff --git a/electron/native-bridge/services/compositorViewService.test.ts b/electron/native-bridge/services/compositorViewService.test.ts index 4a099a7f9..fad7b74e2 100644 --- a/electron/native-bridge/services/compositorViewService.test.ts +++ b/electron/native-bridge/services/compositorViewService.test.ts @@ -530,6 +530,7 @@ describe("resolveSceneAssetPaths", () => { let originalResourcesPath: PropertyDescriptor | undefined; let originalVitePublic: string | undefined; const themed = CURSOR_THEMES.find((t) => t.assets.arrow); + const glassy = CURSOR_THEMES.find((t) => t.assets.arrow?.glass); beforeEach(() => { resources = fs.mkdtempSync(path.join(os.tmpdir(), "openscreen-scene-assets-")); @@ -540,6 +541,7 @@ describe("resolveSceneAssetPaths", () => { fs.writeFileSync(path.join(modelDir, "selfie_segmentation_landscape.onnx"), "onnx"); const assetPaths = [ ...Object.values(themed?.assets ?? {}).map((asset) => asset.assetPath), + ...Object.values(glassy?.assets ?? {}).map((asset) => asset.assetPath), ...Object.values(DEFAULT_CURSOR_SPRITES).map((s) => s.assetPath), ]; for (const assetPath of assetPaths) { @@ -581,6 +583,7 @@ describe("resolveSceneAssetPaths", () => { hotspotX: number; hotspotY: number; sculpt?: string; + glass?: string; }; // The renderer asks for an effect and knows nothing about the disk; this process answers @@ -690,6 +693,18 @@ describe("resolveSceneAssetPaths", () => { expect(fs.existsSync(arrow.path)).toBe(true); }); + // A glass theme is drawn as glass by the compositor with 3D off as well: its glass model is + // named either way, the sculpted one only in 3D. + it("names a glass theme's glass model with 3D on and off", () => { + if (!glassy) throw new Error("a bundled theme needs a glass arrow"); + for (const model3d of [false, true]) { + const arrow: ResolvedSprite = resolved({ cursor: { theme: glassy.id, model3d } }).cursor + .cursorSprites.arrow; + expect(arrow.glass).toBe(`${glassy.id}/arrow`); + expect(arrow.sculpt).toBe(model3d ? `${glassy.id}/arrow` : undefined); + } + }); + it("fills the states a theme doesn't ship with the built-in art", () => { if (!themed) return; const sprites = resolved({ cursor: { theme: themed.id } }).cursor.cursorSprites; diff --git a/electron/native-bridge/services/compositorViewService.ts b/electron/native-bridge/services/compositorViewService.ts index 6dbfb1461..89581945f 100644 --- a/electron/native-bridge/services/compositorViewService.ts +++ b/electron/native-bridge/services/compositorViewService.ts @@ -101,6 +101,15 @@ export function resolveSceneAssetPath(relativePath: string): string | null { return null; } +/** One cursor sprite as the compositor reads it (`SceneCursorSprite` in `scene.rs`). */ +type SceneCursorSprite = { + path: string; + hotspotX: number; + hotspotY: number; + sculpt?: string; + glass?: string; +}; + /** * The theme's sprite set with every `assetPath` turned into an absolute on-disk path. * @@ -112,11 +121,8 @@ function resolveCursorSpritePaths( themeId: string, asArrow: readonly CursorKind[], model3d = false, -): Record { - const resolved: Record< - string, - { path: string; hotspotX: number; hotspotY: number; sculpt?: string } - > = {}; +): Record { + const resolved: Record = {}; for (const [type, sprite] of Object.entries(resolveCursorSprites(themeId, asArrow, model3d))) { const absolute = resolveSceneAssetPath(sprite.assetPath); if (absolute) { @@ -125,6 +131,7 @@ function resolveCursorSpritePaths( hotspotX: sprite.hotspotX, hotspotY: sprite.hotspotY, ...(sprite.sculpt ? { sculpt: sprite.sculpt } : {}), + ...(sprite.glass ? { glass: sprite.glass } : {}), }; } } @@ -144,10 +151,7 @@ export function resolveSceneAssetPaths(sceneJson: string): string { theme?: string; asArrow?: unknown; model3d?: boolean; - cursorSprites?: Record< - string, - { path: string; hotspotX: number; hotspotY: number; sculpt?: string } - >; + cursorSprites?: Record; }; webcamEffect?: { mode?: string; diff --git a/public/cursors/glass-lens/arrow.png b/public/cursors/glass-lens/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..69825d289fe04f970c817cc708d89cb02ade6441 GIT binary patch literal 4719 zcmYjVc{mhY)W5SamSIFD*@mb=hO+kBW(I|%(JRRoMOm_Cmt}^rL`9Z(OKMV-UbI-o zKDL)s!YFHzC>3UG8O!iZ-}8LW^Zjwp{o~%>IrseTbI(2JTqD~ZLkaH{1^}R}tt?LQ zXUd;}6yVEtQ_nX5?9#WkAUZ^i&fkj;J8fCi#S85XTPs{JD=FQqDt`h~ex|t@l8Y36 zcw^wxSu3mV<{+))F-a>T#u>J=|%V0N%VYH%?}V0gV}apG z+$N12afcj{P5!M=uO zd}N#;<*&xjrSG4!IzLy%U3!u700Z+VaP0Wl|t(_gv^@Vu|L(6=Q(8rnq9X&;V#MC3?H#5y+)cXe*pov55z* zfJpOnev#sVTG#)-q)SYLP0(9wbVkAB_;7$IjHB3;=yFRZ}Q|0Ve<& zyk9X*-&TWY-uDVpAh38pgDtMzjaJ!PlD9qG@mkRb8G{E@Kmf7wP-{>43epf>ao~Vy zsnRSFSl|Fxl0gxLuq9MNkOHC#5pD=-`$1xPk?L$SpglaL4FHlrC#WRff+p67-Z-L; zTp?Twf}v?kAOVmNe{e$|48DmDqPfQ4mOemYkQRTo+ds5-I5Sc3OoLUS!UQXMIGQRt)J<9Y=OP75&U zglQPVxbXu{Jt2DS)NXjpgGZY%ZTY;!E6TH4bxa2}wGNZSs->SU=-5gn&IyocuYkrv z&>lJBlS>@O+UJci?_W;%A!7w7K3d>;D5Oy8=+sgB

HpKpuPipd03ZNBc+$w>?_o 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%0AjRhO1-125!xTlxNx7K>SpTB#p z$Xq0K^Nfnh*L%*mt^NCE*SspM)A!hZ+Oq!N0oiHHP$upU)GW^=VwiH%TYu!8r24}a z7zRdO{))LRzc+C=B(qCP?_r>X(LYv{AI8apqowh^rjc5?)b!e0vN zXu=GDB#e@L9q$-)^dP33)vti4r~gS2Fb^d17+52@u62?dK^H5}4gY^n=)a-y>KVk& Xn-I!)8_G>?Q~?7W6YUq8j?w=I<@s15 literal 0 HcmV?d00001 diff --git a/scripts/generate-glass-lens-cursor.mjs b/scripts/generate-glass-lens-cursor.mjs new file mode 100644 index 000000000..6ce083e2f --- /dev/null +++ b/scripts/generate-glass-lens-cursor.mjs @@ -0,0 +1,211 @@ +// Glass Lens has no raster master: its arrow and hand are the shapes the compositor models +// (`s_glass2` in crates/compositor/src/shaders.hlsl), and this script draws the theme picker's +// PNGs from those same distance fields. The shape tables and the GLASS_* widths are read from the +// HLSL and the model boxes from sculpt.rs, so the 2D art cannot drift from the model. +// The compositor never draws these PNGs: with the 3D option off it renders the glass itself +// (mode 19), refracting the picture under it, and in 3D it ray-marches the model. They only have +// to read as glass in a picker cell: a translucent body, the dark outline, a pale glass rim. +// Run with `node scripts/generate-glass-lens-cursor.mjs` after changing the shapes: it writes +// public/cursors/glass-lens/{arrow,pointer}.png and prints the hotspots for +// src/lib/cursor/cursorThemes.ts. + +import { mkdir, readFile, writeFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { deflateSync } from "node:zlib"; + +const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +const SRC = path.join(ROOT, "crates", "compositor", "src"); +const OUT = path.join(ROOT, "public", "cursors", "glass-lens"); +const SPRITE = 128; +// Samples per pixel side, for the antialiasing. +const SS = 4; + +const hlsl = await readFile(path.join(SRC, "shaders.hlsl"), "utf8"); +const sculpt = await readFile(path.join(SRC, "sculpt.rs"), "utf8"); + +function constant(src, name) { + const m = src.match(new RegExp(`static const float ${name} = (-?[\\d.]+);`)); + if (!m) throw new Error(`${name} not found in shaders.hlsl`); + return Number(m[1]); +} +// The numbers of the HLSL table `name`, vector constructors dropped, in groups of `n`. +function table(src, name, n) { + const decl = src.match(new RegExp(`${name}\\[\\d+\\] = \\{([^}]*)\\}`)); + if (!decl) throw new Error(`${name} not found in shaders.hlsl`); + const values = decl[1] + .replace(/float[234]/g, "") + .match(/-?\d+(\.\d+)?/g) + .map(Number); + return Array.from({ length: values.length / n }, (_, i) => values.slice(i * n, i * n + n)); +} +function box(name) { + const m = sculpt.match(new RegExp(`const ${name}: \\[f32; 3\\] = \\[([^\\]]*)\\]`)); + if (!m) throw new Error(`${name} not found in sculpt.rs`); + return m[1].split(",").map(Number); +} + +const SCULPT_SCALE = constant(hlsl, "SCULPT_SCALE"); +const LINE = constant(hlsl, "GLASS_LINE"); +const RIM = constant(hlsl, "GLASS_RIM"); +const RIM_POLY = table(hlsl, "RIM_POLY", 2); +const RIM_GLOVE = table(hlsl, "RIM_GLOVE", 4); +const RIM_GLOVE_R = table(hlsl, "RIM_GLOVE_R", 4); + +// ---- The shapes, as `s_rim_poly`, `s_rim_glove` and `s_glass2` in the shaders ---- + +const dot = (a, b) => a[0] * b[0] + a[1] * b[1]; +const sub = (a, b) => [a[0] - b[0], a[1] - b[1]]; +const clamp01 = (x) => Math.min(Math.max(x, 0), 1); + +function segment(p, a, b) { + const pa = sub(p, a); + const ba = sub(b, a); + const h = clamp01(dot(pa, ba) / dot(ba, ba)); + return Math.hypot(pa[0] - ba[0] * h, pa[1] - ba[1] * h); +} + +function rimPoly(p, base) { + let d = dot(sub(p, RIM_POLY[base]), sub(p, RIM_POLY[base])); + let s = 1; + for (let i = base, j = base + 6; i < base + 7; j = i, i++) { + const e = sub(RIM_POLY[j], RIM_POLY[i]); + const w = sub(p, RIM_POLY[i]); + const h = clamp01(dot(w, e) / dot(e, e)); + d = Math.min(d, (w[0] - e[0] * h) ** 2 + (w[1] - e[1] * h) ** 2); + const c0 = p[1] >= RIM_POLY[i][1]; + const c1 = p[1] < RIM_POLY[j][1]; + const c2 = e[0] * w[1] > e[1] * w[0]; + if ((c0 && c1 && c2) || (!c0 && !c1 && !c2)) s = -s; + } + return s * Math.sqrt(d); +} + +function smin(a, b, k) { + const h = Math.max(k - Math.abs(a - b), 0) / k; + return Math.min(a, b) - h * h * k * 0.25; +} + +function rimGlove(p, g, palm) { + const [r0, r1, r2] = [0, 1, 2].map((k) => RIM_GLOVE_R[3 * g + k]); + const seg = (k, r) => + segment(p, RIM_GLOVE[9 * g + k].slice(0, 2), RIM_GLOVE[9 * g + k].slice(2)) - r; + const fingers = Math.min( + seg(0, r0[0]), + seg(1, r0[1]), + seg(2, r0[2]), + seg(3, r0[3]), + seg(4, r1[0]), + ); + const grooves = Math.min(seg(5, r1[1]), seg(6, r1[2]), seg(7, r1[3])); + const sil = smin(palm, fingers, 0.03); + const v = RIM_GLOVE[9 * g + 8]; + const wedge = Math.max(-dot(sub(p, v.slice(0, 2)), v.slice(2)), p[0] + r2[0], r2[1] - p[1]); + return [sil, Math.max(sil, -Math.min(grooves, wedge))]; +} + +// [silhouette, lens]: signed distances in the prototype frame, negative inside. +function glass2(p, shape) { + if (shape === "arrow") { + const poly = rimPoly([p[0], p[1] + RIM - 0.06], 0); + return [poly - RIM, poly]; + } + const q = [p[0], p[1] + RIM - RIM_GLOVE_R[5][2]]; + const v = rimGlove(q, 1, rimPoly(q, 14) - 0.05); + return [v[0] - RIM, v[1]]; +} + +// ---- The picker art ---- + +// Light from the top left, as `MODEL_LIGHT` in the shaders (x right, y up here). +const LIGHT = [-0.58, 0.81]; + +// Straight-alpha RGBA of the point `p`: the outline graphite and opaque, the glass rim pale and +// lit on its upper left, the lens a faint frost with a highlight along its upper-left edge. +function shade(p, shape) { + const [sil, lens] = glass2(p, shape); + if (sil > 0) return [0, 0, 0, 0]; + if (lens >= 0 && lens <= LINE) return [22, 24, 30, 1]; + const e = 0.002; + const n = [glass2([p[0] + e, p[1]], shape)[1] - lens, glass2([p[0], p[1] + e], shape)[1] - lens]; + const lit = clamp01(0.5 + (0.5 * dot(n, LIGHT)) / (Math.hypot(n[0], n[1]) || 1)); + if (lens > LINE) return [244, 248, 255, 0.5 + 0.4 * lit]; + const glow = Math.exp(lens / 0.03) * (1 - lit); + return [236, 242, 252, 0.28 + 0.35 * glow + 0.12 * clamp01(-p[1] * 1.2)]; +} + +// The model box (x0, x1, top) at the sprite's full height, centred across it. +function render(shape) { + const [x0, x1, top] = box(shape === "arrow" ? "BOX_GLASS_ARROW" : "BOX_GLASS_HAND"); + const scale = SPRITE * SCULPT_SCALE; + const left = (SPRITE - (x1 - x0) * scale) / 2; + const rgba = Buffer.alloc(SPRITE * SPRITE * 4); + for (let y = 0; y < SPRITE; y++) { + for (let x = 0; x < SPRITE; x++) { + const acc = [0, 0, 0, 0]; + for (let sy = 0; sy < SS; sy++) { + for (let sx = 0; sx < SS; sx++) { + const p = [ + x0 + (x + (sx + 0.5) / SS - left) / scale, + top - (y + (sy + 0.5) / SS) / scale, + ]; + const [r, g, b, a] = shade(p, shape); + acc[0] += r * a; + acc[1] += g * a; + acc[2] += b * a; + acc[3] += a; + } + } + const a = acc[3] / (SS * SS); + const i = (y * SPRITE + x) * 4; + if (a > 0) + rgba.set([...acc.slice(0, 3).map((c) => Math.round(c / acc[3])), Math.round(a * 255)], i); + } + } + // The hotspot, the prototype origin, in the 32-pixel reference of cursorThemes.ts. + const hotspot = [(left - x0 * scale) / 4, (top * scale) / 4]; + return { rgba, hotspot }; +} + +// ---- PNG ---- + +const CRC = new Uint32Array(256).map((_, n) => { + let c = n; + for (let k = 0; k < 8; k++) c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1; + return c >>> 0; +}); +function crc32(bytes) { + let c = 0xffffffff; + for (const b of bytes) c = CRC[(c ^ b) & 0xff] ^ (c >>> 8); + return (c ^ 0xffffffff) >>> 0; +} +function chunk(type, data) { + const out = Buffer.alloc(12 + data.length); + out.writeUInt32BE(data.length, 0); + out.write(type, 4, "ascii"); + data.copy(out, 8); + out.writeUInt32BE(crc32(out.subarray(4, 8 + data.length)), 8 + data.length); + return out; +} +function png(width, height, rgba) { + const header = Buffer.alloc(13); + header.writeUInt32BE(width, 0); + header.writeUInt32BE(height, 4); + header.set([8, 6, 0, 0, 0], 8); + const raw = Buffer.alloc((width * 4 + 1) * height); + for (let y = 0; y < height; y++) + rgba.copy(raw, y * (width * 4 + 1) + 1, y * width * 4, (y + 1) * width * 4); + return Buffer.concat([ + Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]), + chunk("IHDR", header), + chunk("IDAT", deflateSync(raw, { level: 9 })), + chunk("IEND", Buffer.alloc(0)), + ]); +} + +await mkdir(OUT, { recursive: true }); +for (const shape of ["arrow", "pointer"]) { + const { rgba, hotspot } = render(shape); + await writeFile(path.join(OUT, `${shape}.png`), png(SPRITE, SPRITE, rgba)); + console.log(`${shape}: hotspotX ${hotspot[0].toFixed(4)}, hotspotY ${hotspot[1].toFixed(4)}`); +} diff --git a/src/lib/cursor/cursorThemes.test.ts b/src/lib/cursor/cursorThemes.test.ts index e712e8ad4..63707c75e 100644 --- a/src/lib/cursor/cursorThemes.test.ts +++ b/src/lib/cursor/cursorThemes.test.ts @@ -78,6 +78,22 @@ describe("normalizeCursorThemeId", () => { expect(sprites.text).toBe(DEFAULT_CURSOR_SPRITES.text); }); + // Glass Lens is glass with 3D off too: the compositor draws its model face on (mode 19) in place + // of the sprite, so the scene names it whatever the 3D option, and for no other theme. + it("names the flat glass of Glass Lens with and without 3D, and of no other theme", () => { + for (const theme of CURSOR_THEMES) { + for (const model3d of [false, true]) { + const sprites = resolveCursorSprites(theme.id, ["text"], model3d); + for (const state of ["arrow", "pointer"] as const) { + const want = theme.id === "glass-lens" ? `${theme.id}/${state}` : undefined; + expect(sprites[state].glass, `${theme.id} ${state} ${model3d}`).toBe(want); + } + expect(sprites.text.glass).toBe(sprites.arrow.glass); + expect(sprites["resize-ew"].glass).toBeUndefined(); + } + } + }); + it("leaves the default art to the extruded sprite in 3D", () => { for (const sprite of Object.values(resolveCursorSprites(DEFAULT_CURSOR_THEME_ID, [], true))) { expect(sprite.sculpt).toBeUndefined(); diff --git a/src/lib/cursor/cursorThemes.ts b/src/lib/cursor/cursorThemes.ts index b3a743bdc..88bd6a260 100644 --- a/src/lib/cursor/cursorThemes.ts +++ b/src/lib/cursor/cursorThemes.ts @@ -18,6 +18,9 @@ export interface CursorThemeAsset { /** The compositor models this state in 3D (`crates/compositor/src/sculpt.rs`) instead of * extruding the flat asset, which stays the 2D art. */ sculpted?: boolean; + /** With the 3D option off too, the compositor draws this state as a lens of glass over the + * picture (its 3D model seen face on), not the flat asset, which only shows in the picker. */ + glass?: boolean; } export interface CursorTheme { @@ -54,6 +57,9 @@ export interface CursorSprite { /** The compositor's sculpted model for this state in 3D, `"/"` * (`crates/compositor/src/sculpt.rs`). Without it, 3D extrudes the sprite. */ sculpt?: string; + /** The glass model the compositor draws for this state with 3D off, `"/"`, in + * place of the sprite (see `CursorThemeAsset.glass`). */ + glass?: string; } /** @@ -128,9 +134,10 @@ export function readCursorAsArrow( } /** - * Bundled cursor themes. These five packs are original OpenScreen artwork. Their raster + * Bundled cursor themes. These six packs are original OpenScreen artwork. Their raster * masters live in design/cursors/ and are prepared by scripts/generate-original-cursor-themes.mjs, - * except Pixel Candy's pixel art, drawn as a grid in scripts/generate-pixel-candy-voxels.mjs. + * except Pixel Candy's pixel art, drawn as a grid in scripts/generate-pixel-candy-voxels.mjs, and + * Glass Lens, whose picker PNGs scripts/generate-glass-lens-cursor.mjs draws from its 3D model. * The former Sweezy packs were removed * because their terms forbid redistribution without written permission. * @@ -138,7 +145,8 @@ export function readCursorAsArrow( * with hotspots normalized to the 32-logical reference (divide a 128px-pack hotspot by 4). * Mark an asset `sculpted` when the compositor has a 3D model for it (`sculpt.rs`; Prism Glow's * is a crystal mesh traced on its drawing, `prism_mesh.rs`); other states are extruded from their - * sprite in 3D. An id that leaves this list reads back as the default art + * sprite in 3D. Mark it `glass` when the compositor draws it as glass with 3D off as well (Glass + * Lens, mode 19). An id that leaves this list reads back as the default art * through `normalizeCursorThemeId`, so a project saved with it still opens. */ export const CURSOR_THEMES: readonly CursorTheme[] = [ @@ -252,6 +260,30 @@ export const CURSOR_THEMES: readonly CursorTheme[] = [ }, }, }, + { + id: "glass-lens", + name: "Glass Lens", + assets: { + arrow: { + assetPath: "cursors/glass-lens/arrow.png", + width: 32, + height: 32, + hotspotX: 9.744, + hotspotY: 0.816, + sculpted: true, + glass: true, + }, + pointer: { + assetPath: "cursors/glass-lens/pointer.png", + width: 32, + height: 32, + hotspotX: 12.872, + hotspotY: 0.816, + sculpted: true, + glass: true, + }, + }, + }, ]; /** All selectable theme ids, including the built-in default. */ @@ -321,6 +353,7 @@ export function resolveCursorSprites( hotspotX: asset.hotspotX / asset.width, hotspotY: asset.hotspotY / asset.height, ...(model3d && asset.sculpted ? { sculpt: `${themeId}/${type}` } : {}), + ...(asset.glass ? { glass: `${themeId}/${type}` } : {}), }; } // A kind drawn as the arrow takes the arrow's sprite, with the theme's art and its 3D model. From c117888f7fe13a802f387e2e56ea0d01eb561d0b Mon Sep 17 00:00:00 2001 From: EtienneLescot Date: Sun, 4 Oct 2026 12:10:50 +0200 Subject: [PATCH 2/3] test(cursor): count Glass Lens in the theme picker, and document glass cursors --- crates/compositor/src/compositor_linux.rs | 3 ++- crates/compositor/src/frame_geometry.rs | 3 ++- src/components/ai-edition/CursorPane.preview.test.tsx | 2 +- technical-documentation/architecture/cursor.md | 2 ++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/crates/compositor/src/compositor_linux.rs b/crates/compositor/src/compositor_linux.rs index 507b28617..d0e2fc72f 100644 --- a/crates/compositor/src/compositor_linux.rs +++ b/crates/compositor/src/compositor_linux.rs @@ -6163,7 +6163,8 @@ mod tests { } let c = [c[0] / body.max(1) as f32, c[1] / body.max(1) as f32]; println!( - "glass-lens/{state} a plat : unite {u:.1} px, corps {body} px, a {near:.1} px du hotspot {tip:?}, centroide {c:?}, {through} px laissent voir l'ecran, {line} px de trait, {moved} px deplaces" + "glass-lens/{state} a plat : unite {u:.1} px, corps {body} px, a {near:.1} px du hotspot {tip:?}, \ + centroide {c:?}, {through} px laissent voir l'ecran, {line} px de trait, {moved} px deplaces" ); if (body as f32) < 0.12 * u * u { failures.push(format!("glass-lens/{state}: {body} px de corps pour {u:.0} px d'unite")); diff --git a/crates/compositor/src/frame_geometry.rs b/crates/compositor/src/frame_geometry.rs index 4845cb823..0decdb21f 100644 --- a/crates/compositor/src/frame_geometry.rs +++ b/crates/compositor/src/frame_geometry.rs @@ -4567,7 +4567,8 @@ mod tests { assert!(BackgroundKey::of(None, blur, fallback, size).is_some(), "fond de repli"); } - /// Les modèles 3D, et eux seuls, passent par la variante « modèles » du shader de calque. + /// Les modèles 3D et le verre à plat qui en reprend les formes, eux seuls, passent par la + /// variante « modèles » du shader de calque. #[test] fn only_the_3d_models_need_the_models_shader() { for mode in 0..=19 { diff --git a/src/components/ai-edition/CursorPane.preview.test.tsx b/src/components/ai-edition/CursorPane.preview.test.tsx index fa222938f..0aa86791f 100644 --- a/src/components/ai-edition/CursorPane.preview.test.tsx +++ b/src/components/ai-edition/CursorPane.preview.test.tsx @@ -38,7 +38,7 @@ afterEach(() => { describe("CursorPane theme picker", () => { it("shows the original cursor themes beside the default", () => { - expect(CURSOR_THEMES).toHaveLength(5); + expect(CURSOR_THEMES).toHaveLength(6); render( diff --git a/technical-documentation/architecture/cursor.md b/technical-documentation/architecture/cursor.md index b603f2610..bd8db12a8 100644 --- a/technical-documentation/architecture/cursor.md +++ b/technical-documentation/architecture/cursor.md @@ -22,6 +22,8 @@ flowchart LR N --> E["Export"] ``` +Glass cursors read the picture under them. When the cursor is the Prism Glow crystal or Glass Lens (`CursorPlan::glass`), each backend copies the frame as composed so far, footage and privacy blurs included, just before drawing the cursor, and the shader refracts that copy. Glass Lens does this with the 3D option off as well: its sprite names a glass model (`glass` in `cursorSprites`), and mode 19 (`cursor_glass_cb`) draws that model face on instead of the PNG, which only serves the theme picker. + ## Settings The cursor settings pane is `CursorPane` in `src/components/ai-edition/RightPanes.tsx`; the current v4 inspector exposes it through the cursor facet in `src/components/ai-edition/v4/FloatingInspector.tsx:57-63,1073`. It controls showing the cursor, clipping it to the canvas, theme, size, smoothing, motion blur, and click bounce. `RightPanes.tsx:1592-1692` binds those controls to editor settings and forwards the rendering parameters to the native compositor. Preview and export both render through that compositor, so a change shows in both. From d2b1469c50146519ec1503f1a3adeb383edb7e3e Mon Sep 17 00:00:00 2001 From: EtienneLescot Date: Sun, 4 Oct 2026 12:26:05 +0200 Subject: [PATCH 3/3] docs(cursor): add the compositor's Glass Lens renders --- design/cursors/README.md | 2 ++ design/cursors/glass-lens/renders.png | Bin 0 -> 372570 bytes 2 files changed, 2 insertions(+) create mode 100644 design/cursors/glass-lens/renders.png diff --git a/design/cursors/README.md b/design/cursors/README.md index 99f9b954b..da17f3d39 100644 --- a/design/cursors/README.md +++ b/design/cursors/README.md @@ -33,6 +33,8 @@ and hand as its model seen face on (mode 19), a lens that refracts the picture under it, instead of a PNG. Its shapes are the Studio Ink arrow and glove, and `node scripts/generate-glass-lens-cursor.mjs` draws its picker PNGs from the same distance fields, read from the shaders, then prints their hotspots. +`glass-lens/renders.png` shows the compositor's own renders, 2D then 3D, on a +light page, a dark page and a checker. `contact-sheet.png` shows the sprites enlarged on a light background; `dark-32px.png` shows them at their 32-pixel reference size on a dark background. diff --git a/design/cursors/glass-lens/renders.png b/design/cursors/glass-lens/renders.png new file mode 100644 index 0000000000000000000000000000000000000000..0cfd86cbe77f77d6d13e2b146cbad4b17c6cadd5 GIT binary patch literal 372570 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%0AAXsHl`?y&inJ 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%0Dk^sq{s**Udb>l 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

hGuBPvn+mqK{8SPh(GhSMHRP<9N`Q7X&XsqgQs* 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%0DyJr^1 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 literal 0 HcmV?d00001