Globalisateur

Globby
Veteran
Supporter
This is a summary of the talk about the checkerboard rendering used in Dark Souls Remastered on Pro and XBX. It's a work done by QLOC. It's a very interesting document about CBR rendering and a rare source of information about some specific hardware existing on Playstation Pro (Neo): ID Buffer and Gradient Adjust.

https://www.slideshare.net/QLOC/checkerboardrendering-in-dark-souls-remastered

Their tech is based on Pro reference code and they improved it. DS remastered runs at 1800p on Pro and XBX using CBR. Their CBR is so good few (or none?) knew it was CBR back then.

When they reference specific hardware support they use 2 colors, blue and green. I assume based on the names of some of the functions the blue is for Pro and the green for XBX.

We can see several references at Pro custom ID buffer used in their tech. Here setObjectId is in blue.
Object and triangle ID...setObjectId

setObjectId (and others like setObjectIdMode) is a function in Sony SDK to use ID Buffer on Pro. On XBX they use others ways (custom shader) to set those values. They probably do it manually (see @jlippo post) even if it's probably a bit more expensive as Xbox lacks dedicated hardware for that.

Frame 12:
iEMcKed.png


Color pass:
They use another custom function on Pro: setTextureGradientFactors (or gradient adjust) which is meant to improve the aspect of the texture, making it sharper in the process. On XBX they do it manually on the shader. We know Pro has specific hardware support for Gradient Adjust compared to notably PS4.

To more easily share code between Base mode and NEO mode, in particular when using target common, orbis-wave-psslc allows the use of gradient adjust in any mode. However, Base mode does not have any hardware support for gradient adjust and the gradient adjust bit used when encoding the sample instructions is ignored when running in this mode.

Here we can see the improvements.

Frame 23 without gradient adjust:
CWi13TK.png


Frame 24 with gradient adjust:
C94nW6d.png


Interestingly when we compare the results in the game we can actually see some textures looking quite sharper on Pro. That could be explained by the gradient adjust differences of implementation, using custom hadware on Pro and done manually in the shaders on XBX.

Using Digital Foundry article, Pro, XB1, XBX. Textures are sharper on Pro at the same resolution (shoulder and grass):
7f0xLhr.png

M4bo5aR.png


Frame 36 checkerboard resolve, spatial and temporal components of CBR:
Started with PS4 Pro reference implementation. Improvements
Spatial component: Figure out the color of the missing samples
Temporal component: Re-project color from previous frame

Spatial Component, frame 37:
MCqapO0.png


Results of CBR with or without IDs:
Frame 38, without and with IDs:
CN9EW6o.png


Frame 45: we can better see how IDs remove many CBR artefacts making it incredibly close to native rendering.
RTjmtQJ.png


Temporal component, frame 64:
LAbn3sD.png


Removing (or reducing) ghosting using Object Ids, frame 70:

[
quote]Uncharted 4 uses stencil to distinguish objects[/quote]

igPqKKP.png


Frame 71 without Object Ids:
2QKFzQm.png

Frame 72 with Object Ids:

vP1HSsu.png


Results 1800p, frame 77:
Cjc8qDB.png

1800p with CBR, frame 78:
U4rzkD9.png


CBR cost: it's actually quite expensive, only 27% saved compared to native. Interestingly the percentage highly depends on resolution. Here 1800p CBR being the most efficient.

Frame 82:
VqT5GSG.png


Checkerboard rendering when done right (notably using ID Buffer) can have oustanding results and with very few artefacts. But it's actually an expensive tech and must be used only in some resolutions as the cost is not linear with the resolution. We also learn the custom hardware stuff on Pro (ID Buffer and Gradient Adjust) can be done manually on Xbox even if it's probably more expensive as it's AFAIK done without dedicated hardware.
 
Last edited:

Here

"We made a lot of customization's to the GPU, some of them are smaller, like when PS5 crashes it's a lot easier to track down the source of that crash then it was on PS4. Some of those customization's are giant, like backwards compatibility with PS4"

"Backwards compatibility is difficult because there are hundreds of essential GPU features in PS4 that developers reply on, and for their games to run flawlessly on PS5 each of those features needs to be properly included"

I take that as they have indeed added the ID buffer to PS5 so that BC worked properly.
 
Top