{"id":15137953,"url":"https://github.com/patryk27/strolle","last_synced_at":"2025-04-05T14:09:24.333Z","repository":{"id":65110939,"uuid":"573758986","full_name":"Patryk27/strolle","owner":"Patryk27","description":"Experimental real-time renderer with support for dynamic global illumination","archived":false,"fork":false,"pushed_at":"2024-02-26T18:23:57.000Z","size":15869,"stargazers_count":418,"open_issues_count":17,"forks_count":17,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-05T14:09:19.586Z","etag":null,"topics":["bevy","bevy-engine","bevy-plugin","global-illumination","gpu","rendering","restir","restir-gi","rust","shaders","svgf"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/Patryk27.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}},"created_at":"2022-12-03T10:46:03.000Z","updated_at":"2025-03-15T11:17:26.000Z","dependencies_parsed_at":"2023-10-13T05:36:52.392Z","dependency_job_id":"7bdcf84f-e5ca-47ff-a524-2a4c9ac5f901","html_url":"https://github.com/Patryk27/strolle","commit_stats":{"total_commits":210,"total_committers":4,"mean_commits":52.5,"dds":"0.11428571428571432","last_synced_commit":"5c5034b1902252f0645c0ab3e55dff6ddf15ca24"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Patryk27%2Fstrolle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Patryk27%2Fstrolle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Patryk27%2Fstrolle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Patryk27%2Fstrolle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Patryk27","download_url":"https://codeload.github.com/Patryk27/strolle/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247345854,"owners_count":20924102,"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":["bevy","bevy-engine","bevy-plugin","global-illumination","gpu","rendering","restir","restir-gi","rust","shaders","svgf"],"created_at":"2024-09-26T07:03:47.803Z","updated_at":"2025-04-05T14:09:24.313Z","avatar_url":"https://github.com/Patryk27.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Strolle\n\nStrolle (from _strålspårning_) is a real-time renderer with support for dynamic\nglobal illumination:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg height=\"512\" src=\"_readme/demo-v11.jpg\" /\u003e\n\u003c/p\u003e\n\nStrolle's goal is to experiment with modern real-time lighting techniques such\nas ReSTIR and see how far we can go on consumer hardware, especially the one\n_without_ dedicated ray-tracing cores.\n\nStrolle comes integrated with [Bevy](https://bevyengine.org/), but can be also\nused on its own (through `wgpu`).\n\nStatus: Experimental, no official release yet (see the demo below, though!).    \nPlatforms: Windows, Mac, Linux \u0026 WebGPU.\n\n* [Gallery](#gallery)\n* [Examples](#examples)\n* [Usage](#usage)\n* [Roadmap](#roadmap)\n\n## Gallery\n\n\u003cp align=\"center\"\u003e\n  \u003cimg height=\"512\" src=\"_readme/demo-v9.jpg\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg height=\"512\" src=\"_readme/demo-v16.jpg\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg height=\"512\" src=\"_readme/demo-v17.jpg\" /\u003e\n\u003c/p\u003e\n\n(note that currently there's no denoiser for specular lighting)\n\n## Examples\n\n### Dungeon\n\n``` shell\n$ cargo run --release --example demo\n```\n\nShows a dungeon tech demo, as in the example above.\n\nUse WASD to move, mouse to navigate the camera, and:\n\n- H/L: Adjust sun's azimuth,\n- J/K: Adjust sun's altitude,\n- F: Toggle flashlight on/off,\n- M: Toggle diffuse/specular materials,\n- T: Remove textures,\n- 1: Show the final, composed image¹ (default),\n- 2: Show direct-diffuse lighting only¹,\n- 3: Show direct-specular lighting only¹,\n- 4: Show indirect-diffuse lighting only¹,\n- 5: Show indirect-specular lighting only¹,\n- 8: Show BVH heatmap,\n- 9: Switch camera to a path-traced reference mode (slow),\n- 0: Switch camera to Bevy's renderer,\n- ;: Toggle camera's controls on/off - useful for taking screenshots.\n\n¹ press the same key again to toggle denoising on/off\n\nModel thanks to:    \nhttps://sketchfab.com/3d-models/low-poly-game-level-82b7a937ae504cfa9f277d9bf6874ad2\n\n### Cornell Box\n\n``` shell\n$ cargo run --release --example cornell\n```\n\n## Usage\n\n### Bevy\n\nCurrently supported Bevy version: 0.12.1.\n\n1. Add Strolle to your dependencies:\n\n    ``` toml\n    [dependencies]\n    bevy_strolle = { git = \"https://github.com/patryk27/strolle\" }\n    ```\n\n2. Add a patch to work-around [a bug in Naga](https://github.com/gfx-rs/naga/issues/2373):\n\n    ``` toml\n    [patch.\"crates-io\"]\n    naga = { git = \"https://github.com/Patryk27/naga\", branch = \"v0.13.0-strolle\" }\n    ```\n\n3. Setup \u0026 enjoy!\n\n    ```rust\n    App::new()\n        /* ... */\n        .add_plugins(StrollePlugin);\n\n    commands\n        .spawn(Camera3dBundle {\n            camera_render_graph: CameraRenderGraph::new(\n                bevy_strolle::graph::NAME,\n            ),\n            camera: Camera {\n                hdr: true,\n                ..default()\n            },\n            ..default()\n        });\n    ```\n\nNote that Strolle completely overrides Bevy's camera graph, so you can't use a\nStrolle camera together with Bevy's effects such as bloom or TAA - fragment and\nvertex shaders won't work as well.\n\nAlso, Strolle is not optimized well towards higher resolutions - on non-high-end\nGPUs, it's recommended to stick to ~800x600 and upscale the camera instead (see\nthe `demo.rs` here).\n\n## Roadmap\n\nhttps://github.com/Patryk27/strolle/issues?q=is%3Aissue+is%3Aopen+label%3AC-bug%2CC-feature\n\n## Algorithms\n\nNotable algorithms implemented in Strolle include:\n\n- [ReSTIR DI](https://research.nvidia.com/sites/default/files/pubs/2020-07_Spatiotemporal-reservoir-resampling/ReSTIR.pdf)\n- [ReSTIR GI](https://d1qx31qr3h6wln.cloudfront.net/publications/ReSTIR%20GI.pdf)\n- [SVGF](https://research.nvidia.com/publication/2017-07_spatiotemporal-variance-guided-filtering-real-time-reconstruction-path-traced)\n- [A Scalable and Production Ready Sky and Atmosphere Rendering Technique](https://sebh.github.io/publications/egsr2020.pdf)\n\n## License\n\nMIT License\n\nCopyright (c) 2022 Patryk Wychowaniec \u0026 Jakub Trąd\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatryk27%2Fstrolle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatryk27%2Fstrolle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatryk27%2Fstrolle/lists"}