StrangePan wrote: Sat Jun 21, 2025 11:02 am
Hey, thank you for the information, this is actually pretty helpful and leads me to a guess as to why this is happening. I know that when full screened using the Metal backend, macOS switches the game to direct rendering, meaning we write directly to the display without going through the compositor. This was causing some blurriness when native resolution rendering was disabled, but I guess it could also be causing color issues on HDR displays? Technically, Factorio does not support HDR so macOS shouldn't be remapping our 8-bit SDR content to a 10-bit HDR/EDR.
It seems to me like macOS should be smarter about this, so this isn't a top priority, but I may try to investigate this further later on to better understand what's happening. I'm not even sure if we have any such displays at the office...
No worries! I'm really glad I was able to help you out. Your comment about the compositor tracks with my experience; summoning any UI element belonging to the OS immediately makes the content appear identical to that of the OpenGL renderer. The saturated appearance returns when said UI element is dismissed. Also, it just occurred to me to check the color space of the screenshots I took, and macOS says they're 8-bit RGB. Oops. I'll try to get a screen recording with 10-bit color depth immediately after I submit this, but it might take me as long as 24 hours.
StrangePan wrote: Sat Jun 21, 2025 11:02 am
I guess it could also be causing color issues on HDR displays? Technically, Factorio does not support HDR so macOS shouldn't be remapping our 8-bit SDR content to a 10-bit HDR/EDR.
(Not meaning to argue, these are all just additional thoughts/considerations.) As a developer who's worked with these APIs and worked with weird color depth situations like this, I understand your perspective, I really do, and I don't necessarily disagree in principle. The easy and cheap counterresponse would be to reiterate the issue with the OpenGL renderer looking like I just moved my factory to Mexico in Breaking Bad on third-party HDR displays, and that if the two renderers were brought to visual parity, there would no longer be a good solution to this besides switching in and out of SDR mode when playing. But the biggest thing for me is that the way the game looks on the Metal renderer is not the same as just turning the saturation to 115%. The colors in HDR mode are fundamentally different. The continue button on the main menu, for example. On the best, most accurately calibrated SDR display, it's still just going to look green. With the Metal renderer, the continue button is green like the grass of a golf course on a bright day. The foundry looks like it's glowing red hot, instead of just looking like off-red metal. The reflections on ores look like they're brighter because they're
catching the Sun's light, rather than because that region of the texture is brighter. The surface of Fulgora looks like the inside of a cherry. The lava on Vulcanus looks like you should be feeling the heat pour off of it. I could go on. It's so beautiful and so much more immersive. It would be a shame to lose this way of playing the game, even if admittedly it kind of feels in the same vain as AI upscaling a 12 FPS anime to 240 FPS because you think the action looks smoother.
A middle-ground solution might be to simulate the peak brightness of SDR mode while in HDR mode. That way, there wouldn't be the issue of washed out colors on third-party displays, the colors wouldn't look out of place to the uninitiated, the Factorio artists don't feel like their artistic intent has been ignored, and it'll probably retain some of that HDR magic. Everyone's happy. I still think the current implementation should be an option in addition to this, but it's an idea.
StrangePan wrote: Sat Jun 21, 2025 11:02 am
I'm not even sure if we have any such displays at the office...
A MacBook Pro with an XDR display would probably suffice, someone's probably got one if there's active development on macOS. The game would look normal with the OpenGL renderer because of certain technologies they've implemented with their own displays, in typical fashion, but you should still be able to tell the difference between it and the Metal renderer. Might want to test on a third-party display before pushing anything though.
This was my first forum post, and I'm realizing the absurdity of getting a helpful, well-written report on a bug in your inbox, and it's from fardshid420. Completely forgot that was there lol. Anyway, I'll shut
up. Cheers!