Baldur's Gate 3

Pre-HUD shading (D3D11 - only)

d3d11_shaders.ini

[DrawState.Pixel]
0c5599d4=HUD
374d776c=HUD
867716b3=HUD
d984a580=HUD
f4c9c4e6=HUD

More to follow

1 Like

Game crashes too much, will re-visit in a week :stuck_out_tongue:

1 Like

Maybe unrelated but it seems the game has some active compute shader going by DXVK’s recent 1.7.2 release.

EDIT: Unlike all those other games with inactive compute shaders…err.

Well there’s probably some technical term for it.

10/07/2020 23:28:08.407: [DX11Shader] Discarding Concurrent Shader Cache Collision for 28c7b0f0
10/07/2020 23:28:08.407: [DX11Shader] Discarding Concurrent Shader Cache Collision for 28c7b0f0
10/07/2020 23:28:08.407: [DX11Shader] Discarding Concurrent Shader Cache Collision for 28c7b0f0
10/07/2020 23:28:08.407: [DX11Shader] Discarding Concurrent Shader Cache Collision for 28c7b0f0
10/07/2020 23:28:08.407: [DX11Shader] Discarding Concurrent Shader Cache Collision for 28c7b0f0

That’s not good. 5 threads are compiling the same shader at the same time.

Special K’s cache has to make all of these threads wait for one to finish compiling, it doesn’t support multiple copies of the same shader. A normal engine wouldn’t do this, but this one does it about as often as it streams textures.


Oh, nice… Laraian has their own forums

http://forums.larian.com/

Might have a bit more luck there than the Steam tech support forums.

Well isn’t that nice some really even multi-threading going on there as each individual shader gets multiple threads for it ha ha. :smiley:

Hmm it’s probably some interesting little early access glitch, Larian tends to be pretty good at feedback of what I remember from Divinity Original Sin so bringing up on their own forums sounds like a good idea for reporting feedback.

There’s nothing technically wrong with compiling the same shader multiple times on different threads, it’s just a waste of CPU time.

SK can speed things up significantly by just compiling the shader once and handing out a cached copy of the original shader to the other 4 threads :slight_smile:

1 Like

A few crash fixes were released via a hotfix update along with Larian telling players to get a bit creative and make less Vault Dweller characters. :stuck_out_tongue:

Fix for crash related to showing a move preview with an AoO when in combat.
Fix for crash related to surfaces requiring concentration. (GUS-149201)
Fix for crash related to drag and drop of items in the trade inventory.

Gale’s Scroll of Resurrection is now correctly added to the player’s inventory.

https://baldursgate3.game/hotfix-3-theft-death-hubris_13/

The Vulkan version of the engine is much more stable, but it performs way worse than D3D11 does.

That’s impressive, lol. That’s backwards – the low-level APIs usually perform better but are less stable.

Strange, Vulkan usually works really well and the newer 1.1 and on SDK’s seem to bridge most D3D11 and DXGI functionality without requiring other workarounds though from the newer 1.2.140+ extensions there’s still a few bits landing for some of this. :slight_smile:

Plus what AMD and NVIDIA supports and game development being a lengthy affair so the SDK for Vulkan here is probably a bit older, don’t know if any current game actually utilizes version 1.2.x yet even without the newer releases of it.

EDIT: This is Larian’s first attempt at this API though far as I know and before this it’s been D3D9 and then D3D11, wonder if native VLK support also means Linux or Mac support is planned…well I suppose Linux at least since Mac is going with Metal and that’d need a Metal->Vulkan wrapper far as I’m aware.

EDIT: This one for example.

  • VK_EXT_robustness2
  • This extension enables out of bounds access guarantees for buffers and images that match the behavior of DirectX® APIs.
  • This is another useful feature for applications porting from DirectX® APIs, or for layered API implementations.
  • We recommend using this extension only for compatibility or porting efforts, as there can be a performance cost, and it can hide rendering errors.

The first iteration of the Divinity: Original Sin engine was actually OpenGL. Development went from GL → D3D9 → D3D11. It’s been released on PS4, so there’s also some kind of GNMx version or something as well.

1 Like

Huh interesting, didn’t think Larian had worked with OpenGL and it was mostly DirectX mainly D3D9 from Divinity 2 and on with a jump to D3D11 later on as D3D9 became or by that point probably already was quite out of date.

Console development too, not bad for them going independent until more recently since that’s a complex matter but as I hear Divinity Original Sin 2 and now the pre-order sales for Baldurs Gate 2 were really good.

EDIT: Yeah the second game, whoops.

Shadows of the missing sequel.

I’m having a similar thing happen in Path of Exile, I have worse performance using their Vulkan renderer instead of DX11. And smoother frametimes. And vulkan screenshots from RTSS come out darker than they should.

Shadows of Amn is hands down the best CRPG ever. I will fight anyone to the death who tries to argue otherwise :slight_smile: The amount of polish that went into that game and it was only released a year after after Tales of the Sword Coast is mindboggling.

The Apollo moon lander probably had a less dense instruction manual than that game does :slight_smile:

1 Like

There are some stories around that, from what I remember there’s a variety of circumstances that led to the games development and it turned out to be one of the best classic CRPG’s although I also have a lot of respect for Troika’s attempts with Temple of Elemental Evil though it’s a smaller scope dungeon delve based on a earlier module plus Troika and publisher problems led to a rushed development cycle that even after years of work community patches still find stuff to improve or fix or bits of cut content.

Also impressive that games like this are still attempted even if the formula is modernized somewhat.

EA’s attempting to re-release and update the Mass Effect trilogy but the first game is giving them some problems because to them it’s the worst in the series whereas to me it’s the only one that’s a decent RPG and not a action-RPG if barely even that so publishers attempting a classic RPG game experience is pretty fascinating and surprising.

Larian proved they could do really well with Original Sin though and then it’s updated version and from there to the sequel, Baldurs Gate 3 is even bigger plus they’re going with voice acting and high budget presentation and all sorts of enhancements far as I know.

Really impressive how the game is bigger in scope too, upcoming Cyberpunk 2077 I believe I read was about 50% shorter than Witcher 3 because player impressions and such were on how the game was too big and lengthy and here’s Larian trying to make something akin to old Black Isle did in the late 1990’s and early 2000’s even if it’s a bit less wordy there’s still a massive game here.
(First act here in the early access version as almost a game on it’s own in terms of estimated length.)

Also the days of old hardcover bound manuals, I have the one for Baldurs Gate somewhere and also Arcanum and a few other 100+ pages going into backstories and info beyond just the controls pamphlets or a quick guide on gameplay systems. :smiley:

EDIT: Yeah there’s some info on the development timeline and challenges and how it went.

EDIT:

Wonder where that disappeared somewhere during these 19 or so years since.

Ugh, those crashes in D3D11 are my fault, but Larian’s crash handler is preventing me from debugging the problem.

It does seem to be related to shader resources. But I’ve turned off caching and state tracking and the engine still is overflowing something.

Hopefully they’re open to more discussions between fans and themselves on their forums including more technical details and suggestions not just gameplay inquiries or automated bug reports and telemetry data.

Getting in some communication and directly with some of the involved with the community developers should be really helpful especially early on like this when focus is on development and bug testing and feedback is going to be used to improve the quality of the title and not just a priority of more or less critical issues post-launch that may or may not be resolved or simply marked as DNF or how it’s called.
(Do not fix.)

While it’s also useful for SpecialK compatibility I’m a bit curious as to the double API nature of the engine too, Vulkan should be covering Windows 7 - 10 plus cross-OS support like Linux if the developers want to attempt something of that scope whereas D3D11 is limited to 11.1 sort-of on Windows 7 via the platform update and then well Windows 10 and various builds more than Windows 8 or 8.1 which is fading a bit.

D3D11 - D3D12 support would be more expected and using D3D11onD3D12 or similar to start into D3D12 over a pure / native implementation (And restricting to Windows 10’s newer builds only.)

It’s useful though but a bit surprising as it’s not very common.

Croteam and Serious Engine as one other engine doing this, Unreal I suppose but rarely in shipped configurations (Especially with Vulkan.) just that the core engine supports these API’s because it’s well developed by a dedicated team for it.
(Croteams prior senior engine technician seem to have left the studio last year too but the engine is still going so they seem to have a replacement at least with similar skill.)

EDIT: Different practices and what’s best plus the more modern VLK (And D3D12) API’s and what these allow for but if they can maintain and keep both of them supported and utilized to best effect it’s not like it’s a issue just a bit surprising really for the extra resources and effort needed.

All the magic stuff that Special K’s framerate limiter does for D3D11 games that produces those astonishingly perfect timing diagrams is the result of fine-tuning the DXGI SwapChain.

I’ve casually analyzed the behavior of DXVK’s frame queuing and believe that is busted. I can take a perfectly frame paced D3D11 engine, inject SK + DXVK simultaneously and watch frame pacing go from flatter than a pancake into a seismograph with no change to the DXGI SwapChain parameters able to steer this equation one way or the other.

I know that every single one of the adjustments I make in DXGI have a counterpart within the Vk presentation model and that DXVK is not translating one or more of my SwapChain fix-ups faithfully. I am going to do some poking around under the hood of DXVK to resolve that, and when I do, I may be able to start to tuning framepacing in Vulkan engines.

Also, I think it’s about time someone do something about this stupid:

“NvAPI workaround enabled, reporting AMD GPU” hack that DXVK has going for it. It is preventing HDR from working when translating a D3D9/D3D11 game to Vk. I had partial support for HDR implemented in DXVK a few months ago.

I’ve reverse engineered enough of NvAPI to probably step-in and translate most of the API calls that DXVK is ignoring by pretending to be a crippled AMD GPU.