{"id":13699581,"url":"https://github.com/mmp/pbrt-v3","last_synced_at":"2025-05-14T10:05:24.552Z","repository":{"id":33792618,"uuid":"37482419","full_name":"mmp/pbrt-v3","owner":"mmp","description":"Source code for pbrt, the renderer described in the third edition of \"Physically Based Rendering: From Theory To Implementation\", by Matt Pharr, Wenzel Jakob, and Greg Humphreys.","archived":false,"fork":false,"pushed_at":"2023-09-03T11:38:00.000Z","size":5729,"stargazers_count":4988,"open_issues_count":57,"forks_count":1207,"subscribers_count":252,"default_branch":"master","last_synced_at":"2025-04-19T09:22:09.957Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://pbrt.org","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mmp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-06-15T18:13:08.000Z","updated_at":"2025-04-15T20:34:03.000Z","dependencies_parsed_at":"2022-07-12T16:10:58.241Z","dependency_job_id":"4412e865-8282-470d-8853-e6441ec2a32e","html_url":"https://github.com/mmp/pbrt-v3","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmp%2Fpbrt-v3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmp%2Fpbrt-v3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmp%2Fpbrt-v3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmp%2Fpbrt-v3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mmp","download_url":"https://codeload.github.com/mmp/pbrt-v3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254119471,"owners_count":22017951,"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-08-02T20:00:37.086Z","updated_at":"2025-05-14T10:05:24.478Z","avatar_url":"https://github.com/mmp.png","language":"C++","funding_links":[],"categories":["Projects/Repositories","C++","Graphics","Lighting, Rendering \u0026 Shaders"],"sub_categories":["Rendering \u0026 Shader Theory"],"readme":"pbrt, Version 3\n===============\n\n[![Build Status](https://travis-ci.org/mmp/pbrt-v3.svg?branch=master)](https://travis-ci.org/mmp/pbrt-v3)\n[![Build status](https://ci.appveyor.com/api/projects/status/mlm9g91ejxlcn67s/branch/master?svg=true)](https://ci.appveyor.com/project/mmp/pbrt-v3/branch/master)\n\nThis repository holds the source code to the version of pbrt that is\ndescribed in the third edition of *Physically Based Rendering: From\nTheory to Implementation*, by [Matt Pharr](http://pharr.org/matt), [Wenzel\nJakob](http://www.mitsuba-renderer.org/~wenzel/), and Greg Humphreys.  As\nbefore, the code is available under the BSD license.\n\nThe [pbrt website](http://pbrt.org) has general information about both the\n*Physically Based Rendering* book as well as many other resources for pbrt.\nAs of October 2018, the full [text of the book](http://www.pbr-book.org) is\nnow available online, for free.\n\nExample scenes\n--------------\n\nOver 8GB of example scenes are available for download. (Many are new and\nweren't available with previous versions of pbrt.)  See the [pbrt-v3 scenes\npage](http://pbrt.org/scenes-v3.html) on the pbrt website for information\nabout how to download them.\n\nAfter downloading them, see the `README.md.html` file in the scene\ndistribution for more information about the scenes and preview images.\n\nAdditional resources\n--------------------\n\n* There is a [pbrt Google\n  Groups](https://groups.google.com/forum/#!forum/pbrt) mailing list that can\n  be a helpful resource.\n* Please see the [User's Guide](http://pbrt.org/users-guide.html) for more\n  information about how to check out and build the system as well as various\n  additional information about working with pbrt.\n* Should you find a bug in pbrt, please report it in the [bug\n  tracker](https://github.com/mmp/pbrt-v3/issues).\n* Please report any errors you find in the *Physically Based Rendering*\n  book to authors@pbrt.org.\n\nNote: we tend to let bug reports and book errata emails pile up for a few\nmonths for processing them in batches. Don't think we don't appreciate\nthem. :-)\n\nBuilding pbrt\n-------------\n\nTo check out pbrt together with all dependencies, be sure to use the\n`--recursive` flag when cloning the repository, i.e.\n```bash\n$ git clone --recursive https://github.com/mmp/pbrt-v3/\n```\nIf you accidentally already cloned pbrt without this flag (or to update an\npbrt source tree after a new submodule has been added, run the following\ncommand to also fetch the dependencies:\n```bash\n$ git submodule update --init --recursive\n```\n\npbrt uses [cmake](http://www.cmake.org/) for its build system.  On Linux\nand OS X, cmake is available via most package management systems.  To get\ncmake for Windows, or to build it from source, see the [cmake downloads\npage](http://www.cmake.org/download/).  Once you have cmake, the next step\ndepends on your operating system.\n\n### Makefile builds (Linux, other Unixes, and Mac) ###\n\nCreate a new directory for the build, change to that directory, and run\n`cmake [path to pbrt-v3]`. A Makefile will be created in the current\ndirectory.  Next, run `make` to build pbrt, the obj2pbrt and imgtool\nutilities, and an executable that runs pbrt's unit tests.  Depending on the\nnumber of cores in your system, you will probably want to supply make with\nthe `-j` parameter to specify the number of compilation jobs to run in\nparallel (e.g. `make -j8`).\n\nBy default, the makefiles that are created that will compile an optimized\nrelease build of pbrt. These builds give the highest performance when\nrendering, but many runtime checks are disabled in these builds and\noptimized builds are generally difficult to trace in a debugger.\n\nTo build a debug version of pbrt, set the `CMAKE_BUILD_TYPE` flag to\n`Debug` when you run cmake to create build files to make a debug build.  To\ndo so, provide cmake with the argument `-DCMAKE_BUILD_TYPE=Debug` and build\npbrt using the resulting makefiles. (You may want to keep two build\ndirectories, one for release builds and one for debug builds, so that you\ndon't need to switch back and forth.)\n\nDebug versions of the system run much more slowly than release\nbuilds. Therefore, in order to avoid surprisingly slow renders when\ndebugging support isn't desired, debug versions of pbrt print a banner\nmessage indicating that they were built for debugging at startup time.\n\n### Xcode ###\n\nTo make an Xcode project on OS X, run `cmake -G Xcode [path to pbrt-v3]`.\nA `PBRT-V3.xcodeproj` project file that can be opened in Xcode.  Note that\nthe default build settings have an optimization level of \"None\"; you'll\nalmost certainly want to choose \"Faster\" or \"Fastest\".\n\n### MSVC on Windows ###\n\nOn Windows, first point the cmake GUI at the directory with pbrt's source\ncode.  Create a separate directory to hold the result of the build\n(potentially just a directory named \"build\" inside the pbrt-v3 directory)\nand set that for \"Where to build the binaries\" in the GUI.\n\nNext, click \"Configure\".  Note that you will want to choose the \"Win64\"\ngenerator for your MSVC installation unless you have a clear reason to need\na 32-bit build of pbrt.  Once cmake has finished the configuration step,\nclick \"Generate\"; when that's done, there will be a \"PBRT-V3.sln\" file in\nthe build directory you specified. Open that up in MSVC and you're ready to\ngo.\n\n### Build Configurations ###\n\nThere are two configuration settings that must be set when configuring the\nbuild. The first controls whether pbrt uses 32-bit or 64-bit values for\nfloating-point computation, and the second controls whether tristimulus RGB\nvalues or sampled spectral values are used for rendering.  (Both of these\naren't amenable to being chosen at runtime, but must be determined at\ncompile time for efficiency).  The cmake configuration variables\n`PBRT_FLOAT_AS_DOUBLE` and `PBRT_SAMPLED_SPECTRUM` configure them,\nrespectively.\n\nIf you're using a GUI version of cmake, those settings should be available\nin the list of configuration variables; set them as desired before choosing\n'Generate'.\n\nWith command-line cmake, their values can be specified when you cmake via\n`-DPBRT_FLOAT_AS_DOUBLE=1`, for example.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmp%2Fpbrt-v3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmmp%2Fpbrt-v3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmp%2Fpbrt-v3/lists"}