Shaderhacker Lore Chapter One: The Unity Lighting Breakthrough
This title represents something quite special to this community, because this fix is not just about this one game - you've seen my Unity templates credited over and over on so many fixes, and the work I have put into this one game really represents all of those fixes combined.
Those of you who have been here for the last few years might recognise that this isn't the first time I've fixed this game, nor is it even the second or third, and each time have I worked on this game we have made leaps and bounds forwards, and this update is no different.
The first time I fixed this game back in 2014 was when I cracked the "unfixable" Unity lighting pattern wide open, and developed the maths and techniques that would be right at the centre of just about every Unity fix that has been released since then. Prior to this Unity games could only be approximately fixed if the FOV never changed.
Shaderhacker Lore Chapter Two: Templates and Scripting
Since this game was episodic it meant I had to update the fix each time a new episode was released, and the first few updates were mostly uneventful, with just new scenes added to the game that I had to go in and fix. In the time that had passed before these updates I had turned my lighting fix into a template and scripted some of the more common patterns, allowing me to fix these early updates in a matter of days or hours, instead of the three and a half weeks that it had taken for the initial fix.
Shaderhacker Lore Chapter Three: The Reflection Breakthrough and Automatic HUD
When this game switched to Unity 5 and I had to restart the fix entirely from scratch I spent some time trying to make the reflections and specular highlights more pleasing in 3D, and I succeeded beyond my wildest expectations - I didn't just fix the obvious reflections like puddles and glass - I managed to fix everything, adding small details to almost every object, popping building interiors into 3D, adding moisture to Zoe's lips and sparkles in her eyes, and even making materials like leather, wood and stone reflect light in just the right way to look realistic. In other games like The Forest this has even managed to pop flat sand and rock textures into detailed three dimensional surfaces, and the same approach to fixing specular highlights has worked in other games that don't even use Unity, like Metal Gear Solid V, Far Cry Primal and WATCH_DOGS2.
To make these reflections work with the limitations of Helix Mod I also had to fundamentally rework my Unity lighting fix, making this the second time I had used this game to invent a new Unity lighting fix, and every physically accurate reflection and specular highlight you see in a Unity game since then is because of this.
For that update I had dug into some relatively obscure features of Helix Mod and was able to figure out how to use them in combination with my own automatic crosshair technique to adjust the HUD depth so that it would follow the location of the floating HUD icons automatically, but at the time I was still stuck with a 2D mouse cursor and some other limitations of Helix Mod.
Shaderhacker Lore Chapter Four: The End?
I had to re-fix the game entirely from scratch one more time for the Unity 5.3 update (which is a whole other article in itself), but finally Book 5 was out and the game was finally complete, end of story...
Shaderhacker Lore: Interlude
...or at least it was, until the developers decided to switch to DirectX 11 in preparation for The Final Cut, completely breaking my fix once again :-(
Unfortunately as some of you might already be aware I had been forced to check out from this community and leave my day job to deal with a major (and ongoing) mental health crisis brought on by a combination of factors including a series of very bizarre coincidences in my personal life, and I have only recently mustered up the strength to try to return to this community and start modding games once again.
But I couldn't just leave this game in a broken state when my fix had meant so much to me personally and this community more generally - that would be like an artist having their prize work stolen from them (is it surprising that so many modders in so many communities burn out?). This fix was a showcase for my talent - like the kind of thing you might display in a portfolio, and something I very much did when networking with other local game developers.
Shaderhacker Lore Chapter Five: DirectX 11, 3DMigoto and The Final Cut
I took the change to DirectX 11 as an opportunity - I had already adapted my Unity template to work with DX11 and 3DMigoto for previous games, but this game is far more complicated for all sorts of reasons and needed so much more work to be done. This fix is released alongside 3DMigoto 1.2.65 - with thousands of new lines of code, dozens of new features and a month and a half of pretty much full time (because unemployed because depression) development work this is the largest single update to 3DMigoto in the entire 1.2.x series. This release adds a whole new ini parser that allows this fix to load in under one second instead of the two minutes that it would have taken with the old parser. It adds a software mouse cursor implementation - so at long last the mouse cursor depth can follow the rest of my automatic HUD adjustment (plus, this will work with the SBS/TB output modes of 3DMigoto), and countless other new features that were needed for this game as well. I have also made some major updates to my Unity scripts and template, to not only work with some quirks of this game, but also to increase performance by a whopping 10-20fps!
Those of you who have used a few of my fixes will know that I pride myself on being able to make almost any effect work in stereo 3D - I'm very good at figuring out complex problems and it is extremely rare for me to just outright disable an effect that doesn't work in 3D. This game however, uses volumetric ray-marched light shafts in a lot of the interior light shafts and after spending several weeks on these back in the day I had to admit defeat when I realised that they were going to be impossible to fix with the limitations of Helix Mod. These were the only light shafts that have ever eluded me, and with the switch to 3DMigoto I took the opportunity to have another crack at these, and while they were still extremely difficult I managed to pull it off, and the effect is really quite stunning:
The automatic HUD adjustment for this game is back as well, only this time the flexibility that 3DMigoto and DirectX 11 allow means that it is even more sophisticated than before - it now analyses every active HUD element to decide what depth to render the HUD and mouse cursor in each frame, and can take into account transparent objects such as glass monitors to render the HUD on top of them.
SKIP! SKIP! SKIP! Too much lore! What did you fix already?!?
If you couldn't get through all the lore above beware that this might not be the game for you as it is pretty lore heavy in itself. Although personally, the thing that appeals to me the most about The Longest Journey and the two Dreamfall games is that the main characters from Stark are just ordinary people that talk about ordinary things like life and relationships and have been thrown into events beyond their control... and of course Crow, the best comic relief sidekick in any game ever.
- Major updates in 3DMigoto 1.2.65 for this game
- Major updates to Unity template for higher fps and to handle certain cutscenes
- Lighting / Shadows
- Halos
- Volumetric Light Shafts (the bane of my existence has finally been defeated)
- Physically Accurate Reflections / Specular Highlights
- Screen Space Reflections
- Ambient Occlusion
- Parallax Building Interiors
- Sun moved to infinity
- Replaced the hardware mouse cursor with a software mouse cursor
- Automatic HUD and mouse depth adjustment that follows the icons on screen
- Separate automatic subtitle depth adjustment
- The HUD depth is fixed whenever the inventory is open to line up with it
- Automatic low convergence + mouse depth preset when picking up an item or examining it in the inventory
- The Purple Mountains background being at closer depth than the foreground is fixed compared to the old version, but I can't take credit for that - the developers finally stopped rendering two separate scenes in the same 3D space ;-)
Installation
-
Extract the contents of the zip file to the game directory.
-
If you are running the 32bit version of the game, replace the DLLS with the ones in the 32bit directory.
-
- Right click on the game in Steam and go to "Properties" -> "Set Launch Options" and enter "-window-mode exclusive" (without the quotes) and click "Ok"
- If you are not using the steam version, launch the game with the provided "Dreamfall Chapters - 3DMigoto.bat"
-
If 3D Vision didn't kick in, make sure that full screen is enabled in the game settings.
-
If 3D Vision still didn't kick in, you may have to alt+tab out and back, or try pressing alt+enter twice.
Notes
The Volumetric Light Shafts can be pretty expensive in 3D. In most places they are used in this game they aren't too bad, but they can really tank performance in The Hand That Feeds which has five large light shafts filling most of the room (the developers even turned off the dynamic real time light shaft shadows in that room to save on performance, but it still tanks), so you may need to lower their quality slightly in the settings menu if you find the framerate too low in that room (I just put up with it - the highest quality light shafts are worth it elsewhere in the game, especially the ones that have real time shadows enabled). If you are playing on an underspec machine and finding that these hurt performance too much even on the lowest quality setting you can disable these by searching for [CommandList_Volumetric_Light_Shafts_Common] in the d3dx.ini and uncommenting the handling=skip line below it.
The subtitle depth adjustment is capped so that they can't pop too far out of the screen. This limit can be adjusted by editing the d3dx.ini and adjusting the x value under [Constants]
Side-by-Side / Top-and-Bottom Output Modes
This fix is bundled with the new SBS / TAB output mode support in 3DMigoto. To enable it, edit the d3dx.ini, find the [Present] section and uncomment (remove the semicolon) the line that reads:
run = CustomShader3DVision2SBS
Then, in game press F11 to cycle output modes. If using 3D TV Play, set the nvidia control panel to output checkerboard to remove the 720p limitation.
Like my Work?
As you would have gathered from reading the lore, fixing this one game has taken an enormous amount of my time - Steam shows I've spent close to three hundred hours with it running (probably a hundred of those would have been spent staring at those light shafts alone) and all up I can say that I would have probably spent about three months or so working on this one game - not counting time focussing on other games that went towards working on the Unity template, scripts and many of the features I've added to 3DMigoto over the years that this builds on.
I'm also currently out of a job largely thanks to my ongoing battle with mental health issues, and until I have recovered enough to work on changing that I am entirely dependent on my wife for support, and any donations I receive from this community. I hope you can see that even if you are not interested in this specific game, that the work I have put into it goes far beyond this one title.
I usually prefer not to say much when I post this donation link - because no one likes begging, but given the significance of this fix I felt it prudent to go into more detail and share a little of my personal situation.
If (and only if) you feel that you are in a position where you are able to do so, please consider supporting me with a monthly donation on Patreon, and thanks again to those that already do! While I prefer the more stable monthly support that Patreon offers, I can of course understand that some of you prefer to make one-off donations when you can, and for that you can use my Paypal. As a reminder, these donations are to support me personally, and do not go to other modders on this site.
This mod is created with 3DMigoto (primarily written by myself, Bo3b and Chiri), and uses Flugan's Assembler. See here for a full list of contributors to 3DMigoto
I also have to thank mike_ar69, 4everAwake and Bo3b who helped me in the early days while I was learning ShaderHacking, and while I was starting out looking at Unity in particular.
This is really awesome! Dreamfall Chapters was one of the most anticipated games of this year for me. I'm so glad that I can play it in S3D although it uses the Unity engine. I hope that the techniques You developed for this game can also be transfered to other Unity games. There are so many interesting indie games that use this engine.
ReplyDeleteYes, I believe the technique will transfer to other Unity games as well and 4everAwake has already started applying it in some other games. From what I've seen they almost all use the same lighting shaders so the same fix should work (this one actually uses unitysunshine replacements, but they are broken in the same way as the original Unity shaders that they are based on). There's a slight distinction between directional/screen lighting vs point and spot lights, which complicates matters a little if both types are used (as they are in this game), but even that wasn't difficult once I understood what was going on.
ReplyDeleteGreat news! Many thanks to everyone working on this fix!
ReplyDeleteIt really is a fantastic fix (I'm currently still running around Europolis). Thank you so much for your hard work, DarkStarSword
ReplyDeleteThis fix looks fantastic, great job :-)
ReplyDeleteMade copy to game directory, but no any in game changes. Where is exactly do you mean game directory? Also, I am using steam version of game.
ReplyDeleteIt's where Dreamfall Chapters.exe is located - if Steam is installed in the default place, it would be here:
DeleteC:\Program Files (x86)\Steam\SteamApps\common\Dreamfall Chapters
If you're not sure where it's installed you can right click on dreamfall chapters in your library -> Properties -> Local Files -> Browse Local Files...
Also - sometimes Helix mod doesn't engage properly with this game, so if the graphics look broken, try adjusting the separation settings for a few seconds which usually fixes it.
I've just updated the fix for Book 2
ReplyDeleteThanks for the update! :)
Deletete36: love the patch. works great!
ReplyDeletehey dude can you make a mod to lower the game requierments?
ReplyDeleteSorry, that's not really what we do.
DeleteCan we expect an update for Chapter 3? Thx
ReplyDeleteAbsolutely, just give me a few days to play through it and fix any issues I come across.
Deleteno stress, still have to finish Book 2 but almost through. I will delay my playthrough of Book 3 then.
DeleteThanks for your awesome work you did already for the 3d vision community. Greatly appreciated!
I've just update the fix for book three. I haven't quite finished it yet, but I'm pretty sure I've got everything.
DeleteHello, I got really bad fps (sometimes under 20) while playing in 3D FullHD with low graphics settings, other features turned off.
ReplyDeleteWhen I play in DSR 1440p with awesome graphics, medium AA and medium SSAO, shadow distance max, lens effect and bloom on the fps don't drop under 30, mostly between 30 - 45.
I have installed the version 3.0.5.0.
Any ideas to increase the performance in 3D?
My specs: Win7 64bit, i7 2600K stock, GTX 970 G1 Gaming
The fps in 1440p are in 2d of course.
DeleteThat sounds about right - if your fps is 30-45 in 2D you would expect the fps in 3D to be half that at 15-23fps. If you want to get a better fps in 3D you first need to improve it in 2D - maybe check the forums and see what other people say. The devs have acknowledged the performance issues on account of some of the levels being very complicated and pushing Unity 4 to it's limits - there was some talk of them moving to Unity 5, which would improve things - but that's a major engine change and it's not a sure thing they will do.
DeleteThank you for your quick answer. I know that 3d takes half of your fps, but the lowering of the resolution and other graphic features should increase the performance, I think. So it should bring more that 50%, or am I wrong?
ReplyDeleteIt depends on where the bottleneck is in the game on your particular system. Lowering the resolution will only help if the bottleneck is the fill rate on the GPU. If the bottleneck is actually the throughput from the CPU to the GPU (which is more likely the case in 3D) there's a lot less options (especially as CPUs aren't getting any faster any more) - some settings may reduce this, but it's often pretty marginal, and really requires optimisation efforts by the game + engine developers can make any significant difference. This article was useful for explaining the differences between fill rate and throughput:
Deletehttp://www.escapistmagazine.com/articles/view/video-games/columns/experienced-points/12965-Reader-Mail-The-Hard-Thing-About-Graphics.2
Pretty likely to be CPU bound here with a stock clock 2600K. Since it's a K version, you might try overclocking to see if you can unlock some extra performance with this game.
DeleteWe presently believe that when running 3D Vision that only 3 cores/threads are actively used, so bumping the clock speed is the only way to increase CPU performance.
Needless to say, updating the game to Unity 5 did break 3D again. Very unfortunate because as of today, the previous Unity 4 version is no longer available to play.
ReplyDeleteHoping some progress has already been made with Unity 5 games and this can be fixed...
Yes, I've been expecting that, and will basically have to start the fix over from scratch since Unity 5 changes every shader :(
DeleteFortunately these days I have scripts to speed up the process, but it will probably be a few days before I can re-fix everything.
Great, thanks. Take your time. The next book will not be out before xmas and you certainly got a lot of other stuff on your mind. Thanks for your dedication and all the work you have done so far!
DeleteYeah thanks for all your hard work!
DeleteI actually never even got around to finish book 2 (I think) because I've had tons of other games to play, so I'm not in a hurry in any case. :)
This comment has been removed by the author.
ReplyDeleteIs this fix usable for book 1 till 3 while the fourth book is installed aswell?
ReplyDeleteOkay, so i found out that for all chapters not work at the moment....
ReplyDeleteSo basicly i am forced to use an illigal version to some sort of downgrade the game so i have only chapter 1 till 3
That's a bummer. Guess i have to do that till the fix is there.
Well that's no problem, but sorry to the devs of the game. Didn't mean to downgrade the game like that but i have to.
Till then i play 1-3 untill the fix is there:)
Please be patient - the fix will be updated in the next few days once I've had a chance to finish fixing the new chapter and loaded a bunch of saves from various points in the first three to make sure they are fixed as well. I'm currently 90% of the way through re-fixing the first three chapters, but I've only just downloaded the 4th chapter overnight.
ReplyDeleteI've just updated the fix with a work in progress of the re-fix. There are still some known rendering issues throughout all four books, so I would recommend waiting a few more days until I have finished the update, but this should be enough to make the game playable for anyone impatient.
ReplyDeleteFix is updated for Unity 5 / Book 4, and includes a new auto HUD depth adjustment, and improvements to all reflective / shiny surfaces.
ReplyDeleteThank you very much for your dedicated work. I have been postponing my Book 4 playthrough in anticipation for this second Unity 5 patch, can't wait now to get started :)
DeleteYou're the best! :3 Now to actually find time to play this...
DeleteThanks a lot for the fix!
ReplyDeleteThe game does not seem to be running in exclusive fullscreen tho, so 3D won't hook up for me.
Did I miss some instructions? Can you please help out?
Thanks!
If it's in windowed mode press alt+enter. If it's in borderless full screen edit the DX9Settings.ini and uncomment GameProfile = fxdplayer. If that is the case it would be a bit odd as the devs updated it mid last year to use exclusive full screen.
DeleteThanks for your reply!
DeleteTurned out something was seriously messed up with my drivers. Did a full driver clean/reinstall, now it works as charm.
Game looks fantastic!
Cheers
I have installed Dreamfall chapters Book 01-03. and now i have downloaded Book no 04. how do i continue with same installation file, or do i have to install separately
ReplyDeletethank you ...
It's always best to remove the ShaderOverride, DX9Settings.ini and d3d9.dll from the old version before installing the new one
DeleteBook 5 is out now on GOG :-)
ReplyDeletegot the steam version 5.0.3 yesterday. the fix from dec.2015 is not functioning for me!?
Delete- running at 3840x2160 line interleaved with edid-mod (Acer Passive 3D-LCD - optimized for Nvidia 3D Vision)
- GTX 980Ti, Driver 368.39
thanks for any infos!
Yes, it needs to be fixed again.
DeleteThe fix is 100% broken due to an engine update to Unity 5.3. Give me a few days to refix everything.
DeleteJust noting that if you buy the GOG.com version instead, *you* get to decide whether it gets updated or not. This is far superior to the forced updates you get off Steam, especially for 3D.
ReplyDeleteI've updated the fix for the latest version. I haven't finished book 5 yet (nor replayed the whole first four books), so there might still be some issues, but it should be pretty solid. Let me know if you find something broken.
ReplyDeleteI fixed one final UI shader in book 5 and updated the fix. Bumped to the front page since this is now complete :)
ReplyDeleteMany thanks (as usual), DarkStarSword! :)
ReplyDeleteBIG BIG BIG BIG THANK YOU!!!
ReplyDeleteAt last I will be able to experience the conclusition in 3D ^_^ But first I need to update my Surround fix/hack for the game lol;))
THANK YOU AGAIN!!!
Loving this in 3D, just wanted to add my thanks for all the hard work!!
ReplyDeleteawww now i have to wait till the direct x 11 version comes out cuz this one now is broke :(
ReplyDeleteNew patch(version 5.4) did broke 3D Vision. I tried to reinstall but no luck.
ReplyDelete..oh no..broken again :(
ReplyDelete(finished book one and wanted to play book2 now..aaargh)
DarkstarSword..any chance to get this fixed?
Hi DSS
ReplyDeleteAny chance you'll fix this Again...Again...Again...
Fingers crossed :)
This comment has been removed by the author.
ReplyDeleteDarkstarSword, you did a superb job on these patches and I'm sure that a lot of people would be grateful if you did it again. Thanks!
ReplyDeleteIf you have a deep need to play this game at present, buy the GOG version. With GOG you can specify the version you want to play, instead of always being forced to some new version that breaks things. You can run the 5.3 version from there, which still works flawlessly with the fix. Outside of that you'll need to be patient. DarkStarSword will update this when he can. Since they switched it to DX11, the fix has to be redone from scratch, so it's going to be awhile.
ReplyDeleteThanks for sharing the Shaderhacker Lore and your personal situation. I really appreciate your hard work and especially your persistence to make it perfect. I wish you well!
ReplyDeleteDarkStarSword, thanks for you efforts on your final fix. You did a superb job.
ReplyDeleteThx, donanted yesterday
ReplyDeleteThank you for the hard work DarkStarSword, it's truly an amazing effort you have put in.
ReplyDeleteI'm running the Final Cut version, installed via the GOG Galaxy client. I did the installation as instructed and 3D is working, but it's just not looking good at all - so I'm guessing DSS's fixes are not engaging.
Have tried both versions of the DLL's, and it does not make any difference (which tells me something is really wrong - because I would expect it should work correctly with one version but crash entirely with the other).
Does anyone have any idea what I'm doing wrong? I really want to enjoy this game with the fixes from DarkStarSword :-/
Ignore me. Got it working, and it is GLORIOUS! Thank you DarkStarSword!
ReplyDeleteI had downloaded a ZIP of the Github repo - when I used the one uploaded here on the blog instead, it worked like charm. Not sure what the difference is, but all I care about is that it's working now :-)
I'll be sure to throw a donation your way!