GeDoSaTo Dark Souls 2 Edition 0.3 ALPHA Release

This release is entirely dedicated to fixing the issues of the previous ambient occlusion implementation interacting with fog and alpha blended effects such as when you rest at a bonfire or fog walls. It also updates the AO shader to a new version by Asmodean.

When I set out to do this I expected it to take about an hour – it ended up at around 5. I first tried to apply the ambient occlusion in the game’s shadow buffer, and got that to work, but sadly there isn’t any shadow buffer in some areas! So I had to throw that away and start from scratch. Now the AO is applied in the base (linear color) HDR pass before alpha effects are rendered. A few shader-level tweaks might still be necessary, but at least the basics are now solid.

Remaining known issues:

  • [GeDoSaTo] Crashes when alt-tabbing out of and back into the game.
    Cause: Unknown, probably a resource management issue.

By the way, sorry if I don’t reply at whatever channel you are trying to contact me through, or approve your post here, I’m getting a lot of messages.

Here is the download. And as always, you can donate here to support GeDoSaTo development.

It seems like the VSSAO2.fx shader file included in this version causes severe performance issues for some. If you are affected, try replacing it with the file from version 0.2. I’ll revert it in the next release. The actual rendering fixes are independent of the shader file, so you will still benefit from upgrading to 0.3!

GeDoSaTo Dark Souls 2 Edition 0.2 ALPHA Release

Good news everyone!

Bug Fixes:

  • Fixed crashes when taking screenshots while not downsampling.
  • Fixed broken rendering after Steam popups.
  • Partially fixed SSAO issues (minor issues might remain, expect further improvement later).

New Features:

  • Added hudless screenshot key. If you want to play with the HuD but still take nice shots!
  • Added option for “basic” pseudo-Bokeh DoF effect. Not as nice as the true Bokeh DoF, but only ~1/5th the performance impact.
  • Improved SSAO performance outdoors.

Remaining known issues:

  • [GeDoSaTo] Crashes when alt-tabbing out of and back into the game.
    Cause: Unknown, probably a resource management issue.
    Note: This only occurs when downsampling, and only for some people.
  • [GeDoSaToTool] The tool complains that it cannot access the registry.
    Cause: Might be an access rights/permission issue. Try running as administrator.
  • [GeDoSaToTool] The tool complains that it can’t set the global hotkey.
    Cause: Unknown. But this doesn’t really matter, you just don’t get a hotkey.

By the way, sorry if I don’t reply at whatever channel you are trying to contact me through, I’m getting a lot of messages.

Here is the download. And you can always donate here to support GeDoSaTo development.

NOTE: the default settings in the ini included with this version are probably not what you want. In particular, change “presentInterval 2” to “presentInterval -1“.

GeDoSaTo DS2E 0.1 alpha FAQ & Known Issues

Since it’s impossible for me to keep up and individually answer the flood of feedback I’m receiving right now, I’ll try to summarize the currently known issues with the initial release here.

Known issues:

  • [GeDoSaTo] Crashes when taking a screenshot.
    Cause: You are not downsampling, and I made a silly programming mistake. Will be fixed in the next version
  • [GeDoSaTo] Crashes when alt-tabbing out of and back into the game.
    Cause: Unknown, probably a resource management issue.
    Note: This only occurs when downsampling, and only for some people.
  • [GeDoSaTo] Rendering breaks when the Steam overlay pops up.
    Cause: Unknown. Steam overlay rendering might put D3D in an unexpected state.
    Workaround: Disable the Steam overlay.
  • [GeDoSaToTool] The tool complains that it cannot access the registry.
    Cause: Might be an access rights/permission issue. Try running as administrator
  • [GeDoSaToTool] The tool complains that it can’t set the global hotkey.
    Cause: Unknown. But this doesn’t really matter, you just don’t get a hotkey.


  • None of the effects work! What am I doing wrong?
    Make sure to enable in-game anti-aliasing, and try pressing the “+” key on your numpad to get a status report.
  • Why is the Bokeh DoF effect disabled by default?
    I disabled that one because I know that some people don’t bother with the settings, and its performance hit is atrocious. If you have performance to spare yo ucan of course use it!
  • Will you release the source code?
    Yes, absolutely. I think I’ve shown in the past that I fully believe in sharing the source of my stuff, but I want to wait just a short while until it’s not so much in flux.

I’ll try to release a new version by Sunday, which should at the very least fix the screenshot crash. Thanks for your continued support, especially to those who made donations.

GeDoSaTo Dark Souls 2 Edition 0.1 ALPHA Release

EDIT: If you came here from some external link, don’t get this, get the latest version. And please don’t report issues in outdated versions.

Well, this is it.

Get it while it’s hot. (link to outdated version removed, see above)
: Download link changed to version 0.1a, fixing (hopefully) .dll dependency.
UPDATE 2: It seems like Steam Overlay popups break the graphics in DS2 with GeDoSaTo currently. Disable the Steam overlay as a workaround for now.

For more information about the background and development of GeDoSaTo, read my earlier blog post about it.

For an in-depth description of what it can do for Dark Souls 2, do read my PC Gamer article. I really enjoyed working with the people at PC Gamer, and not just because they gave me early access to the game ;)

Please remember that this is an initial public alpha release, as such it’s almost certain to be buggy.
And please read the readme file carefully. It is included in the download. And if you want to quickly get an idea of the state of things in-game, press the “+” button on your numpad. It should show you GeDoSaTo status information.

Oh, and if you enjoy what I’m doing and have lots of disposable income, consider donating to further GeDoSaTo development. There’s a lot yet to be done.

Introducing GeDoSaTo

This is kind of awkward, but I have to do this quick because of external circumstances.

In 2013, after working on DPfix, I had a vision.

I saw a world in which everyone was free to downsample any game, unbound by the restrictions of their monitor or display driver. One where people could downsample at high refresh rates, and where the quality of the scaling in real-time was finally equal to that achieved in image manipulation programs.

But I dared dream further than that. What about providing a set of tools, which would allow anyone, without low-level knowledge of Windows programming or even access to a compiler, to perform game-specific modifications and improvements such as DSfix, AGmod or DPfix? Why not also enable talented artists to use their craft on any game, not just ones designed to be modifiable by their creators?

Initial Development

Around Christmas, I started work on GeDoSaTo, the Generic DownSampling Tool. It is a testament to both that dream, and to my complete inability to come up with good names. Development proceeded at a furious pace throughout January, using the very latest in development tools:

GeDoSaTo Advanced Bug/Feature Tracking System

At this point, I’d like to thank the beta testers who supported GeDoSaTo development during that time, and also Sara (of Ys PC fame among other things) who provided invaluable help regarding mouse position mapping when downsampling.

The Slowdown

In short, GeDoSaTo worked, but never sufficiently well for me to be happy releasing it to a broader public. It still only supports DirectX 9 and 9ex, and many games have issues even with those. Not all the features I originally envisioned are integrated yet. Moreover, in the second half of February and all of March I was swamped with “real work”, and so the project mostly rested.

However, with the release of Dark Souls 2 coming up, I’ve realized that if I wait until I am fully happy with it I might never release GeDoSaTo. Thus, this post.

Current State

Neat, huh?

Neat, huh?

As you can see above, GeDoSaTo works. It currently sports the following features:

  • Downsampling, better than any other solution:
    • Essentially no resolution limits (beyond those of the GPU)
    • Downsampling from more than 4x the resolution is useful (multi-stage downsampling)
    • Selection of downsampling methods (not just bilinear sampling)
    • Downsampling in linear color space
    • Support downsampling to high-frequency (e.g. 120 Hz or 144 Hz) target modes
    • Not limited by display hardware
  • Take screenshots of either the pre-downsampled full buffer or the actual image displayed on screen (automatically sorted in per-game folders!)
  • Generic texture overriding for all textures loaded using D3DX
  • It uses a far more solid injection and interception method than my earlier efforts

However, there are plenty of bugs, limitations, and many things I would like in order to call it “complete” are still missing:

  • Only DX9 and 9ex supported, and only in 32 bit. No DX10, 11 or OpenGL, and no 64 bit games
  • No per-game configuration yet
  • No plugin or scripting system yet, to allow everyone to implement game-specific graphical features

How? & the Problems

GeDoSaTo works by telling everyone who asks (generally, games and their configuration programs) that a given, configurable, arbitrary resolution is supported, and once that resolution is selected, it will actually use a different resolution in hardware, while pretending to use the other resolution to the software client. The final image is then downsampled (in a very high quality fashion) before being displayed on the screen.

The biggest challenges in development occurred (and continue to occur) due to the million ways an application can list resolutions, chose one, check it and so on. And it gets far harder if a game uses the mouse, with the billion and one ways you can get the mouse position in Windows. Furthermore, the whole interceptor environment is not really conducive to easy debugging, which is currently holding up scripting integration.



PtBi 5.1851 Released

Some recent emails reminded me that there are still people out there who use PtBi. It seems like AMD got more strict in their interpretation of the GLSL standard somewhat recently. This new version should hopefully fix that issue, and it also includes a few other things:

  • Various sound bug fixes. This time around, audio is really fixed.
  • A new, more readable console font.
  • Statistical tracking of frame processing time and audio buffering.
  • A snazzy overlay display for that information (the default toggle key for it is bound to “T”).

Here’s a screenshot:



Public VR Demonstration using Rift DK1

I rarely post about anything work-related on this blog (the last time was over a year ago), but I really wanted to write about this one. I’ve been a huge supporter of VR and the Rift since before the kickstarter, but the overwhelmingly positive reception when I had the chance to use it in a public demonstration still surprised me.


There is an annual event at Austrian universities called the “Lange Nacht der Forschung” (Long Night of Research). Basically, for one evening/night – starting at 17:00 and going on until 24:00 – the Universities prepare demonstrations, talks and interactive sessions about research for a general public. It’s (surprisingly?) popular, with 136500 visitors this year. There’s a great variety of visitors, students, families with their children, and even seniors.

Our Demonstration

This year, our group was asked to do a demonstration again. Since I wanted to do something which is both related to our current research and engages people I had a pretty hard time coming up with ideas. In the end, I settled on taking the result of one of our compiler analysis methods (designed and implemented by Herbert Jordan) which generates a Petri net representing the parallel execution of a program, and visualizing it in VR using the Rift.

I had a prototype up and running using OpenSceneGraph, but with the recent release of UE4 with licensing for mortals, I decided to try it using that. With just a bit over a week to go (and, it turned out, a few graph layout papers to read and 3D models to create in addition to getting used to coding for and working with a huge engine from scratch) it was a tight squeeze, and quite exhausting, but I completed it in time.

If you can read German you can find more detail here. Basically, it’s a set of nodes (2 types) floating in space, connected by “bridges” representing graph edges, and with pillars showing the ID of the related program node/construct, as well as (optional) “monitors” showing the associated code for e.g. region constructs. Here’s a screenshot:

Screenshot of the Visualization (Non-VR mode)

Screenshot of the Visualization (Non-VR mode)

For the actual demonstration at the event we also had a 30″ screen mirroring the Rift output set up, so that people could see what’s going on, as well as a copy of the poster I linked above to explain the context of what was being presented.

The Reactions

Now we get to the part which is actually interesting. I was really curious how these “normal” people would react to the Rift. I am happy to say that the overall reaction was much more positive than I expected, despite all the technical shortcomings of DK1. We had a group of people watching and waiting for their turn for the entire duration of the event (so 7 hours, actually closer to 7 and a half if you take all the time before and after the official start into account), and probably around 250 people using the Rift.

We had a wide range of visitors over all age and gender boundaries – with families, normally it would be the kids trying the Rift first and then convincing their parents or grandparents. Here are a few photos:

Some remarkable incidents and things of note I observed:

  • We actually had to reassure people multiple times that “we’ll still be here for 5/4/3 hours” during the most crowded periods.
  • Upon it being explained that importing DK2 to Austria will cost about 400€, most people were surprised at how inexpensive that is. One particular remark I remember is a boy (probably elementary school age) exclaimed “Wow, that’s 100€ less than the new Xbox!”.
  • A young woman in her early 20s telling her boyfriend “we need one of these at home” after walking around in the demo for 2 minutes.
  • More people recognized the Rift than I expected. I’m sure some of that had to do with the Facebook deal and the reporting around it.
  • You could easily tell if someone who tried it was familiar with twin stick FPS gameplay. Gamers would zip around using both sticks, but often fail to move their head and just look at stuff until prompted to do so. On the other hand, non-gamers would turn exclusively using their head/body, and be in danger of getting wrapped up in cables.
  • “Mom, can I get this for Easter?”

That’s it, pretty much. After this exhausting but fun experience I’m more certain than ever that VR will not just become big, it will do so very quickly. Oh, and I’d like to thank Philipp Gschwandtner for helping me with the demo, and for taking all the good pictures you see in the gallery above. The bad ones were taken by me.