Cycles X

Today it’s been exactly 10 years since Cycles was announced. In the past decade Cycles has developed into a full-fledged production renderer, used by many artists and studios. We learned a lot in those 10 years, things that worked well, but also things that didn’t work well, or became outdated as rendering algorithms and hardware evolved.

We’re keen to make bigger improvements to core Cycles rendering. However some decisions made in the past are holding back performance and making it difficult to maintain the code. To address that, Sergey and I started a research project named Cycles X, with the aim is to refresh the architecture and prepare it for the next 10 years. Rather than finding quick fixes or optimizations that solve only part of the problem, we’re rethinking the architecture as a whole.

The Project

Broadly speaking, the goal of the project is to:

  • Improve the architecture for future development
  • Improve usability of viewport and batch rendering
  • Improve performance on modern CPUs and GPUs
  • Introduce more advanced rendering algorithms

Our first target was to validate the new architecture. To that end, we’ve implemented a prototype of a new GPU kernel, and new scheduling algorithms for viewport and batch renders. There’s just enough functionality to render some of our benchmark scenes now.

Current Cycles X kernel graph

Today we’re sharing some initial performance results, and publishing the code to collaborate with Cycles contributors. A technical presentation for developers on the new architecture is available, and the code can be found in the cycles-x branch on git.blender.org.

There is much be done. We expect it will take at least 6 months until this work is part of an official Blender release.

Initial Results

First, some results from GPU rendering with well-known benchmark scenes. Scenes have been modified to remove features like volume rendering, which are not implemented yet.

Be aware that the numbers will change as we keep working on the new architecture. OptiX support was added just a few days ago by Patrick Mours.

The most significant improvements are in interior scenes with many light bounces and shaders, where the new kernels can achieve higher occupancy and coherence.

CPU rendering performance is approximately the same as before at this point, but the new architecture opens up new possibilities there as well.

Secondly, we’ve been working to improve viewport rendering. Faster rendering kernels help, but we also found that improving the scheduling, timing, and display mechanisms can make the viewport feel more interactive. New viewport support for adaptive sampling and batching samples make it so the image cleans up faster once the first few samples are done.

Looking Forward

In the coming months we will try more optimization ideas, and restore missing functionality. When functionality is missing, it’s usually because we want to take a different approach in the new architecture. Some examples:

  • Volume rendering: we plan to implement ray-marching and light sampling with more modern algorithms
  • Shadow catchers: we’ll try a different algorithm that can take into account indirect light
  • Multi-device rendering: we’ll experiment with more fine-grained load balancing without tiles

Beyond this, the new architecture should let us more easily fit in rendering algorithms like path guiding, which we will experiment with and research how they can be made GPU friendly.

Deprecation

As part of the new architecture, we are removing some functionality. Most notably:

  • OpenCL rendering kernels. The combination of the limited Cycles split kernel implementation, driver bugs, and stalled OpenCL standard has made maintenance too difficult. We can only make the kinds of bigger changes we are working on now by starting from a clean slate.
    We are working with AMD and Intel to get the new kernels working on their GPUs, possibly using different APIs (such as CYCL, HIP, Metal, …). This will not necessarily be ready for the first release, the implementation needs to reach a higher quality bar than what is there now. Long term, supporting all major GPU hardware vendors remains an important goal, and we think that with this new architecture we’ll be able to better performance and something stability. It is just a matter of time until more GPUs are supported in Cycles X again.
  • Branched path tracing. We are working to improve sampling algorithms to make this obsolete, and more automatically assign samples where needed. Improved adaptive sampling and light importance sampling are key here.
  • NLM denoiser. AI denoising algorithms and in particular OpenImageDenoise generally yield better results, and we will optimize the architecture and workflow for them.

These features will remain available and supported in 2.83 and 2.93 LTS releases.

121 comments 91,941 Views
  1. Can you turn on Ray Tracing in opencl before the new api comes out to give amd 6000 series users a wave

    • Yes! Please I would love to see something like this for AMD cards!

  2. Hope to turn on opencl’s Ray Tracing in the last

  3. So the new architecture of cycles will be shipping with a 2.93 version?

  4. Wow, that performance increase is crazy, and super cool to see how using the Intel denoiser in the viewport will be viable now. Impressive stuff! 😀

  5. Since, Cycles X project is to gear up for the future, maybe it would be good time to change to or incorporate spectral rendering as well?

    • Interestingly they note for the caustics slide of the developer post to cross reference with PBRT v.4 which is fully spectral. Buuuut they haven’t mentioned it anywhere really so probably not going to happen.

  6. Great news!
    For the multi GPU work, are you aware of Miros Jaros work presented at GTC this year?

    Jaros et al GPU Accelerated Path Tracing of Massive Scenes, ACM Transactions on Graphics 2021

  7. Will sharp caustics for glass and other reflective and refractive surfaces ever be implemented in the new cycles?

    • They say that they will try to experiment with this (path guading etc)

    • See also slide 22 about caustics in the technical presentation (linked to in the article above).

    • Yes, it was explained on the video, cycles will be finally be able to produce caustics

    • cycles can already do that

  8. So many awesome news !

    Thx a lot Brecht and Sergey,

    Out of curiosity, do you plan to make Cycle spectral with the work done by Smilebags (and others), or is it to much work/out of scope as for now (or maybe the work already done is not usable as it…).

    https://devtalk.blender.org/t/thoughts-on-making-cycles-into-a-spectral-renderer/2192

    Thx a lot,
    Francis

  9. Hope Blender will not create a Nvidia only situation as the rest of the industry have to be, but you are right on the OpenCL stall.

    Good luck, keep the good work devs!

  10. There was an issue with objects far off from the scene origin causing artifacts. Stefan Werner adressed this with a patch (origin offset) based on a project by Matt Pharr (https://pharr.org/matt/blog/2018/03/02/rendering-in-camera-space.html).
    Not understanding the first prototype graphic I am wondering if this will not be an issue anymore?

  11. WOW! That is fast! I like it.

  12. Priorirising NVidia’s walled garden in cuda/optix is worrying for software which prides itself on being open source. Its maybe time for amd and intel to consider re-routing their development fund contributions to dedicated staff employed by them

    • Nvidia has two devs working on Blender, so that’s probably why.
      AMD and Intel can do the same, they just need to fund it.

      • Yeah – AMD, Intel (with their upcoming Xe GPU) and even Apple need to see this as an opportunity to do something different. Otherwise they risk another 10 years of the current status quo, were their hardware users are treated as 2nd class citizens

      • Pretty sure AMD also have staff working on blender E.g. submitted the Radeon denoiser patch which failed to make it into 2.93 (equivalent of Optix). Maybe need a bit more support and focus from the blender dev team

  13. Was hoping to see some mention of caustics / refraction support….

  14. Great job! Looking forward to playing around with it (:

    Happy to be a dev fund contributor!

  15. I hope they don’t forget the new ARM Apple chips and do something for those too. Metal implementation please 😉

    • Rendering on a Mac is for people who buy expensive half eaten apple logo.
      Blender has no priority to implement such feature for 0.01% of their users.

      Get a real cpu/gpu not apple crap

      • Developers don’t buy Mac for the logo, they buy it for the OS. Blender’s Mac user base might be higher if it worked properly without boot camp, and on AMD GPUs. Mac is brand of computer used by hundreds of millions of artists. Why ostracise them?

      • You don’t need to be that rude. I’m not an Apple fan at all, but Apple product are used by many, many artist, mainly for the environment, its good integration with Adobe creative suite, the very good display and the entire Apple ecosystem, allowing to begin to work on your tablet, then switch seemlessly to a powerful workstation. And although not as powerful as the latest sever CPU from AMD, their M1 chip is by far one of the most powerful ARM CPU you can get, and its native performance does compare to a high-end consumer amd64 CPU (e.g. 11th gen Core i7), and its x86 to ARM compatibility layer is really, really good.
        And btw, the cycles-x branch is built for MacOS, here: https://builder.blender.org/download/branches/

      • Gheez. Grow up Sam.

      • totally agree!!!!!

      • How ignorant/naive. are you?

        I’ve come from a background using Symbolics, Amiga pro, Silicon Graphics, Unix, Windows and Apple ,over the years.

        I’m far from an Apple fan, but the simple fact is professionals collaborate, and that often means cross platform collaboration. So, in this case, my editing team primarily use FCPx. I also use Logic for sound design. I also use resolve for edit/grading, Ae for compositing and blender for 3D.

        All the above run on Apple, not all run on Windows/Unix, so from a professional point of view, (rather than childish fan boy point of view) apple support is very important.

        I can use blender on my apple laptop, still edit collaboratively with FCPx projects, on a machine which far outlasts and outperforms my win laptop, yet still render those prrojects on my windows based renderfarm. The new apple chipset and its performance appears to be superb for professional users on the go.

        Maybe you need to stop being ridiculous. You don;t get bonus points for brand loyalty

    • There’s already Metal API support via ProRender, OctaneX and Redshift renderers. The latter two runs on ARM.

  16. The prospect of this being Nvidia-only on release sure sucks 😕

    Although admittedly I don’t benefit from the current kernels on my AMD GPU anyway, so using the CPU for rendering won’t be a change for me personally. It’s more exciting to think there could be better kernels in Vulkan or something in the future thanks to this work.

    • Looks like there are some viewport speed improvements for cpu users, at the very least.

      https://www.youtube.com/watch?v=INa-oT7TlzU

    • I was thinking the same thing but after some research I discovered that while Vulkan can do compute in theory it’s lack luster and not a focus of the API at the moment. This video explains the challenge of porting programs from CUDA to non-CUDA compute https://www.youtube.com/watch?v=KfDQb6xOkXg

      I’m just another armchair expert but it sounds like it would be much better for Cycles X to adopted SYCL for non-Nvidia compute so hardware support can be left up to the SYCL implementation (hipSYCL, Intel SYCL, ComputeCpp etc) rather than Blender supporting several APIs directly.

      SYCL is also written as a CPP/python namespace just like CUDA, no handwritten GLSL or SPIRV required.

      • Makes sense! I always sort of wondered why Vulkan didn’t get attention as a compute platform. It’d be nice if it could get some extensions for better compute, since Vulkan is really convenient for an end user and current dedicated compute platforms really aren’t… CUDA is however many gigabytes for some reason, and ROCm is such a packaging tangle I’ve never had the courage to install it. The fragmentation doesn’t sound fun from a developer perspective, either.

        • Good news! There’s already a prototype Vulkan backend for SYCL2020, Sylkan (https://www.youtube.com/watch?v=FcWc1nN6MAQ)

          What makes me excited about the concept of Blender + SYCL however is being able to use accelerators faster than a GPU on the same version of Blender by simply switching to another SYCL backend be it CUDA, Vulkan, Metal, OpenCL, raw ASIC/FPGA hardware calls, distcc like software for distributed TCP/IP compute or something else we don’t know we want yet.

          All Blender would need is a good SYCL2020 frontend to interface with the backend options installed on your system.

  17. Two questions: will this also have a positive effect on 1060 cards? When will a first version be available for a first look?

    • This will probably see a speed up for your GTX 1060. A version of Blender with Cycles-X can be downloaded from here: https://builder.blender.org/download/branches/

      Just find the one labeled “Cycles-X branch” and download it. There are other ways to get the Cycles-X branch, but this is the simplist.

    • I saw improvements on my 1050ti

    • It is awesome.
      There is any chance to make the architecture open for a future camera lens simulation update?

  18. Hello! There is already a build in experimental branches downloads. Quite impressive in my tests rendering a 30 million polygons bust with several 8k+ textures in viewport. Even making changes on the shader had a faster response and shorter updating times then before. Looking forward for those CPU optimizations.
    Congratulations to the Brecht and Sergey!

  19. I was curious also about data handling improvements. Texture and mesh. In the past Cycles chokes where Arnold can render the same amount of data. I don’t know if that is at the render engine level or within Blender itself. Can anyone comment on that? And what If anything Cycles X project will be doing to address this?

    • Probably both.
      Blender core need a rewrite. It’s currently quite bad.

  20. This is beautiful.
    Thank you so much.

  21. when will it be available to use?

  22. Another shout for Metal support…

  23. Is there a higher-res of the windmill thumbnail?

  24. I’m wondering when will Cycles support Metropolis Light Transport, it’s just one of the best algorythms there is, even better than Bidirectional path tracing and looks like so few people actually know what it is

    • https://developer.blender.org/T38401
      Ironically Rood was working on it like 7 years ago but it got scrapped. However, since it seems like tiles were big issue and one of the goals is to not rely on tiles for performance anymore.. Maybe this will be part of the efforts to improve caustics.

    • It is good, but it has its’own problems. I’m sure Cycles developers know about it enough

  25. I don’t know why AMD keeps funding Blender when Blender repeatedly fails to devote any resources to supporting AMD hardware properly. How can you even tell if your software architecture is any good if you can’t even get it to run on more than one type of hardware?

    • Agreed. There is no denying that CUDA/Optix is the best software support at minute – but not sure why AMD should pay to support even tighter integration and preference (or why blender is indirectly helping a closed source vendor secure their lock in). AMD should at least consider downgrading / removing dev fund support and use the money to hire AMD dedicated staff to work on blender development

      • Agreed, after all this time and effort it’s clear the nvidia money hat has put brainworms in the Blender devs. AMD need to stop giving them money and do it themselves.

        It’s pretty clear this is a toxic culture issue, where nvidia fanboys have steered an open project into doing one manufacturers advertising work, probably while simultaneously saying cringe things like “m$” and fellating nvidia because somehow AMD are the Devil after they bought a videocard once in 2006 that didn’t work with their motherboard or some crap 😂

        • nv to high cuda optix, amd requirements vulkan, intel requirements oenapi, everyone is their own provider, one can not offend, blender began to choose to bind cuda is not a good idea

  26. Amazing work.

    I already use a 3090 card with Blender, and even in 2.92 using Optix can move around relatively fast, but this is insane.

    The value of being able to work with your real textures, materials and lights and see how they will end up and doing adjustments on the fly, has accellerated my learning faster than any time before in my 20+ year Blender use history. This is HUGE.

  27. What about nested dielectrics?Will it ever be?

  28. Can we please add the light linking feature to blender cycles 🙏
    It helps a lot for the lighting artists.Wehave been requesting this feature for years now..We absolutely love blender and we have been working exclusively on blender since 7 years now.Would love to see this as a feature in cycles x
    Loads of love.
    God bless.

  29. Can we please add the light linking feature to blender cycles 🙏
    It helps a lot for the lighting artists.Wehave been requesting this feature for years now..We absolutely love blender and we have been working exclusively on blender since 7 years now.Would love to see this as a feature in cycles x
    Loads of love.
    God bless.

  30. Wow this is amazing!
    I know this is a feature request post now but it would be incredible to see an adaptive environment sampler like Corona and vray to make portals obsolete.

    Also improving glass would be amazing. The standard glass shader I feel is the worst out of all major render engines, let alone the caustics features now available which in Blender requires an obsurd amount of special nodes. So a little rework there would really go a long way!

    Finally allowing for light linking would be fab! The ability to turn on and off objects from certain lights would be soooo gooood!

    I absolutely love blender and it’s always such a shame to see people moving over to other render engines, so if cycles can bring people back with feature available in other engines then that would be amazing!

    Sorry this post just got me super excited that it’s being overhauled and I’m so excited to see what new features are coming out!

  31. I believe we need more few things which are caustics and light groups

  32. I’ve recently moved back to Corona since Cycles does not have correct caustics, light mixing and is generally slower than Corona. Stil I am excited with this info 🙂 It is right direction ^U^

  33. Amazing! Looking forward to it!
    Next on the list:
    – light linking
    – spectral rendering
    – MLT

  34. Is there interest in supporting a Metal version of Cycles X for MacOS?
    Please, try to port Cycles X to MacOS 🙏🙏🙏

  35. I hope to give amd’s gpu quickly do new api I’m waiting to use

  36. Thank you for such research!

    It is already quite an effort to make Blender on Linux able to detect AMD GPU, but at last perf is not on par. It’s good to see movement on this front, and I’d love to see more neural stance on supporting Nvidia, AMD, and Intel GPU, not too much weight on one or another, treat users who own each respective GPU equally.

  37. Any plans to allow Cycles to be built on standalone basis OR included with hydra delegate included so it more closely competes with 3rd party paid renderers?

  38. I am sure ‘X’ means macOS Metal support.

    • So it was with Octane. In this case, it most likely means 10 years Cycles… But I’m really looking forward to macOS Metal support 🙏

  39. This is very exciting! I hope they’ll also have a closer look at Shadow Terminator – and light linking.

  40. Any love portion for the architecture to support Non-Photorealistic Rendering? Also Light/shadow Linking? Particle trails?

  41. Hi and thanks for this welcome Cycle X introduction.
    Will Caustics rendering be improved and accurate ?

  42. Caustics should be the priority because it just isn’t there. Any other well known rendering engine has it, including the open source ones like LuxCore. I personally had to abandon Cycles because of how it renders glass objects, even though I like it a lot for other features.

    Also hope very much that Cycles will focus on photorealism which is crucial for architects and designers. Right now even the best interior renders made with Cycles look somewhat cartoonish.

  43. Is going full progressive is really the only way?, the reason i’m asking is Cycle-X obviously render so much faster, especially when rendering a small size image + adaptive sampling. Afaik Octane and any other GPU rendering even they are progressive rendering, the image output rendering still updated via tiles/bracket.
    Can’t we still keep the tiles rendering mode though?

  44. I really think it would be nice if you guys implemented custom world settings for specific materials, so maybe different parts of a model, based on material, have a different reflection map or environment map. It could be great for making some things look nicer!!

  45. I think this might also hopefully provide some benefit to those with weaker hardware (older-gen, or a lower-end model within a particular generation of GPUs) besides from those having the money to get a better or the-best-of-the-best in hardware of today or the future.

    Though if this ended up requiring a higher CUDA compute capability level or having new requirements that older GPUs can’t fulfill then that might be questionable but if it doesn’t require newer hardware than what’s being required now for CUDA rendering then hopefully my opinion would remain valid.

    Besides from that, can’t wait to see Cycles X in action for the general public on various kinds of hardware, low-end to high-end.

  46. -Automatic Mipmapping for GPU VRAM Optimization.
    -Spectral Rendering with Caustics.

    That would make Cycles a Powerful Beast!

  47. Tried Cyclex X, it’s great but… Looks like some features are not there yet, or it’s a bug: When you activate GPU + CPU (CUDA/OptiX) it ignores CPU and renders using only GPU which mean that performance gain is not as high as it can be.

    • Oops, just read the last part where is says that multi-device rendering is not supported atm.

      • I use a 1660 and a 1060 – Cycles X is already faster using one gpu than using 2 in 2.92. Can’t wait for multi GPU.

    • how you downloaded it plz

  48. Mac OS X metal support is really needed, at this moment cycles renders only on cpu, so quite powerful AMD gpu is just chilling, Octane did really great job implementing it into apple, so I’m having big hopes for Cycles too. At this moment I just find out blender 3.0.0 cycles-x branch in experimental build. https://builder.blender.org/download/branches/

  49. – Gradient Domain Path Tracing please.
    – Make cycles-x research friendly. Many research on rendering algorithms are made with other renderers. If it’s made with cycles, it would be faster to integrate the new algorithms in the blender.

  50. OpenCL is a universal solution for all platforms, it has hardware independence and freedom. And you moved away from freedom and independence and began to spread your legs in front of the monopolist Nvidia! Shame on you Blender Foundation!

    • Not only do you have no idea what you’re talking about, you’re insulting people providing you with a state of the art render engine for free.

      Sometimes I just can’t even

      • Free, only you did not take into account that for this now you need to buy a video card for $ 2000. You seem to be an American, but for some reason you don’t understand what freedom is. Why should I be tied to a particular brand of hardware?

  51. Can Cycles X run on CPU?

  52. Answering a few commonly asked question:
    * While OpenCL is missing right now we are actively working with AMD and Intel on alternatives. It’s just a matter of time until support for these GPUs comes back. The precise APIs we will use is not something that is set in stone, but note that there are open standards like SYCL that are more modern alternatives to OpenCL.
    * For macOS/Metal, we think the new architecture will be easier to port and provide better performance. There’s nothing specific we can announce regarding that, but it’s probably just a matter of time until this happens.
    * There are lots of good feature suggestions in the comments. There are of course many improvements we plan to do, this blog post is specifically about the Cycles X research project, it’s not a complete overview of what will happen this year or next.
    * Regarding caustics, path guiding algorithms mentioned in the post are one way of rendering those more efficiently.
    * Tiled rendering will be back to support high res renders, but in a different form. All devices and CPU cores will likely be cooperating on the same tile.

    • I hope that in the future cycles-x to join the stable version of the software even if the new api is not yet ready, do not cut opencl, similar to ecycles, can not let me update more and more back to the front it

    • And when will you introduce SYCL support to Cycles X? Where is hardware independence? Where is the true concept of open source software? Or have you sold yourself to Nvidia?

    • Thankyou for your hard work Brecht (and for your patience with some of the comments here which have been less than respectful or helpful).

      Cycles X is going to be amazing, keep up the great work. 😀

  53. Is there a way to search the bug tracker for just Cycles X issues? And a proper place to report things? That kind of important info should really be included in this blog post (and any others about it, TBH). I’m testing it and have encountered an odd issue with a material being partially transparent that shouldn’t be.

    • It’s too early for bug reports, there are many things known to be missing or broken, as this is only a prototype. It will be a few months before we are ready for that. We have a set of hundreds of automated test renders, the first priority would be making those pass first, then we look into additional issues.

      In general for Blender development, there is no bug triaging for development branches. This only becomes practical once developers consider the feature ready for master.

  54. I agree with lots of people here about light linking, it’s really something lacking in Blender and would be great help for many artists

  55. I’d like they made truly pbr lights. I’d like to have the same light quality from Maxwell Render in Cycles. Also, improved bokeh and exposure controls like ISO and others; and a LUT file loader.

  56. where can I download the pvt_flat scene? it looks so great.
    I want to try and learn it. but I didn’t find in the demo scene page.
    thanks.

  57. That is just mind-blowing! Would you please consider adding light linking functionality to it? This is a must for so many architectural rendering and a lot of projects in general. That would make Blender just perfect!

    Thank you!

  58. is this available in blender 3.0?

  59. AMD needs to stop giving money to this ungrateful project.

    • nv requires cuda optix, amd requires vulkan, intel requires oenapi, everyone is their own provider, one can not offend, blender began to choose to bind cuda is not a good idea

      • Vulkan API is open source, works on almost all GPUs, OpenCL open source works on any CPU and GPU. CUDA is proprietary and only works on Nvidia graphics cards, OptiX is proprietary, RTX is proprietary. Can you smell the difference?

  60. everything is fine, but when we type ctr+shift+T in the material work it gives options to select all file and import the textures in the previous versions, but in this new cycles x update that shortcut is not working, so i request blender team to add that.

  61. Need MacOS Metal support!

  62. Great! Will Cycles X also support distributed GPU rendering across the network? I’m missing this feature since the excellent Blender 2.79 pigeon build.

  63. Tested it using Nvidia GT-710: Cycles X is about 10-20% slower (no joke)

  64. On a Mac with a AMD Radeon it’s slower by 10%… so, no difference basically.

    I know, “you should not render on a Mac” but nothing i can do about that.

  65. Please do not get rid of Branched Path Tracing. Automation is all fine and good but we still need to maintain a way to control things manually. I have nothing against Adaptive Sampling and LIS but I don’t completely trust automation because if there are certain scenes where it fails to do anything meaningful (and there will certainly be such scenes) we need a way to manually adjust subsamples. Manual control can never become obsolete.

  66. Maybe some kind of lightcache for speed up GI and interior renderings?

  67. We (I guess millions of users) only have CPU with default gpu, no fancy stuff.

  68. What I do to work my rx 570 for mac in blender

  69. But error vcruntime140.dll

  70. I am using CyclesX to render microdisplacement procedural shaders. I notices there is a more than 10x slowdown when adding Bump vector to the shader.

  1. Leave a Reply

    Your email address will not be published. Required fields are marked *

     
share this story on