{"id":26787472,"url":"https://github.com/controversial/cs175-final-project","last_synced_at":"2025-10-08T23:33:28.961Z","repository":{"id":89121670,"uuid":"572803618","full_name":"controversial/cs175-final-project","owner":"controversial","description":"Final project for CS175","archived":false,"fork":false,"pushed_at":"2024-01-31T03:18:14.000Z","size":53300,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-08T23:32:47.599Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"cs175-final.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/controversial.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-12-01T04:02:55.000Z","updated_at":"2024-01-28T22:41:16.000Z","dependencies_parsed_at":"2025-04-20T15:00:22.064Z","dependency_job_id":null,"html_url":"https://github.com/controversial/cs175-final-project","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/controversial/cs175-final-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/controversial%2Fcs175-final-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/controversial%2Fcs175-final-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/controversial%2Fcs175-final-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/controversial%2Fcs175-final-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/controversial","download_url":"https://codeload.github.com/controversial/cs175-final-project/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/controversial%2Fcs175-final-project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000721,"owners_count":26082862,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2025-03-29T12:20:08.906Z","updated_at":"2025-10-08T23:33:28.928Z","avatar_url":"https://github.com/controversial.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tufts CS175 Computer Graphics: Final Project\nWritten by Luke, Christian and Jacob.\n\n## Live demo\n[Link](https://cs175-final.vercel.app)\n\n## Description\nThis project is a WebGL application that renders a scene with volumetric clouds, a realistic atmosphere, and interactive water in real-time. The project was an attempt to explore the techniques and compromises required to render realistic scenes in real-time.\n\n## Development\n1. Install a recent version of Node.js\n2. Run `npm install` from the project root to install dependencies.\n3. Run `npm run dev` to start the development server.\n4. Open [`http://localhost:5173`](http://localhost:5173) in your browser.\n\n## Usage\n1. Use WASD to move around the scene.\n2. Use IJKL to change your view angle.\n3. Use Q and E to fly up and down\n4. Click the surface of the water to create a ripple.\n5. Scroll the page to change the sun’s position in the sky\n\n## Credits\nThe wave equations for the water were (very loosely) based on an [implementation](https://github.com/amandaghassaei/gpu-io/blob/main/examples/wave2d/index.js) by Amanda Ghassaei.\n\nThe atmosphere raytracing is adapted from code published in [Precomputed Atmospheric Scattering: a New Implementation](https://ebruneton.github.io/precomputed_atmospheric_scattering/) by Eric Bruneton, which is based on an earlier paper, [Precomputed Atmospheric Scattering](https://hal.inria.fr/inria-00288758/document), by Eric Bruneton and Fabrice Neyret. We refactored the reference implementation to run as a reusble color function for an arbitrary world-space ray, but much of the core implementation remains unchanged.\n\nOur approach to cloud raytracing is based on a [2015 SIGGRAPH presentation](https://www.guerrilla-games.com/media/News/Files/The-Real-time-Volumetric-Cloudscapes-of-Horizon-Zero-Dawn.pdf) by Guerrilla Games. We additionally referenced [this approach](https://blog.demofox.org/2020/05/10/ray-marching-fog-with-blue-noise/), which applies blue noise in order to disrupt the banding artifacts that are caused by course raymarching through the cloud volume. Finally, we credit the implementations of the noise functions we use in our clouds to Inigo Quilez and Dave Hoskins.\n\nThe birdbath model that appears in the scene is adapted from a [model](https://sketchfab.com/3d-models/bird-bath-da9098a83bec4768bf19b899577c9374) by Arthur Nicaise on Sketchfab.\n\nThe grass texture is from Minecraft.\n\nFinally, we use two runtime JavaScript libraries in our code:\n\n  1. [`gl-matrix`](https://www.npmjs.com/package/gl-matrix) for linear algebra and matrix operations.\n  2. [`@gltf-transform/core`](https://www.npmjs.com/package/@gltf-transform/core) for parsing geometry and texture data from `.glb` files.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontroversial%2Fcs175-final-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontroversial%2Fcs175-final-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontroversial%2Fcs175-final-project/lists"}