[{"data":1,"prerenderedAt":84},["ShallowReactive",2],{"mdc-cbae8v-key":3,"mdc--ak0f6j-key":16,"mdc--tlusi0-key":25,"mdc--r1my0e-key":34,"mdc-ad8pmi-key":43},{"data":4,"body":5},{},{"type":6,"children":7},"root",[8],{"type":9,"tag":10,"props":11,"children":12},"element","p",{},[13],{"type":14,"value":15},"text","Nuxt, Vue and TypeScript",{"data":17,"body":18},{},{"type":6,"children":19},[20],{"type":9,"tag":10,"props":21,"children":22},{},[23],{"type":14,"value":24},"Three.js, shaders and video textures",{"data":26,"body":27},{},{"type":6,"children":28},[29],{"type":9,"tag":10,"props":30,"children":31},{},[32],{"type":14,"value":33},"Projects in Markdown, in Spanish and English",{"data":35,"body":36},{},{"type":6,"children":37},[38],{"type":9,"tag":10,"props":39,"children":40},{},[41],{"type":14,"value":42},"Card-to-project transitions, related projects and experiments",{"data":44,"body":45},{},{"type":6,"children":46},[47,52,60,70,79],{"type":9,"tag":10,"props":48,"children":49},{},[50],{"type":14,"value":51},"This is the portfolio you are browsing: a personal website gathering most of my projects — programming, interactive installations, applications and real-time experiments — or at least those I have records of. I designed and developed both the presentation of the work and the visual engine behind it.",{"type":9,"tag":53,"props":54,"children":59},"media",{"alt":55,"effect":56,"poster":57,"src":58},"Walkthrough of the sychev.xyz homepage and project pages","reveal","https:\u002F\u002Fres.cloudinary.com\u002Fddwpkkaqv\u002Fvideo\u002Fupload\u002Fso_25p,w_1280,q_auto\u002F26sychev_xyz-0_uobyq7.webp","https:\u002F\u002Fres.cloudinary.com\u002Fddwpkkaqv\u002Fvideo\u002Fupload\u002Fvc_h264,q_auto,w_1280\u002F26sychev_xyz-0_uobyq7.mp4",[],{"type":9,"tag":61,"props":62,"children":64},"section",{"title":63},"One shared engine",[65],{"type":9,"tag":10,"props":66,"children":67},{},[68],{"type":14,"value":69},"Images and videos sit alongside a WebGL layer shared across the page. A Three.js engine synchronises media with its position in the document and applies deformations as you scroll or move the cursor. Where supported, rendering runs in a worker with OffscreenCanvas.",{"type":9,"tag":61,"props":71,"children":73},{"title":72},"The content remains a website",[74],{"type":9,"tag":10,"props":75,"children":76},{},[77],{"type":14,"value":78},"Projects are validated and prepared when the site is built. Each page retains its text, links and media in HTML; if WebGL is unavailable, they continue to work as regular content. Reduced-motion preferences adapt the effects and playback.",{"type":9,"tag":10,"props":80,"children":81},{},[82],{"type":14,"value":83},"The homepage includes a small game with a hand and geometric pieces. On the about page, a point cloud builds the portrait. Both present my work through the same tools I use to make it.",1794317809960]