Google-apps
Hoofdmenu

Post a Comment On: C0DE517E

"Hallucinations re: the rendering of Cyberpunk 2077"

12 Comments -

1 – 12 of 12
Anonymous Peter said...

Please, write more on the topic! I am curious how many things you'd be able to pick :-D Gj so far ;)

December 17, 2020 at 12:49 AM

Blogger 4DA said...

Great research.
One issue I see is that post pictures are lowres.

December 17, 2020 at 2:18 AM

Anonymous Anonymous said...

GI: A bunch of volume textures centered on the camera with hard to decode contents that only seems to do low frequency diffuse and no indirect shadows...

Seems like cascaded light propagation volumes (Crytek) to me .

December 17, 2020 at 6:07 AM

Anonymous Anonymous said...

"The raymarching is clamped using the scene depth, presumably to save performance"
Do you mean it's culled or clamped like:
z = min( z, depthZ)
?
If later, how is this optimization? Cache?

December 17, 2020 at 8:27 AM

Anonymous Erik said...

The hair rendering with depth slices is most likely Deep Opacity Maps (or some similar technique). For those interested: http://www.cemyuksel.com/research/deepopacity. It's used for "blending" semi-transparent strands of hair in the correct order. @C0DE517E: were you able to figure out how many such depth slices they are doing per hair style?

December 17, 2020 at 9:12 AM

Anonymous c0de517e said...

Anonymous #1 - I don't think it's LPV, these would be easier to "see" in RenderDoc as they store color-ish stuff. Also I don't see any voxelization of the scene. I also did not see anything destructible in the world, so I would not be surprised if some for of visibility for GI is baked in the level data.

Anonymous #2 - I mean the volumetric lighting & its raymarching stop when a surface is "hit" - the process does not go beyond visible surfaces - using the scene z-buffer to stop the volumetric marching. This allows you at a given point to stop processing froxels far away, but it also means you will see disocclusions which can be quite evident as now you have a very low-res buffer (froxels are big on the screen). Note that the main reason for computing volumetrics in a volume texture is to make temporal reprojection easier, otherwise you can just raymarch in screenspace in a low-res 2d buffer (well, another advantage is that you can then also do volumetrics correctly on transparencies, but you can hack that in 2d too - e.g. that's how COD:BO3 works, emitting 4 layers out of the 2d marching).

Erik - I really didn't spend time there - imagining it is indeed one of the "known" techniques - but in all these things the devil is in the details, details that I do not really want to go and reverse... FWIW, hair looks really good - e.g. in the character creator.

December 17, 2020 at 10:54 AM

Anonymous Anonymous said...

The analysis of obsolete, broken-by-design rasterization renderer.

December 17, 2020 at 1:56 PM

Anonymous Mikhail said...

This is very interesting, thank you. I think people are interested in explanation of why the hell it is so slow and why settings don't really affect FPS. Why is it only the resolution that matters, and why FPS stays low even in closed rooms without complex geometry. Would it be possible for devs to fix that?

December 18, 2020 at 3:11 AM

Anonymous c0de517e said...

Mikhail - I cannot say much about any of that because it's hard to profile stuff from a capture, and even then you only have the picture from the GPU point of view, know nothing about CPU.

We can try to reason though around what you told me.

If you say that in your or many cases resolution is the thing that affects framerate most then it should follow that you are GPU-bound, not CPU-bound, which in a way is great, as at least with GPUs you can always find ways to scale, while CPU issues in many cases really require to wait for engineers to change code.

As for why performance does not seem to depend on the scene, well you said that resolution is the main thing that changes performance, which seems to point that the problem is not how many objects you're drawing or how many vertices, so it is not surprising that it's less affected by the scene.

Deferred engines tend to look like this a bit more than forward engines, by design. If they are not CPU-bound, then the only pass that depends on objects and vertices is the g-buffer pass, all the rest of rendering works in screen-space and it is completely independent from what geometry you have, once the g-buffer is done, it doesn't matter if it contained 10 objects of 1000000. This is good, in general, a desired characteristic.

Why other settings affect FPS less? Well, not sure, but consider that resolution is a very powerful lever. If you, say, try to do half of the work per pixel in a given effect, say the awesome SSAO or SSR they have, then at best you're saving half of the time, but in practice often it's less as there are other costs to pay to move memory around and so on, that do not depend on the work you're doing per-pixel.

If you drop the amount of pixels you render on the other hand, you're for sure eliminating that work completely. And many effects cannot do "less work" at all, they do not have quality controls. Dropping resolution affects absolutely everything, not just a few things developers found the way to expose in settings...

Lastly, resolution is quadratic, e.g. going from 4k to 1080p gives you 4 times less work, not 2 times...

December 18, 2020 at 10:55 AM

Blogger NavJAck27 said...

You should load up nsight to profile the RTX and DLSS. I might do that tonight or tomorrow.

December 18, 2020 at 11:14 PM

Anonymous Anonymous said...

>quadtree compressed shadows of Black Ops 3
Could you please give paper name or some link?
Thanks.

December 22, 2020 at 8:08 PM

Blogger DEADC0DE said...

Anonymous: https://research.activision.com/publications/archives/sparse-shadow-trees

In general, all ATVI R&D stuff, from either studios or central technology, should be on research.activision.com, so it's not hard to find :)

December 27, 2020 at 1:18 PM

You can use some HTML tags, such as <b>, <i>, <a>

Comment moderation has been enabled. All comments must be approved by the blog author.

You will be asked to sign in after submitting your comment.
Please prove you're not a robot