Stefan Werner Profile picture
Mar 5, 2020 8 tweets 4 min read Read on X
Thanks to Brecht for reviewing my patch, adaptive sampling has now landed in #b3d #Blender #Cycles.
For those interested in details:
It is following the approach outlined in sections 7.1.3 and 7.2 of this paper describing RenderMan:
graphics.pixar.com/library/Render…

The error metric is from section 2.1 here: pdfs.semanticscholar.org/8329/759ae51c9…
In layman's terms: Every other sample is written to a separate buffer. By comparing this extra buffer to the main image buffer, the renderer can estimate convergence.

Pixels receive progressively more samples until a convergence threshold or sample count limit is reached.
Pixels directly adjacent to a pixel that has not converged yet will also get additional samples, so that the algorithm can pick up on features that are rare but still contribute significantly, such as caustics.
Note that, as outlined by Kirk and Arvo, adaptive sampling can introduce bias. This should not be an issue for most use cases though. It might become a concern when you combine several independent low-sample renders to a single high-sample render.

researchgate.net/profile/David_…
Now, for those who are hoping for impressive speed gains: Adaptive sampling means that "it depends" is not just a phrase but indeed the case here.

Scenes that are clean with just a few pockets of extreme noise should benefit the most, I have seen render times cut in half.
Scenes that have mostly uniform noise throughout will not benefit as much. Worst case, I would not rule out that there could be a slight performance degradation in rare scenarios where are all pixels need the full sample count.
Care has been taken to make sure this works with all supported backends: @intel and @AMD CPUs, @nvidia #CUDA and #OptiX, @openclapi for @Radeon GPUs.

Rendering with CPU+GPU may lead to uneven noise distribution when the scene is not given enough samples to become noise-free.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Stefan Werner

Stefan Werner Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @stefan_3d

Jul 25, 2022
With @IntelGraphics Arc GPUs launching, I may or may not be sharing some of my experience developing for them here on Twitter.

Is that something you, my follower, would be interested in?
@IntelGraphics I’d be talking about GPGPU development using SYCL. For APIs like DX or Vulkan, you’ll have to ask someone else.
@IntelGraphics First, the basics: What do you need to get started?

I'm using SYCL to develop for Arc. If you don't have Arc hardware, you still can use SYCL: @IntelSoftware 's SYCL compiler supports not only many Intel iGPUs but also Nvidia and AMD GPUs!

intel.github.io/llvm-docs/GetS…
Read 15 tweets
Sep 24, 2020
@andrewpprice They're not the same thing. If you like, I'd be happy to explain the details to you, but it's too long to fit into a tweet.
@andrewpprice In a super dense format: The first use of ray tracing in computer graphics was proposed in 1968, and was focused on solving the visibility problem, not any light bounces.

dl.acm.org/doi/10.1145/14…
@andrewpprice When in the last century, people were speaking of ray tracing vs rasterisation, they usually meant Turner Whitted's method of computing global illumination through a recursive ray tree.

dl.acm.org/doi/10.1145/35…
Read 13 tweets
Oct 30, 2019
I uploaded the slides from my presentation at #bcon19 about Cycles Volume rendering. They include speaker notes, so hopefully they are useful for those who didn't attend or watch the stream.

1drv.ms/b/s!Ap47HIkOUU…
Keep in mind that I prepared this talk on the train to Amsterdam, only to redo it almost completely in my hotel room the night before the presentation. Neither the slides nor the sample images in it are polished.
And while I have your attention, I'd like to point to the fantastic presentation by Rob Silvestri @tangent_anim
Read 4 tweets
May 27, 2019
Ich finde dieses CDU Zitat entlarvend für alle Parteien:
"Den Grünen ist das Geschäft mit der Angst am besten gelungen. Sie haben die Angst vor dem Klimawandel in Zustimmung ummünzen können. Diese Ängste haben [..] die Ängste vor Terror und Kriminalität übertroffen."
Das traurige ist, dass uns (fast?) alle Pareien Angst vor igendeinem Buhmann machen wollen - Atomkraft, Migranten, Superreichen oder Terror. Und sich dann wundern, warum der Wähler so pessimistisch ist.

Wie wäre es mal mit postiven Zukunftsvisionen? Hoffnung machen und so?
Read 4 tweets
May 23, 2019
Ich versuche (mehr schlecht als recht) meinen Twitteraccount auf C++, #b3d, ray tracing, und Technik zu beschränken und mich aus Politik rauszuhalten.

Heute eine Ausnahme: Ein Entwurf zur Verschärfung des #WaffG, der Bastler ("Maker"), Heim- und Handwerker betrifft:
Die sogenannten Waffenverbotszonen sollen ausgeweitet werden auf Innenstädte, Schulen, etc. Klingt harmlos?
"waffenähnliche gefährliche Gegenstände gelten zum Beispiel Haushaltsmesser, Schraubendreher, Hammer und andere metallene oder scharfkantige Werkzeuge oder Holzstiele"
Wenn also der Hackspace in der Innenstadt zwei Blocks von euerer Wohnung entfernt ist, kann "mal eben schnell einen Schraubenzieher von zu Hause holen" schon ein Verstoß gegen das WaffG sein.

zdf.de/nachrichten/he…
Read 4 tweets
Apr 26, 2019
Not sure how many of my followers write volumetric path tracers, but to those who do, here's a very specific tip:

When implementing equiangular sampling for one-sided area lights, make sure to exclude samples that lie on the back side of the light. ImageImage
The literature I found (SIGGRAPH course notes, Kulla/Fajardo 2012 paper) don't go into exact details on how to do area lights optimally.

Source code and ugly drawing (it's mostly just a ray/plane intersection):
github.com/skwerner/blend… Image
(The images are after/before renders, solid angle sampled area light, homogenous infinite medium, equiangular sampling, 16spp #b3d Cycles)
Read 11 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(