{"id":17272146,"url":"https://github.com/slightknack/keikan","last_synced_at":"2025-07-27T16:37:50.615Z","repository":{"id":38332381,"uuid":"215146874","full_name":"slightknack/keikan","owner":"slightknack","description":"An elegant (imo) rendering engine written in Rust.","archived":false,"fork":false,"pushed_at":"2022-06-06T20:37:19.000Z","size":11794,"stargazers_count":56,"open_issues_count":7,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T11:45:08.125Z","etag":null,"topics":["3d-graphics","fractals","rendering-engine","rust"],"latest_commit_sha":null,"homepage":null,"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/slightknack.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}},"created_at":"2019-10-14T21:16:42.000Z","updated_at":"2024-02-09T14:12:44.000Z","dependencies_parsed_at":"2022-08-25T03:22:37.172Z","dependency_job_id":null,"html_url":"https://github.com/slightknack/keikan","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/slightknack%2Fkeikan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slightknack%2Fkeikan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slightknack%2Fkeikan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slightknack%2Fkeikan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slightknack","download_url":"https://codeload.github.com/slightknack/keikan/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248845918,"owners_count":21170867,"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":["3d-graphics","fractals","rendering-engine","rust"],"created_at":"2024-10-15T08:47:54.438Z","updated_at":"2025-04-14T08:32:01.698Z","avatar_url":"https://github.com/slightknack.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Keikan (警官)\n*An elegant (imo) rendering engine written in Rust.*\n\n**Keikan** is a multithreaded photorealistic rendering engine that supports\npath-tracing, ray-marching, Photo Based Rendering\n(through a principled implementation), and more.\n\nI've tried my hand a few toy path-tracers and ray-marchers in the past,\nand I wanted to write something more than just a toy.\nHaving just stumbled upon Rust, I decided to try my hand at it by\nimplementing a rendering engine from scratch.\n\nThis project was originally inspired by\n[*Ray Tracing in One Weekend*](https://raytracing.github.io/books/RayTracingInOneWeekend.html),\nbut after I knocked out the core engine, I've pulled from a number of different\nsources and my own experience to develop it further.\n\n## Results\nHere's a recent render of a ray-marched *Mandelbulb* (a type of fractal):\n\n![A Mandelbulb fractal](https://raw.githubusercontent.com/slightknack/keikan/master/renders/f%20-%20multithreaded%20renders/27%20-%20mandelbulb.png)\n\u003e Rendered in a little over 2 minutes on a potato.\n\nThere are some images bundles in this repository under the `keikan/renders/`\nfolder, ordered chronologically. Go check them out!\n\n## Design Goals\nKeikan is able to render a large variety of objects, including fractals to\nnear-infinite precision, due to its support of both path-tracing\nand ray-marching.\n\nRay-marching is rendering through the use of a\n[signed distance field](https://iquilezles.org/www/articles/distfunctions/distfunctions.htm).\nI personally got interested in computer graphics through writing ray-marching\nrenderer, so I decided that if I wrote another rendering engine,\nI'd have include ray-marching as a technique.\n\n## Getting Started\nTo render a small demo, clone this repository and run Keikan:\n\n```bash\ngit clone https://github.com/slightknack/keikan.git\ncd keikan\ncargo run --release -- ~/Desktop/demo.png  # where to save the image\n```\n\nYou should see some output right away. Keikan will spawn as many threads as\ndetected CPU cores, so it should be ~pretty~ relatively fast\n(for non-GPU-based rendering code, haha).\n\nI'd like to use GPU features, as I've made some ray marchers in GLSL,\nbut it seems like Rust doesn't have standardized GPU support.\nIf you know how to run Rust on the GPU, open an issue so we can discuss it\nfurther!\n\n## Why (the Name) Keikan?\nIt's Japanese for policeman.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslightknack%2Fkeikan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslightknack%2Fkeikan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslightknack%2Fkeikan/lists"}