{"id":22838903,"url":"https://github.com/raytracing/gpu-tracing","last_synced_at":"2025-04-07T05:08:24.889Z","repository":{"id":188858538,"uuid":"678908621","full_name":"RayTracing/gpu-tracing","owner":"RayTracing","description":"Ray tracing on GPU systems","archived":false,"fork":false,"pushed_at":"2025-03-16T19:04:45.000Z","size":169802,"stargazers_count":191,"open_issues_count":7,"forks_count":14,"subscribers_count":18,"default_branch":"dev","last_synced_at":"2025-03-31T04:09:03.202Z","etag":null,"topics":["book","gpu","graphics-rendering","ray-tracing","raytracing"],"latest_commit_sha":null,"homepage":"https://raytracing.github.io/gpu-tracing","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RayTracing.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"2023-08-15T16:58:35.000Z","updated_at":"2025-03-30T21:52:41.000Z","dependencies_parsed_at":"2023-08-17T06:58:52.038Z","dependency_job_id":"4e5d0fa9-7dfe-49f0-91d5-a82669fdd225","html_url":"https://github.com/RayTracing/gpu-tracing","commit_stats":{"total_commits":25,"total_committers":2,"mean_commits":12.5,"dds":"0.040000000000000036","last_synced_commit":"9a876551d683a75c7a65e0b68ad77c3a75278766"},"previous_names":["raytracing/gpu-tracing"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RayTracing%2Fgpu-tracing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RayTracing%2Fgpu-tracing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RayTracing%2Fgpu-tracing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RayTracing%2Fgpu-tracing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RayTracing","download_url":"https://codeload.github.com/RayTracing/gpu-tracing/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247595334,"owners_count":20963943,"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":["book","gpu","graphics-rendering","ray-tracing","raytracing"],"created_at":"2024-12-13T00:08:58.041Z","updated_at":"2025-04-07T05:08:19.872Z","avatar_url":"https://github.com/RayTracing.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"Chapters on GPU Ray Tracing\n====================================================================================================\nThis repository hosts a new book series that walks you through building your own GPU path tracer. It\nis intended for readers of the [_Ray Tracing In One Weekend_](https://raytracing.github.io/) series\nwho are curious about implementing the same concepts on a GPU using a modern graphics API.\n\nThe book will guide you through the building blocks of a GPU-based renderer using the same\nstep-by-step approach in _Ray Tracing In One Weekend_. The goal is **not** to build a\nfully-featured and highly optimized real-time renderer; rather, it is to show you how to translate\nthe concepts introduced in _Ray Tracing In One Weekend_ into a design that is practical to port to\nall modern GPU platforms while paying attention to some of the common pitfalls of GPU programming.\n\nI hope that, by completing this book, you will have built a renderer that serves as a foundation\nfor future learning and experimentation. It won't be the most-efficient renderer but it will be able\nto draw the scenes from _Ray Tracing In One Weekend_ at near-interactive rates.\n\nProject Status\n--------------\nThis book is a work-in-progress and has not been released yet. I'll update this README as soon as\nthere is a first draft!\n\nDirectory Structure\n-------------------\nTODO\n\nSource Code\n-----------\n_Ray Tracing In One Weekend_ deliberately avoids the use of APIs and special-purpose libraries.\nHowever, programming a GPU requires you to develop against an API that supports the particular piece\nof hardware that you want to target.\n\nMy goal with this book is for all of the concepts to easily map to any graphics framework and\nprogramming environment. GPU programming can naturally involve a lot of boilerplate and I want to\nkeep the barrier for entry as low as possible for someone who wants to get started with building a\nray tracer right away without having to learn all the intricacies of window management and engine\ninfrastructure.\n\nTo that end, I decided to provide some support code to keep some of that friction low. I made the\nfollowing API and programming language choices for the code examples:\n\n1. **WebGPU** is a new API that defines a good abstraction for all baseline features one can find in\n   a modern graphics API. A reader that wants to use a different API can translate the concepts\n   fairly easily. In particular, WebGPU has native implementations that are easily portable to any\n   OS and GPU that supports Vulkan, Metal, and D3D. The code examples will specifically use the\n   [wgpu](https://github.com/gfx-rs/wgpu) library which supports Vulkan, Metal, D3D11, D3D12,\n   OpenGL ES, and WebGPU via WebAssembly.\n\n2. I chose **Rust** as the programming language for both its safety and ease of use. I've found that\n   Rust has often made my development faster as it resolves many potential memory bugs and data\n   races at compile time while staying fairly low-level. Another advantage of Rust is that it takes\n   virtually no effort to get the examples to run on different operating systems as the package\n   manager takes care of this automatically.\n\nI'm cognizant of the fact Rust may feel unfamiliar to some readers. I will strive to keep the code\nexamples free of esoteric Rust-isms to keep the code understandable to a reader who is familiar with\nC.\n\nThat said, none of this should prevent you from implementing this book in your favorite language, on\nyour favorite OS, using your favorite API. In fact, [wgpu](https://github.com/gfx-rs/wgpu/) (the\nlibrary used by the code examples) has\n[native bindings](https://github.com/gfx-rs/wgpu-native#bindings) for several programming languages.\n\nBuilding and Running\n--------------------\nYou can use the standard Rust package manager `cargo` to compile and run the code. First, make sure\nyou have installed the latest version of the Rust toolchain (see [instructions][install-rust]). Then\nrun the following in your terminal (inside the directory containing the source code):\n\nTo run a debug build:\n```shell\n$ cargo run\n```\n\nTo run an optimized build:\n```shell\n$ cargo run --release\n```\n\nIf you want to run this on macOS with Apple Silicon, you may want to consider running without x86-64\nemulation:\n\n```shell\n$ rustup target add aarch64-apple-darwin\n$ cargo run --release --target aarch64-apple-darwin\n```\n\n\nCorrections \u0026 Contributions\n----------------------------\nIf you spot errors, have suggested corrections, or would like to help out with the project,\n_**please review the [CONTRIBUTING][] document for the most effective way to proceed.**_\n\nThis work  is licensed under a\n[Creative Commons Attribution 4.0 International License][cc-by]. You can find a copy of the license\ntext at [LICENSE][]\n\n[![CC BY 4.0][cc-by-image]][cc-by]\n\n[CONTRIBUTING]: CONTRIBUTING.md\n[LICENSE]: LICENSE\n[cc-by]: http://creativecommons.org/licenses/by/4.0/\n[cc-by-image]: https://i.creativecommons.org/l/by/4.0/88x31.png\n[cc-by-shield]: https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg\n[install-rust]: https://www.rust-lang.org/tools/install\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraytracing%2Fgpu-tracing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraytracing%2Fgpu-tracing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraytracing%2Fgpu-tracing/lists"}