Assasin’s Creed Shadows coming to the Mac day 1.

That is lame, is it Ubisoft's fault that you have to download the whole thing again?
Frankly I'm not fully sure on the specifics of delta updates on the App Stores. If it for example fully replaces all files that have changes, and they performed an automated updated to all their resource files, it's not unreasonable all files have been touched and the App Store then cannot just patch them.
 
I had a quick look at the metal capture provided by @casperes1996 (the small one, not the large one). There is some variance in frame durations — most are excellent at 6.25ms, but a couple drop down to 30-40ms, which is under 30 FPS. Is that the performance issues you are talking about?

Zooming into the shader timeline, it seems like a lot of interdependencies and not much parallelism. Most of the time seems to be spent in the compute shader. I don’t really see anything too conspicuous here, but it’s not like I have too much experience reading these graphs either.
 
Just saw a review of Razer’s new 5090 based laptop

1600P, Medium settings, DLSS on = 50fps
Yikes. Clearly some optimization needed.
1743101185020.png
 
I had a quick look at the metal capture provided by @casperes1996 (the small one, not the large one). There is some variance in frame durations — most are excellent at 6.25ms, but a couple drop down to 30-40ms, which is under 30 FPS. Is that the performance issues you are talking about?

Zooming into the shader timeline, it seems like a lot of interdependencies and not much parallelism. Most of the time seems to be spent in the compute shader. I don’t really see anything too conspicuous here, but it’s not like I have too much experience reading these graphs either.
Most of the time it is actually running at 30-40FPS - In a standard run of the benchmark, there are 1-4 stutters below 30FPS otherwise it's in the 30-40FPS range on my full M4 Max with basically mid-low settings 1080p (That is, 4K MetalFX at 25% render resolution) - But settings don't seem to scale much. All low vs all high barely budges that needle, and turning off chromatic aberration and setting ray tracing to high instead of medium *improved* performance by 4FPS; Which is bizarre. All of this is using the built-in benchmark

Definitely not seeing the frame durations of 6.25ms - As I said I feel like there were a lot of oddities with the data I got from the traces vs. what I actually experienced and also in the larger trace itself. I am not sure if what we're seeing are intermediate renders or if it's just because of a massive wait where the GPU is done and waiting on a synchronisation point of some kind - CPU utilisation is through the roof all the time too, using like 1,200% to 1,600% of my M4 Max throughout the benchmark. Given this game also runs on PS5 which is like 8 Zen 2 cores, it's pushing CPU a lot harder than I would expect. I would expect it to easily scale to as big a GPU budget as you can give it, with higher resolutions and more ray bounces, etc. - but I would think it somewhat limited how much more CPU it could utilise than its minimum supported target. And I don't see a way to really scale that down much other than perhaps reducing the quantity of physics objects in the world at any given time by reducing load in range for objects, but I really would expect to be purely GPU bound
 
Most of the time it is actually running at 30-40FPS - In a standard run of the benchmark, there are 1-4 stutters below 30FPS otherwise it's in the 30-40FPS range on my full M4 Max with basically mid-low settings 1080p (That is, 4K MetalFX at 25% render resolution) - But settings don't seem to scale much. All low vs all high barely budges that needle, and turning off chromatic aberration and setting ray tracing to high instead of medium *improved* performance by 4FPS; Which is bizarre. All of this is using the built-in benchmark

Definitely not seeing the frame durations of 6.25ms - As I said I feel like there were a lot of oddities with the data I got from the traces vs. what I actually experienced and also in the larger trace itself. I am not sure if what we're seeing are intermediate renders or if it's just because of a massive wait where the GPU is done and waiting on a synchronisation point of some kind - CPU utilisation is through the roof all the time too, using like 1,200% to 1,600% of my M4 Max throughout the benchmark. Given this game also runs on PS5 which is like 8 Zen 2 cores, it's pushing CPU a lot harder than I would expect. I would expect it to easily scale to as big a GPU budget as you can give it, with higher resolutions and more ray bounces, etc. - but I would think it somewhat limited how much more CPU it could utilise than its minimum supported target. And I don't see a way to really scale that down much other than perhaps reducing the quantity of physics objects in the world at any given time by reducing load in range for objects, but I really would expect to be purely GPU bound
I am beginning to suspect the weather system could be the culprit. There are no settings for it, and it is resolution independent, which could explain why reducing settings or resolution doesn't appear to improve things much.
Just saw a review of Razer’s new 5090 based laptop

1600P, Medium settings, DLSS on = 50fps
Yikes. Clearly some optimization needed.
View attachment 34378
Ooof, that isn't a great result at all. I wonder if they have Specular turned on. Last I looked that setting drops the framerate a lot compared to just diffuse everywhere by itself.
 
I also don't understand why macOS doesn't get diffuse everywhere + specular like the PC does. Or why RT reflections aren't enabled on macOS.
 
I have never bought an Assassins Creed game and have no time to play but feel the sudden urge to buy the newest game ...



(Elon is complaining about the game being "woke" btw)

Slightly off topic but one of the reasons why the Assassins Creed account responded the way it did. Musk in no way forced Grimes to say what a great gamer he really he is or give her a list of things to say:

1743659392501.png
 
I’ve been looking at changing various settings within the game and have been surprised at how little difference in performance changes in MetalFX seems to make. I’m a complete novice at this but I launched Metal system trace and captured a few seconds of AC Shadows and also some other Resident Evil games.

I’m left with the impression that AC Shadows doesn’t seem to actually use upscaling much! It’s very possible that I am misreading some of the data, but it does seem to line up with the results I see. When I run Metal system trace on the RE games, with the section marked as MetalFX, I consistently see times of 600-900 µs. That seems to be the time it takes for the Neural Engine to upscale and image. Below is a screenshot of the trace.

1751478800298.jpeg


When I ran the same trace on AC Shadows, it shows a greater variety of times and many times much much shorter MetalFX times. From reading around a little, this seems to be indicative of merely passing through the frame without using the temporal or spatial upscaler. Often the times were below 200 µs and some sub-100 µs. That is far too low for the ANE to actually be upscaling. Below is the image from the AC Shadows trace.

1751478991119.jpeg



I’m curious if this is correct and if so why? I went back and looked at the developer videos for MetalFX upscaling from 2022. It says:
1751479312370.png


AC Shadows uses dynamic resolution scaling. I’m curious if this has an effect on the use of MetalFX scaling? Or do they mean literally the display is switching resolution, and not the output resolution of an app?

My understanding is that Metal 4 has better support for dynamic resolution scaling, so perhaps it’s arrival can allow greater use of scaling?

It would be great to get some feedback from more knowledgeable members. I did try to run a Metal gpu capture but was not successful. I imagine if I could, it would be fairly straightforward to inspect the images and see if they are being upscaled.
 
AC Shadows uses dynamic resolution scaling. I’m curious if this has an effect on the use of MetalFX scaling? Or do they mean literally the display is switching resolution, and not the output resolution of an app?

The way I read this is that you shouldn't be calling `makeTemporalScaler(device:)` repeatedly. So it depends on what you can define in the description in terms of input/output settings.

But according to the docs, it should support dynamic scaling just fine, because you can update the scaler's properties each render pass to let it know how big the input texture is:

Upscale a rendering by following these steps for every render pass:
  1. Set the temporal scaler’s colorTexture property to the input texture.
  2. Set the scaler’s inputContentWidth and inputContentHeight properties.
  3. Set the scaler’s outputTexture property to your destination texture.
  4. Encode the upscale commands to a command buffer by calling the temporal scaler’s encode(commandBuffer:) method.

The catch is that the output size appears to be fixed and cannot be adjusted on the fly, only from the descriptor. So you'd need to update the descriptor and call makeTemporalScaler() again if the screen resolution you are targeting changes.
 
Back
Top