{"id":16768222,"url":"https://github.com/markphelps/go-trace","last_synced_at":"2025-03-21T23:33:57.195Z","repository":{"id":89051999,"uuid":"53803952","full_name":"markphelps/go-trace","owner":"markphelps","description":"Implementing a path tracer in Go","archived":false,"fork":false,"pushed_at":"2019-11-07T23:19:32.000Z","size":69,"stargazers_count":84,"open_issues_count":1,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-13T06:11:12.053Z","etag":null,"topics":["golang","graphics","path-tracer","ray-tracer","trace"],"latest_commit_sha":null,"homepage":"","language":"Go","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/markphelps.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":"2016-03-13T19:41:29.000Z","updated_at":"2024-06-13T01:12:35.000Z","dependencies_parsed_at":"2023-06-13T17:30:47.659Z","dependency_job_id":null,"html_url":"https://github.com/markphelps/go-trace","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markphelps%2Fgo-trace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markphelps%2Fgo-trace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markphelps%2Fgo-trace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markphelps%2Fgo-trace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/markphelps","download_url":"https://codeload.github.com/markphelps/go-trace/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221820617,"owners_count":16886222,"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":["golang","graphics","path-tracer","ray-tracer","trace"],"created_at":"2024-10-13T06:11:03.378Z","updated_at":"2024-10-28T11:15:38.962Z","avatar_url":"https://github.com/markphelps.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-trace\n\nImplementing a Path Tracer so that I can teach myself the Go language.\n\nNow with more concurrency! :sparkles:\n\nFollowing the E-book by Peter Shirley ['Ray Tracing in One Weekend'](http://www.amazon.com/Ray-Tracing-Weekend-Peter-Shirley-ebook/dp/B01B5AODD8), but in Go instead of C++.\n\nI also wrote a series of posts chronicling the process on [my blog](https://www.markphelps.me/2016/03/15/writing-a-ray-tracer-in-go/).\n\n!['Scene'](https://s3.amazonaws.com/markphelps.me/2016/out.png)\n\n[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE)\n[![Go Doc](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](http://godoc.org/github.com/markphelps/go-trace)\n[![Go Report Card](https://goreportcard.com/badge/github.com/markphelps/example?style=flat-square)](https://goreportcard.com/report/github.com/markphelps/go-trace)\n[![SayThanks.io](https://img.shields.io/badge/SayThanks.io-%E2%98%BC-1EAEDB.svg?style=flat-square)](https://saythanks.io/to/markphelps)\n\n## Options\n\n```\n$ ./bin/go-trace -help\nUsage of ./bin/go-trace:\n  -a value\n        camera aperture (default 0.010000)\n  -cpus value\n        number of CPUs to use (default 8)\n  -fov value\n        vertical field of view (degrees) (default 75.000000)\n  -h value\n        height of image (pixels) (default 500)\n  -n value\n        number of samples per pixel for AA (default 100)\n  -o value\n        output filename (default out.png)\n  -version\n        show version and exit\n  -w value\n        width of image (pixels) (default 600)\n  -x float\n        look from X (default 10)\n  -y float\n        look from Y (default 4)\n  -z float\n        look from Z (default 6)\n```\n\n## Running\n\n```\n$ make\ngo build -o bin/go-trace github.com/markphelps/go-trace/cmd/go-trace\n```\n\n```\n$ ./bin/go-trace\n\nRendering 600 x 500 pixel scene with 486 objects:\n[4 cpus, 100 samples/pixel, 75.00° fov, 0.01 aperture]\n\n[==========----------------------------------------------------------------------] 12.80%\n```\n\n## Tests\n\n```\n$ make test\n```\n\n## Output\n\nThe default output format is [PNG](https://en.wikipedia.org/wiki/Portable_Network_Graphics) and the default filename is **out.png**.\n\nThis can be changed by using the `-o` flag as described in the help output.\n\nEx: `$ ./bin/go-trace -o output.jpeg`\n\nCurrent supported file extensions:\n\n* .png\n* .jpg\n* .jpeg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkphelps%2Fgo-trace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarkphelps%2Fgo-trace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkphelps%2Fgo-trace/lists"}