Giter Club home page Giter Club logo

sort's Introduction

SORT

Action status License

Introduction

SORT, short for Simple Open-source Ray Tracing, is my personal cross platform ray tracing renderer. It is a standalone ray tracing program, while works well in Blender as a renderer plugin. Simliar to other open source ray tracer, like PBRT, luxrenderer, SORT is also a physically based renderer. However, since it is a solo project that I worked on in my spare time, it is way simpler comparing with its peers.

This is just a brief introduction of SORT. For further detail, please check out SORT main page.

Features

Here are the features implemented so far:

  • Integrator. (Whitted ray tracing, direct lighting, path tracing, light tracing, bidirectional path tracing, instant radiosity, ambient occlusion)
  • Spatial acceleration structure. (OBVH, QBVH, BVH, KD-Tree, Uniform grid, OcTree)
  • Embree integration
  • BXDF. (Disney BRDF, Lambert, LambertTransmission, Oran Nayar, MicroFacet Reflection, Microfacet Transmission, MERL, Fourier, AshikhmanShirley, Modified Phong, Coat, Blend, Double-Sided, DistributionBRDF, DreamWorks Fabric BRDF, Transparent)
  • Subsurface Scattering
  • Fur, Hair
  • Volumetric Rendering
  • Tiny Shading Language
  • Depth of Field
  • Multi-thread rendering, SIMD(SSE,AVX) optimized
  • Blender 2.8 plugin
  • Cross-platform (Windows, Ubuntu, MacOS)

Images

Following are some examples of images generated by SORT Image Asset courtesy of Alex Treviño Image Asset courtesy of Morgan McGuire. Image Image Asset courtesy of rico cilliers. Image Asset courtesy of ScottGraham. The above rendered image is not used for any commercial purposes. Image Asset courtesy of MaTTeSr. Image Asset courtesy of Jay Image

sort's People

Contributors

jiayincao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sort's Issues

Better log system

It would be nice to have the following features:

  • Each message has their own level. Which level to be output can be configurable.
  • Each message also has their own type. One message can have multiple types at the same time.
  • Multiple output streams support. ( Visual studio output, external log file.)
  • Better implementation. Logging system doesn't need to be a singleton, global variable may be a better choice for all-life-time access.

Fix memory leak issue in SORT

This is a relatively big issue.
I haven't paid much attention since the project is transferred to github.

Relatively low priority.

PBRT exporter

Export the scene from Blender to PBRT so that we have a reference renderer to compare.

add layered bxdf

blender bxdf layer.
Current implementation of blending bxdf is not flexible because the blender factors can't be varied depending on the specific shading case.
Things like fresnel blending won't be supported.

Cross machine rendering

SORT supports multi-thread rendering. However, in order further exploit parallelism, cross machine rendering on a network may be a desired feature.

Remove pure reflection and refraction bxdf

Delta function introduces many special cases in basically every integrator. And it is likely impossible to sample a path with delta bxdf and delta light directly connected in current design.
Although it reduces dimension and increases performance a little, I don't particularly like its presence in my renderer because it can be totally replaced by Microfacet bxdf.

Need to delete the two bxdf in the near future.

Find a better way to sample Microfacet brdf.

The convergence rate of sampling microfacet brdf highly depends on its roughness, the less rougher it is, the more spiky the brdf is, thus it is more difficult to sample it, if not impossible.

Serialization of resource file

Serialization of the following input:

  • scene description
  • material
  • texture ( may not be necessary depending on situation )

Fix errors on Ubuntu

It has been a while before my last update on ubuntu...
Hopefully I have some time on this one.

Priority is relatively low.

Path tracing issue

Path tracing appears a little dimmer when DOF is enabled.
It doesn't happen to BDPT, light tracing or naive BDPT.

Will follow up the issue.

Fix material missing bug

Sometimes material is missing at the start of Blender.

It seems that certain material information is lost somehow.

Import PBRT scene

Import the data so that it is automatically converted to SORT data.

Error c2536 under msvc 2013

I find this error with MSVC 2013 under win7 x64. I are fixed on my local repo with this changes:

struct Splits
    {
#if defined(_MSC_VER) && _MSC_VER == 1800
        // Fix error c2536 under msvc 2013
        Split*		split[3] = {};      /**< Split planes along three different axis. */
        unsigned	split_c[3] = {};    /**< Number of split planes in each different axis. */
#else
        Split*		split[3] = { nullptr, nullptr, nullptr }; /**< Split planes along three different axis. */
        unsigned	split_c[3] = { 0, 0, 0 };                 /**< Number of split planes in each different axis. */
#endif
        //! Release the allcoated memory.
        void Release()
        {
            SAFE_DELETE_ARRAY(split[0]);
            SAFE_DELETE_ARRAY(split[1]);
            SAFE_DELETE_ARRAY(split[2]);
        }
    };

Greetings..

Support more texture types

Only bmp and exr texture file formats are currently support in SORT now.
Need to support more.

Current plan is to use a light-weight simple library CImg.
An alternative is to make one by myself, however it takes longer time and may not be as robust as CImg if less effort is devoted on it.

Fix bdpt bug

The current implementation of BDPT is far from a correct one.
Need to fix it in the future.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.