Update Readme to better reflect current developments.

This commit is contained in:
Nathan Vegdahl 2018-12-30 17:23:55 -08:00
parent 764bdbeb06
commit 5488fde20e

View File

@ -1,31 +1,26 @@
# Overview
Psychopath is a path tracer, aimed at rendering animations and VFX for
film. It is currently still in an early prototyping stage of development.
Psychopath is a path tracing 3d renderer. You can read about its development
at [psychopath.io](http://psychopath.io).
This project is mostly for fun, but I do hope it eventually becomes useful.
That "for-fun" disclaimer aside, the long-term goals of Psychopath are to
support efficient global illumination rendering of scenes that are
significantly larger than available RAM and/or that contain procedural elements
that need to be generated on-the-fly during rendering.
This project is mostly just for me to have fun, learn, and play with ideas in
3d rendering. I do have vague hopes that it will eventually be useful for real
things, but that's not a hard goal.
The approach that Psychopath takes to enable this is to try to access the scene
data in as coherent a fashion as possible via breadth-first ray tracing,
allowing the cost of HDD access, expensive procedurals, etc. to be amortized
over large batches of rays.
Psychopath used to be written in C++ but is now written in [Rust](https://www.rust-lang.org).
The curious can take a look at the old C++ code-base [here](https://github.com/cessen/psychopath_cpp).
I occasionally blog about Psychopath's development at [psychopath.io](http://psychopath.io).
Unlike many for-fun 3d rendering projects, Psychopath is being designed with
production rendering in mind. I think that architecting a renderer to
efficiently handle very large data sets, complex shading, motion blur, color
management, etc. presents a much richer and more challenging problem space to
explore than just writing a basic path tracer.
## Building
Building Psychopath is mostly straightforward except for its OpenEXR dependency.
Psychopath is written in [Rust](https://www.rust-lang.org), and is pretty
straightforward to build except for its OpenEXR dependency.
If you have OpenEXR 2.2 installed on your system such that pkg-config can find
it, then as long as you have Rust (including Cargo) and a C++ compiler
installed, you should be able to build with this command at the repository
root:
installed, you should be able to build Psychopath with this command at the
repository root:
```
cargo build --release
@ -42,36 +37,18 @@ the same simple cargo command above.
If you have any difficulties, please feel free to file an issue and I'll try to
help out as I have time!
## Current Features
- Geometry:
- Triangle meshes (both flat and smooth shading)
- Lights:
- Spherical light sources
- Rectangular light sources
- Distant disc light sources (a.k.a. sun lights)
- Motion blur:
- Camera motion blur
- Deformation motion blur
- Transform motion blur
- Focal blur / DoF
- Spectral rendering (via monte carlo sampling)
- Full hierarchical instancing
- Light Tree sampling for efficient handling of large numbers of lights. (See [this thread](http://ompf2.com/viewtopic.php?f=3&t=1938) for an overview of the technique.)
- Shading:
- A simple material system that supports single-color Lambert and GTR BRDFs assigned per-instance.
# PsychoBlend
Included in the repository is an addon for [Blender](http://www.blender.org)
Included in the repository is an add-on for [Blender](http://www.blender.org)
called "PsychoBlend" that lets you use Psychopath for rendering in Blender.
However, most Blender features are not yet supported because Psychopath itself
doesn't support them yet.
If you have any trouble getting the addon working, please feel free to file an
If you have any trouble getting the add-on working, please feel free to file an
issue and I'll try to troubleshoot/fix it as I have time!
## Features Supported
- Meshes (rendered as flat-shaded triangle meshes)
- Polygon meshes.
- Point, area, and sun lamps (exported as sphere, rectangle, and distant disc lights, respectively)
- Simple materials assigned per-object.
- Focal blur / DoF
@ -82,9 +59,7 @@ issue and I'll try to troubleshoot/fix it as I have time!
# Contributing
I'm not looking for contributions right now, and I'm likely to reject pull
requests. This is currently a solo project and I like it that way. Eventually
when things become less playful/experimental I will likely want to start
collaborating, but that's quite a ways off.
requests. This is currently a solo project and I like it that way.
However, I _do_ want people to be able to play with Psychopath, so if you have
trouble getting it to build/run please file an issue! And if you want to fork