CD Projekt RED Talks The Witcher 3 Tech: Tessellation, PhysX, DX11.2, Windows 8, Global Illumination

The Witcher 3 v1

A couple of days ago, we had the pleasure to interview Greg Rdzany – Senior Technical Producer at CD Projekt RED – and Balazs Torok – Lead Engine Programmer at CD Projekt RED. Greg and Balazs shared some new information about the Fur tech that will be implemented in The Witcher 3 and talked about PhysX 3.0, Tessellation, DX11.2, Global Illumination, and shared their opinion about other commercial engines – like CryENGINE and Unreal Engine. Enjoy the interview after the jump!

DSOGaming: Before we begin, please introduce yourselves to our readers.

GR: Hello, I’m Greg Rdzany – Senior Technical Producer at CD Projekt RED.
BT: Hi, I’m Balazs Torok – Lead Engine Programmer at CD Projekt RED.

DSOGaming: The Witcher 3: Wild Hunt is powered by REDengine 3. What are the key differences between REDengine 2 and 3?

BT:  The key difference is that REDengine 3 is made to support open world games. We spent a lot of time figuring out the pipeline and the systems and techniques needed to enable our game teams to achieve their goals, both in terms of storytelling and openness. We also rewrote the renderer to support DirectX 11 – this brought a lot of new features that we can use to make our games look even better.

DSOGaming: Why did you create your own engine instead of licensing one, and what’s your opinion about both CRYENGINE and Unreal Engine 4?

GR: The short version: after our work on W1, which gave us a lot of experience with the Aurora engine, we concluded that ready-made solutions were not fully capable of giving us the creative freedom we were looking for. After evaluating different possibilities and exhaustive discussions we decided to start developing our own technology – technology that would fit our needs perfectly, not only in terms of rendering but also when it comes to tools. RPG games are very complex, so designers and artists require a lot of specialized solutions allowing them to create vast, believable worlds and compelling stories. We believe REDengine provides such support.

As for the available commercial engines, we are watching them closely. Companies like Crytek, Dice and Epic are pushing technological boundaries further and further every time they release new versions of their engines. We try not only to keep up the pace but we would also like to have our own impact on the technological development of solutions powering current AAA games.

BT: The big licensable engines are really great – there’s a team of experts behind them developing every little piece and this creates something that sets the bar really high for us – but we believe that these engines are also very general in their nature. We try to concentrate on all the features that make our engine and toolset especially good for making RPG games, and this specialization allows us to have a smaller team providing high quality solutions on par with the engines mentioned above. With that said, our engine is modular enough that it could be used to make different kinds of games if such a decision was made.

DSOGaming: One of the key features that was removed from UE4 was Sparse Voxel Octree Global Illumination. Does REDengine 3 support it (or any other forms of Global Illumination) and if not, are there any plans for implementing it?

BT: In some ways Global Illumination is the biggest challenge currently facing graphics programmers. It’s quite hard to find a solution that gives feature parity across all our target platforms and we decided that for now we would rather spend our time on other features for providing better-looking lighting and shading. We will definitely return to this topic at some point and I’m sure that we will find a solution that will fit our games, but right now we have other ideas on how to improve the visuals.

DSOGaming: A couple of days ago, Nvidia showcased its Fur Tech that will be featured in The Witcher 3. The performance, though, was underwhelming. Are you guys working with Nvidia to optimize the PhysX effects, and will you be using the PhysX 3.0 SDK?

GR: The Fur Tech showcase presented recently is only an early version of a feature we are working on in cooperation with Nvidia. We will definitely put more effort into optimizing it as well as improving its visual quality. We are still quite far from release, so I believe we will achieve a satisfactory level of performance.

And yes, we will use the PhysX 3.x SDK.

BT: The fur technology from Nvidia is in a very early stage of development – not too long ago it only existed as a research project. It is a very interesting process to get our hands on something at such an early stage and make sure it will be usable in our games. Obviously the technique is not optimized yet but we see a lot of potential in it and we are working very closely with the developers to make sure that we can get the best out of it.

DSOGaming: What are the key tech features of The Witcher 3, and what is the one that you are really proud of?

BT: We are very proud that The Witcher 2 is considered one of the best looking games on the Xbox 360, so we’ve tried to improve our graphics and we are very satisfied with our initial results. Naturally, we are proud that we made the transition to run our games on multiple platforms and to create the systems for an open world. We also switched our physics middleware from Havok to PhysX and we started using Apex.  These were all really big changes and we are far from done – we have a lot more on our plate, including constant improvements to our editor. We should probably get back to this question after the game is released but right now these things come to mind first.

DSOGaming: With the release of the REDkit, players can mod The Witcher 2. What more can we expect from The Witcher 3 (regarding its mod support)?

GR: Honestly speaking it’s too early to talk about that. Simply because the game itself is at pre-alpha stage and we’re fully concentrating on finishing it. Bear with us though and ask us this question again once the game is out!

DSOGaming – Readers’ Question – How has native 64-bit affected the engine? How did you achieve a world 35 times larger than Skyrim The Witcher 2 and what does it imply about the engine, performance, and requirements? Can you share any estimated minimum/recommended PC requirements?

GR: Well, 64-bit architecture gave us access to larger amounts of memory available for the game. I think that’s the biggest benefit. In general the transition to 64-bit went quite smoothly and seamlessly for us.

I admit that the size of the world we have in TW3 provided us with a considerable number of technical challenges. It pushed us to rewrite our streaming system, memory management and resource handling mechanisms. It also required a lot of enhancements from us to the tools used by designers and artists. Many things that were done manually in TW2 had to be automated now to allow us to fill the vast areas Geralt will travel through faster.

It will obviously cause TW3 to have higher requirements than previous installments of the game. But at this stage, without final optimizations, it’s hard to estimate what the minimum system requirements for comfortable playing will be. We will definitely work hard to make this game playable on most gaming PCs.

DSOGaming: In the past, we’ve seen a lot of games being optimized for tri-core CPUs. There are only a few titles that show performance differences between tri-cores and quad-cores. Will The Witcher 3 take full advantage of quad-cores? Will it be a CPU or a GPU bound title?

GR: Even The Witcher 2 was fully prepared to work on multi-core CPUs (not limited to 3 or 4 cores). So our technology is already using the full potential of multi-core CPUs. For TW3 we’ve just made it even better :).

As for being CPU or GPU bound – it’s too early to say anything about this. We are still before final optimizations so we don’t want to speculate now.

DSOGaming: During SIGGRAPH 2013, it was revealed that you had some issues with tessellation on characters. Have you found a solution to this or will you be using tessellation solely for the game’s environments?

BT: The biggest problem we have with tessellation is the way it creates holes in the mesh. This can be solved in two ways: one is to add a lot more data and a lot more calculations to the shaders, and the other is to change the assets in a way that avoids the problem. Both solutions are quite expensive, one in terms of performance, the other in terms of artist time. This is why we made the decision that using tessellation as a default for our characters wouldn’t give us as much as it would cost. That being said, tessellation can still be used with any mesh in the game because the system supports it – using it just becomes a decision that has to be made in some special cases.

DSOGaming: Have you experimented with tessellation in order to eliminate the distant pop-up/pop-in of various objects?

BT: We’ve done some experiments with adaptive tessellation; unfortunately, it would require quite a big pipeline change to really use it everywhere, plus we didn’t get that much benefit from it, so we decided that we will only use it in a few cases where the problems can be easily avoided and the difference is really visible.

DSOGaming: What’s your opinion about Windows 8 and DX11.2? Will you be using any of DX11.2’s exclusive features?

BT: We will definitely make sure that our games have no problem running on Windows 8 and 8.1 but at this point we are not considering using any of the DX11.1 or 11.2 features. It is very important for us to keep the platform specific changes to a minimum while still making use of everything that’s available to us. Some of the DX11.1 features are actually available in DX11 via standard APIs, so we are using those in the development process but not necessarily in the released game.

DSOGaming: Thank you very much for the interview, and we can’t wait to see what you guys have in store for us!

GR: Thank you! It was nice chatting with you. We are also looking forward to share our vision with all RPG fans.

BT: Thanks, I’m sure there will be a lot more interesting information in the future.