Cyberpunk 2077

A very nice person by the name of ɅƲṨƘɅ in the Cyberpunk 2077 Modding Discord asked me: "Give a definitive answer on what to use — PT20 or PT21"

My answer was: Use PT20 or PTNextDon't use PT21.

I thought this probably requires some explanation, since I think many people might be surprised by my answer. Isn't PT21 the newest path tracing (introduced in Cyberpunk 2.1), and therefore "the best"? No, and no.

I think I'd better back that statement up a bit.

Let's start with first principles, and I'll come back to why I think PT20 and PTNext are the clear options. I will use some technical names, but you don't need to know a lot about them — it will all make sense by the end.

What is PT20?

PT20 was introduced in CP 2.0 and is, in simplistic terms, "naive" path tracing. Here's a bit about it:

  • It uses some clever importance sampling (IS) and very likely resampled importance sampling (RIS)
  • It selects lights and shadows it thinks might be important to you, and pre-denoises them using "ReLAX" and "RTXDI" denoisers
  • Then finally denoises the whole image with either ray reconstruction or NRD (Nvidia raytracing denoiser)
  • PT20 uses rays and bounces for indirect (diffuse) lighting — "rays" and "bounces" are what we call "naive" PT
  • And it uses samples and an environment map (kind of a lighting cache) for direct lighting

Again, you don't need to know these terms in any detail right now.

To PT20, I have also added the SHaRC bounce cache (added in CP 2.1) which should help the denoisers a lot, although it doesn't appear CDPR have implemented it completely.

So SHaRC accelerates bounce lighting, but doesn't really help the denoisers. We do get some additional bounce information from it, though, so it adds more lighting/shadow detail to PT20.

What is PT21?

PT21 (again simplistically) adds ReSTIR, which is "Reservoir of SpatioTemporal Importance Resampling". ReSTIR is actually very similar, in that it uses IS and RIS, ReLAX and RTXDI, just like PT20. (DI stands for direct lights.)

However instead of naive path tracing (rays/bounces), it builds up a reservoir of rays about the scene, which it can refer to as you move around. Compared to PT20, PT21 has more ray and bounce information it's captured over time and world space — at least, "kind of" (see below). There are practical limits to this, however (VRAM is one) and after some number of rays "correlation" increases, meaning new rays don't add any any useful information — it's a diminishing return.

Comparing PT20 to PT21

So, is ReSTIR better than naive?... Well, let's compare:
  • Both PT20 and PT21 use RTXDI plus SHaRC for direct lighting, so that's the exact same in both. It's only indirect (diffuse) lighting that's different
  • You can argue ReSTIR has "infinite bounces", however in practical terms bounces become meaningless after around 3. PT20 can also have 3 bounces too
  • Ray reconstruction and ReLAX are also caching spatiotemporal rays, so it's not quite as straightforward as "ReSTIR caches rays and PT20 doesn't"

Also all of these methods aren't perfectly implemented in CP. CDPR have met some challenges, tried some pathways, taken other pathways etc. It hasn't been a perfect story
 
Thinking about all these, especially that no method has been perfectly implemented, i would then look at a few questions:
  • Which one looks best?
  • Which is more performant?
  • Which can be made to look better (improved past vanilla)

Question 2 is more important than it might seem, because path tracing quality depends on a) reasonably high real FPS, and b) reasonably high primary resolution (before DLSS/FSR/XeSS upscaling). So performance is very important.

Why PT20 is an excellent choice

Based on these questions, I think PT20 is absolutely great if you have a lower-end card — probably up to a 2060S / 3060 in a PC or 3070 Ti in a laptop. Also, if you're also sensitive to smearing, i would stay with PT20 (or even RT+PT if you're really sensitive to PT noise).

I also don't agree with several of the settings CDPR selected for PT20 (and have changed them). Combined with adding SHaRC to PT20, it now looks substantially better than Cyberpunk 2.0's vanilla path tracing. There is absolutely no reason not to use it, and many reasons to use it.

What is PTNext?

If you have more GPU power, I would absolutely use PTNext, which is ReGIRDI + ReGIRGI. Note, there is no RTXDI here at all any more — PTNext still uses ReSTIR and ReLAX, but adds ReGIR. PTNext is the next generation of PT21.

How is ReGIR different from PT21?

If you'll remember, PT21 is ReSTIRGI + RTXDI... ReSTIR samples a few path traced pixels on the screen to see what's important (importance sampling, or IS), and then does this again (resampled importance sampling, or RIS), then sends more rays there.

You could liken this to "screenspace" path tracing — in that the smaller something is on screen, the less path tracing will be applied to it, because it's considered less important. Objects in the distance – especially faces, foliage, shadows, etc. – can end up with not much detail. RTXDI is similar, it tries to work out which shadows and lights are important and only focuses on those.

ReGIR is different: It divides the world space into a 3D grid. It then sends some rays to each grid sector to determine what's important in each 3D sector. It then sends more rays to those sectors. It is still doing IS and RIS — only in 3D. In this way it's an advancement of ReSTIR.

The major advantage here is it's more detailed and accurate, especially with objects farther away from the camera, but it's also a performance improvement, so has similar performance to PT21, possibly even better.

Comparing all three four:

Comparing the tech, the four options in Ultra+ are (I'll add RT+PT so you can see where it fits in, and why it's still important):
  • RT+PT == Ray traced direct lighting + path traced naive indirect --> ReLAX --> ( RR or NRD )
  • PT20 == IS --> RIS --> RTXDI + naive indirect --> ReLAX --> ( RR or NRD )
  • PT21 == IS --> RIS --> RTXDI + ReSTIRGI --> ReLAX --> ( RR or NRD )
  • PTNext == ReGIR --> IS --> RIS --> ReSTIRDI + ReSTIRGI --> ReLAX --> ( RR or NRD ) (...note: no RTXDI)

PTNext is in v4.0 (the beta) of Ultra+. we've worked out how to fully activate the ReGIRDI + ReGIRGI code pathway, which is in the engine, but not enabled (idk why!) On the other hand, we have been unable to fix the smearing noise in PT21.

If it doesn't bother you then that's 100% fine, and you probably have a high enough primary resolution and frame rate that it's less of an issue, or are less sensitive to it. However my observations are PT21 is not only the slowest of the PT options, it's also the lowest visual quality — and it can't be fixed (at least I haven't worked out how to).

Which to choose?

My answer is RT+PT, PT20, or PTNext. In my opinion there is no good argument to use PT21. I have only included it in Ultra+ it because I think people will expect it.

Interestingly with tuned settings, PT20 can get impressively close to PTNext with minimal noise. It's really PT21 that is a kind of an "in-between technology" with some obvious downsides.

Why did CDPR release PT21, then?

Why would CDPR release ReSTIR in v2.1+ as "improved path tracing"... Unfortunately part of my answer is the denoiser settings in CP 2.0 were not ideal. The vanilla settings introduced noise. So, yes vanilla CP 2.1 was an improvement, however with adjusted settings PT20 can actually look cleaner, and is generally faster.

Why didn't CDPR enable ReGIR themselves?

These are the realities of software development. Perhaps they plan to in a future release. Perhaps their developers got pulled from it when they were much closer than they thought? There is some trickery FireKahuna had to wrap around the engine as a save game loads, to get the ReGIR grid to build.

However the game loads, PTNext is very stable, and just about noiseless. It is also the closest to "ground truth" path tracing — if you were to spend a few minutes rendering the image in Blender, for example.

What mode do I run?

Right now I'm running PTNext at Medium, on a 3070 Ti (laptop), 1440p balanced, ~55-60 fps with FSR3 frame gen. If I'm heading into a very demanding area (Dogtown) I might switch to PT20, which runs at 60 fps. Almost all of my screenshots are taken with PT20 Fast/Performance or Medium/Balanced.

...Or, i could run PT21 at 45 fps with some smearing (no thank you).

So I would wholeheartedly recommend using use RT+PT, PT20, or PTNext. Forget about PT21.

Article information

Added on

Edited on

Written by

sammilucia

10 comments

  1. Denixerianer
    Denixerianer
    • premium
    • 1 kudos
    i have a 4090 and i read everything you wrote here but im still unsure about the settings i chose if they are fine:
    ingame settings: path tracing + ray tracing on with dlss balanced.
    mod settings: PTNext with High lighting

    Are these settings as they are supposed to be? Could i put dlss to quality or would it affect the look negatively? Im asking because of the tooltip it shows in the modmenu when hovering over PTNext. Thank you
  2. plinkplinkcat
    plinkplinkcat
    • member
    • 0 kudos
    Based on comments from CDPR in a recent article (around the time the 2.12a update came out iirc), it would seem that they are done with spending any developer time on the game at all as they move to other projects, which sadly means that it would be unlikely for them to finish officially implementing PTNext... Damn...
  3. AllOrcasAreNamedKevin
    AllOrcasAreNamedKevin
    • premium
    • 0 kudos
    Thank you for this explanation! I'm running a 4070 laptop, 1920x1200, and have been trying to figure out which preset would work best for my setup. This makes things much easier for me. I also really appreciate the work you've done for this community, and bringing high-end graphical fidelity to the masses. I had a 3070 laptop before this one, and your mod is what allowed me to see Night City the way it was meant to be seen without my game turning into a slide show.
    1. sammilucia
      sammilucia
      • supporter
      • 210 kudos
      nice! ty for takinig the time to say 😊
  4. adzlv
    adzlv
    • member
    • 0 kudos
    WOW this article is awesome. Never want to use pt21 again after trying pt20(look much better and clean~). I seem to get the opposite in fps though? pt20 is very smooth when stand still or look around, but as soon as i begin to move, fps drops a lot more than pt21. Not sure if naive indirect is causing this. Other than this, highly recommended!
    1. sammilucia
      sammilucia
      • supporter
      • 210 kudos
      are you running PT20 on High or Insane? ... it doesn't scale as well as the newer versions, personally i would only run it on Fast, Medium, or High ... i doubt you will see any difference at insane (it's diminishing returns)

      does that stabilise fps for you?
  5. drmandolin
    drmandolin
    • premium
    • 2 kudos
    Well, there you have it...
    I can't quite put my finger on it, but somewhere in this fascinating document lies the answer as to why my olde VCR clock always flashed 12:00pm.

    Great stuff!
    1. sammilucia
      sammilucia
      • supporter
      • 210 kudos
      bahaha

      or 11:11
  6. ScorpioRGc1
    ScorpioRGc1
    • premium
    • 0 kudos
    Thanks for this; its something I've wondered for a while myself and never found a clear answer on prior (and I often had a hard time noticing much difference between PT20 and 21 without really pixel-peeking.  I used PT20 for a long time and felt it looked nicer, but recently went to PT21 figuring it had the newer tech additions (as mentioned in the article).
    I was unaware of PTNext; I'm eager to try it out.
    1. sammilucia
      sammilucia
      • supporter
      • 210 kudos
      yw, yes i think this explanation is long overdue. i'm sitting there thinking why is everyone using PT21 when it's slower and noisier? and then i thought, oh, i didn't tell anyone ¯\_(ツ)_/¯