Git Product home page Git Product logo

imbatracer's People

Contributors

baluluyakalulu avatar leissa avatar madmann91 avatar pgrit avatar ralfjung avatar richardmembarth avatar stlemme avatar

Stargazers

 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  avatar  avatar  avatar  avatar  avatar

Forkers

microcompunics

imbatracer's Issues

Improving the cache performance of the connection/merging

The connection and merging steps have a poor performance.

We can improve it by:

  • Using an importance sampling scheme that favors merging/connections with vertices that are close to each other in memory + Sorting vertices spatially in the cache.
  • Cutting the merging/connection loop in two.

Implement MIS for Path Tracing

MIS in Path Tracing can greatly improve the quality of the rendered images, at a very little cost. It is also very easy to add, which makes it a must-have.

Get rid of commented code

I see several places where the code has been commented. We should rid this from the code base:

  • For the cases where the code is commented for testing, we should simply remove it, or add a specific #ifndef NDEBUG clause around it.
  • For the cases where the commented code is here to suggest an alternative (e.g. the mis heuristic), we should have a couple of defines with documentation for them (or templates with constexpr, which I would prefer).

Scene API

There should be a clean scene API in the frontend.

Support for dynamic geometry

The renderer currently does not support dynamic geometry. We need to implement the necessary boilerplate to support rigid body transformations.

Improving the material system

Before we can investigate rewriting it with AnyDSL, we should think about separating the parts where the textures/material data is loaded from the pure material computation (i.e. BRDF/BTDF). This would allow us to have a more declarative syntax for materials, and maybe a graph representation: We could then link inputs (texture color/normal, ...) to a chain of computations.

Improving the documentation

Currently, the documentation is pretty lacking. We need a better documentation (through Doxygen). This obviously goes hand-in-hand with a better API.

Blender Interface

Having an interface to a 3D software like Blender would ease testing and allow us to experiment with even more scenes.

Something simple that suffices for our purposes does not appear to be very difficult, see for instance: https://agraphicsguy.wordpress.com/2015/09/06/my-external-renderer-for-blender/

We would have to come up with a simple (node based) material representation that can be edited in Blender, and create (or find) a file format to store those materials.

Cleaner API for the Schedulers

I would like to clean up a bit the scheduling API. More precisely, we should:

  • Create a derived class of RayGen, TiledRayGen, which should be more restrictive than the RayGen class.
  • Loosen the restrictions of the RayGen class. The RayGen class no longer needs a precise width, height and sample/pixel. We could replace that with a virtual function estimate_ray_count that returns an estimate of the number of rays.

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.