This is a roadmap updated at the Cycles developer meeting at the 2017 Blender Conference. It's based on the priorities of the developers that were present, and should not be considered a complete or accurate plan. Plans may change over time, the purpose here is to make it easier for developers to cooperate.
The names in () indicate who has already done some work on these features and who you might want to get in contact with if you want to help, it's not so much a task assignment and on many of these topics we could use help from more developers in reviewing code or helping to finish patches.
Here is information on getting in contact with developers.
Targets in Progress
Some code exists for these features:
- Adapative subdivision: still an experimental feature and but only a few things needed to make it supported. Displacement already available. (Mai)
- UDIM textures for mapping multiple high resolution textures to one model. Patch is available waiting for review. (Lukas)
- Embree: for faster motion blur and hair rendering. BVH building would be moved to Embree, GPU traversal we would need to keep. Align cycles hair BVH with Embree. Enable TBB. (Stefan)
- Embree GPU GSoC needs some polishing (Stefan)
- Mipmaps and texture cache to render more textures with less memory usage. This requires some fairly deep changes to SVM, to pass along ray differentials through the nodes, while for OSL this is already automatic. The first implementation of this would likely use OpenImageIO, which means it would be CPU only to start. On the Blender side this would also require some changes to support .tx files and (auto)generate them. (Stefan)
- Thin Surface for Principled BSDF (Brecht?)
- Animation Denoising. There is a Cycles side implementation of this already, but Blender integration will require more work and design changes, for example to integrate with compositing or render farms. (Lukas)
- Light groups to render separate AOVs / passes for different light groups with minimal overhead, which then lets you tweak the light intensity and color in compositing. (Lukas) Paused
- Metallic BSDF: this might become a feature of the principled BSDF. (Lukas)
- Light linking to specify which lights affect which objects. (Tangent Animation) Paused?
- Cube map rendering for VR and panoramas. (Sergey)
- Network rendering to have multiple computers in a local network cooperate on the same frame. Almost finished. UI needs work. (Lukas)
- Persistent Data: Can be worked on as Blender 2.80 Depsgraph (Lukas)
- Filter Glossy for DoF (Sergey) Low prio
- Many light sampling Patch cleanup and optimization. Add as experimental option (Summer of Code)
- Light motion blur Difficult due to the LightBVH
- Volume rendering optimizations and sampling improvements. Check new papers like Delta Tracking
- OpenVDB rendering And other
- Denoising Move denoising to after rendering samples.
- Baking passes Improve baking passing (testing + UI node)
- Benchmarking Setup benchmark infrastructure for patch quality and performance testing (Blender Studio)
- Statistics & Logging
- Localize Memory Structures Performance update by replicating data local to CPU/GPUs.
- Device Specific BVH Testing different BVHs performance on scenes.
- Compressed Data Structures Use compressed data structures for normals. (Stefan)
- Statistics: for power users to investigate why rendering performance is slow, why memory usage is high, which objects or materials to optimize, etc. This would be a log generated that could be shown in Blender (InfoSpace), JSON, PythonAPI or as a HTML report, and possibly also debugging AOVs. Different levels for users and developers (Sergey)
- Adaptive sampling to focus samples on parts of the image that need them most. Ideally this should use the denoising passes. Some implementations exist, but we need something more robust and less dependent on tiles. (Stefan)
- Scrambling Patterns Needs to be done before adaptive sampling.
Implementation has not started on these, but they are considered important:
- Resumable rendering (for render farms) improvements, storing metadata in OpenEXR for better usability. (Blender Institute)
- CPU work stealing: rendering on the CPU requires small tiles to get a good work distribution, and may still not utilize all cores for the last few tiles. We would like to have a system where multiple cores can cooperate on the same tile.
- Blue noised dithered sampling for lower noise in viewport renders. Unfortunately only helps with a handful of AA samples, needs additional research to become practical. (Lukas)
- Micro jitttered sampling for better performance on GPUs. Correlation artifacts remain even with high AA samples though, needs additional research to become practical. (Lukas)
- Tin client (Cycles stand alone)
Some places to look for more work or ideas: