{"id":15672976,"url":"https://github.com/spite/mira-lab-2013","last_synced_at":"2025-07-09T14:39:29.114Z","repository":{"id":11852045,"uuid":"14410016","full_name":"spite/mira-lab-2013","owner":"spite","description":"Contents for MIRA Lab 2013 Workshop","archived":false,"fork":false,"pushed_at":"2013-11-15T00:41:57.000Z","size":108,"stargazers_count":15,"open_issues_count":0,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-24T01:12:10.357Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spite.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-11-14T23:31:01.000Z","updated_at":"2020-08-20T04:33:05.000Z","dependencies_parsed_at":"2022-08-29T08:50:48.649Z","dependency_job_id":null,"html_url":"https://github.com/spite/mira-lab-2013","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/spite/mira-lab-2013","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spite%2Fmira-lab-2013","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spite%2Fmira-lab-2013/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spite%2Fmira-lab-2013/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spite%2Fmira-lab-2013/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spite","download_url":"https://codeload.github.com/spite/mira-lab-2013/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spite%2Fmira-lab-2013/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264476934,"owners_count":23614595,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T15:34:38.024Z","updated_at":"2025-07-09T14:39:29.058Z","avatar_url":"https://github.com/spite.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# MIRA Lab 2013 Workshop\n\nMaterial for the workshop.\n\n1. Base\n\n   This is the base with the HTML markup, and JavaScript code to set up a Three.js scene, with event handlers.\n\n2. Easing\n\n   The same as base, but introduces the concept of easing function for values such as fov or lat, lon for camera control.\n\n3. Geometry\n\n   Adds a cube and a particle system distributed in a spherical shape.  \n   Introduces some of the problems with object sorting.\n\n4. Custom Geometry\n\n   Substitutes the default SphereGeometry with a more pleasing, better distributed one, introducing the method to create custom geometries.\n\n5. Custom Geometries\n\n   Next step when adding geometries: reusing part of a calculated geometry to create a new, different object.\n\n6. Noise\n\n   First step into animation.  \n   Introduction to requestAnimationFrame and the render loop.  \n   Modifying a mesh in CPU and updating buffers.  \n   Introduction to perlin noise.\n\n7. Audio\n\n   How to load a music track or to a microphone.  \n   Introduction to Web Audio API and WebRTC getUserMedia.  \n   Introduction to Fourier Analysis.  \n   How to use frequency domain to synchronise geometry distortions.\n\n8. Basic Shader\n\n   Replacing the standard material for an elemental shader.  \n   Introduction to GLSL and the Shader Model.  \n\n9. Advanced Shader\n\n   Using attributes and uniforms.  \n   Going crazy with fragment shaders.\n\n10. Further improvements (*not available yet*)\n\n   *Adding video using WebRTC getUserMedia.*  \n   *Porting the distortion code to a vertex shader.*\n\n# Requirements\n\n* Chrome or Firefox\n\n   To prevent CORS issues when loading textures and sound files, use a local web development environment, like the integrated web server in OSX, or download XAMPP or a similar package.\n\n   You can also run a standalone Chrome instance with --disable-web-security when loading from file://\n\n* WebGL support\n\n   Make sure your system supports WebGL and your card is not blacklisted: [get.weblg.org](http://get.webgl.org/)\n\n* Patience, curiosity to tinker with \"magic\" values, and capacity to endure playing the same song over and over and over.\n\n# Credits\n\nJaume Sanchez Elias [@thespite](http://www.twitter.com/thespite)  \n[www.clicktorelease.com](http://www.clicktorelease.com)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspite%2Fmira-lab-2013","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspite%2Fmira-lab-2013","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspite%2Fmira-lab-2013/lists"}