On the Wall (photo mode) - fotojockovic.com/wall ================================================ Shows your picture on a photo of your wall as a framed print or a gallery-wrapped canvas, in true perspective and size, relit from the photo. Everything runs in the browser; no image leaves the device. Our own work: the frame, mat and canvas models (swept mouldings with mitred corners, bevel-cut mat with white core, canvas fold), the wall calibration (homography, focal length estimate, pose), the photo analysis (illumination field, light direction, black level, noise and sharpness estimates), the compositing shaders (relighting, area-light wall shadow, recess shadow, glass reflection and glare, grain), the procedural painted-wood relief, the UI and texts. Everything else that ships to the browser: 1. three.js r186 (npm three 0.186.1), three.js authors - MIT. https://github.com/mrdoob/three.js Bundled and minified into app.js. Licence: LICENSE-three.txt 2. Textures (tex/*.webp: resized, re-encoded; paper colour converted to neutral grey). All CC0 1.0: Poly Haven (https://polyhaven.com/license): oak_veneer_01 (natural oak frame; also the grain under the painted frames): tex/oak_d.webp, tex/oak_n.webp walnut_veneer (walnut frame): tex/walnut_d.webp, tex/walnut_n.webp ambientCG (https://docs.ambientcg.com/license): Paper001 (mat board surface): tex/paper_d.webp, tex/paper_n.webp Fabric036 (canvas weave): tex/weave_n.webp 3. Sample rooms (rooms/*.jpg: resized and re-encoded). Poly Haven HDRI backplates, CC0 1.0 (https://polyhaven.com/license): rooms/bright.jpg - marry_hall, backplate 20 https://polyhaven.com/a/marry_hall rooms/country.jpg - studio_country_hall, DSC_7789 https://polyhaven.com/a/studio_country_hall rooms/evening.jpg - lythwood_room, DSC08747 https://polyhaven.com/a/lythwood_room rooms/green.jpg - photo_studio_loft_hall, DSC_8629 https://polyhaven.com/a/photo_studio_loft_hall 4. Sample pictures (art/*.jpg: cropped, resized). The Metropolitan Museum of Art, Open Access, CC0 1.0 (isPublicDomain: true in the Met Collection API, checked 2026-10-15): art/vangogh.jpg - Vincent van Gogh, Wheat Field with Cypresses, 1889, object 436535 art/vermeer.jpg - Johannes Vermeer, Young Woman with a Water Pitcher, ca. 1662, object 437881 art/legray.jpg - Gustave Le Gray, Mediterranean Sea - Sete, 1857, albumen print, object 283124 5. Fonts, loaded from Google Fonts, SIL Open Font License 1.1: Inter Tight (Rasmus Andersson et al.), Instrument Serif (Instrument). 6. Language flags in the language picker (/static/tools/common/i18n.js): simplified flag drawings made for these tools, our own work. The national flags themselves are public-domain symbols. Translations of the interface are our own. No GPL code is shipped. No machine-learning model is used.