Hacker News new | past | comments | ask | show | jobs | submit login
Q2VKPT: Fully path traced Quake 2 (brechpunkt.de)
403 points by Impossible on Jan 19, 2019 | hide | past | favorite | 56 comments

That's super interesting, like the detail is low, obviously but the realness of the lighting almost feels better than a lot of triple A games I've played lately in a way that makes this almost feel more real.

recently saw someone used deep learning to create higher resolution textures for old games. might be something to add on top of this to get more details:



I think you are really on to something here. It would be amazing to see some of the retro Sega classic arcade games such as Space Harrier and Turbo Out Run in 4K!

Q2VKPT seems like a rich area of research. If the entire pipeline could be automated. Using efficient subdivision surfaces and deep learning to intelligently predict light-transport simulation. Then we would merely have to input the game assets of a classic game title. And the output would look like Bioware's Anthem ;)

What about.. AI-powered texture compression.

Train the game upscaling AI with high resolution textures, then ship the game with lower res textures. High quality rendering with smaller file sizes, though won't be as good as the original pictures.

Not very useful in reality, but would be a pretty neat proof of concept.

The question is: would the AI data be smaller than shipping the high quality textures in the first place?

Textures usually ship compressed in a format that is supported by the hardware. Hardware texture compression saves a lot of bandwidth and therefore improves runtime performance. That compression step is done offline and it's slow enough not to do it on the client's side, otherwise just using ordinary JPEG compression would reduce file sizes substantially.

Shipping size is usually not the limiting factor for texture size, GPU memory is. Texture compression must work on small blocks for random pixel addressing.

Which doesn't entirely rule out a deep learning based compressor, just makes it much harder :)

Fwiw, I have seen a NN texture compressor that is compatible with game engines and doesn’t require any AI data to decompress. I can’t give any details because it’s not my project and not published yet. I just wanted to say I know for a fact that your idea there is a good one. ;)

Why use repeated textures? Just provide a low resolution "pattern definition", say some blades of grass, and fresh unique textures could be generated by a network. probably pretty computationally cheap too

Check out Nvidia DLSS

It would be especially neat to see this done for 3d models.

There are plenty of texture upgrades available for Quake, but I haven't really seen any model updates.

Agree, if you add highres textures to old games you quickly reach a point where it just feels less consistent than before, because everything is pretty low tech and then you have these out of place photorealistic textures. It might just be me, considering how popular high res texture packs for Minecraft are. I always felt the stock ones or at least those that tried to mimic the 8 bit style looked best.

So yes, upgrading models and even the level geometry would be very cool IMO.

Depends how well it’s done. Check out https://www.moddb.com/mods/quake-15 for Quake (I), for example.

I guess spotting an upscaled image will soon be pretty much impossible without making your eyes sore or employing another NN. So much for trying to preserve originals on the web.

I think the method employed is called ESRGAN (Enhanced Super Resolution Generative Adversarial Networks)

You should checkout Battlefield 5 with RTX, it's probably the most impressive game available: https://www.youtube.com/watch?v=-1fdpybF-8Y

BF5 applies ray tracing extremely selectively: they only trace light for some glossy and specular surfaces. Most of what you see on screen is still rasterized traditinally in that game, meaning, using some 30 to 40 different hacky methods and approximations to make it look good.

Q2VKPT is different in that it does no traditional rasterization at all for the 3d graphics (only the HUD graphics are rasterized). The rest is path traced with multiple reflections even for the diffuse surfaces. Because of this purity in its approach it is quite unique.

QVKPT is from the guy who invented the postprocessing filter used to denoise the images in this implementation. The graphics would be way worse without that filter (there has to be a convar to disable it).

There is a comparison screenshot a bit down the page

no filter: http://brechpunkt.de/q2vkpt/images/path_tracer_720p.png denoised: http://brechpunkt.de/q2vkpt/images/denoised_720p.png

The denoise filter might as well be the main achievement of this project. Edit: note that if I understand correctly, the filter doesn't operate on single frames, but considers several previous frames in order to maintain temporal cohesion and to improve quality.

>the filter doesn't operate on single frames, but considers several previous frames in order to maintain temporal cohesion and to improve quality.

Do you happen to know how bad are the artifacts? I remember temporal antialiasing produced very good results with static scenes, but fell apart on dynamic ones.

I believe the point was that BF5+RTX is clearly much more realistic looking than this Quake2, even though it's more "truly" ray-traced. BF5 is extremely impressive, with certain locations being on the verge of photo-realism.

Honestly, I thought it was pretty disappointing. If it wouldn't have been pointed out to me where it does its magic I probably couldn't have told whether the effect is turned on. I'd like to see random people who never played it before sat in front of 5 minutes of random gameplay with rtx on and off without telling them which is which and then have them guess afterwards.

Agreed, it's easy to tell there are only a few scenarios where it's actually used.

I found the lighting from the explosions particularly convincing in a way that most games don't capture. Part of my brain was expecting to feel the heat.

Really? Very first explosion in first second shows tons of scattered light on the floor to the left, but very little on the wall, with sharp edge between the two.

The low detail really is due to the outdated Quake 2 models. You could go quite a bit higher on geometry and texture detail before performance becomes an issue. I actually don't know why Christoph picked Q2 specifically for this project.

The lighting in this version of Q2 is vastly more physically correct than in a lot of current generation modern engines. So it really should feel more real. I think this shows why hardware accelerated ray tracing is such a big deal for realtime graphics.

I'd like to see it with shadows. Especially the deep black ones that made The Chronicles of Riddick: Escape from Butcher Bay (2004) look so amazing for its generation, even better than Doom 3.

It could look way better with more detailed geometry and proper materials. Most of those textures have baked-in lightning and lack normal maps and proper materials, which take away a lot of the effect. Take a look at this video from 2013: https://www.youtube.com/watch?v=abqAanC2NZs

A couple of things that would be interesting to try with this. Artificially increasing the geometry with simple subdivision to give a measure of the impact of geometry on the scene.

Do a bloom post-processing filter to give the impression of brighter than maximum. I can see how this might not be considered the point because it's not a ray-tracing solution, but it is a simple screen-space operation that's independent of the technique used to generate the base image. Including such a filter can add a lot of visual appeal, particularly enhancing the lighting benefits of path tracing.

Huh, I wonder if applying that denoising filter to the OpenGL compute version https://raytracey.blogspot.com/2016/06/real-time-path-traced... is going to be as good

A very cool project, kudos to the developers. I don’t want to take anything away from it, but I did stop noticing the graphics pretty quickly and just started watching the gameplay. Maybe it’s the nostalgia of remembering the original overriding the cool-factor of ray tracing.

Same here. Maybe it's partially because I remember the game, and partially because graphics here are good enough to not to distract. In a similar vein, I recently played the remastered version of Modern Warfare 1, and it felt just like I remember playing the original - i.e. a good contemporary game. Were I to play original now, it would feel dated.

Except full scene water reflection. This is pure awesomeness, and completely distracted me from watching gameplay.

That reminds me of the http://www.q3rt.de/ project. I wish someone tried to port that one to rtx.

Seeing Q2 bring back all sorts of memories. That was right about the time for me when I started seeing the benefits of dedicated graphics cards, and Q2 felt magical with one.


Here’s the reference for those unfamiliar with quake 2. https://youtu.be/-rWifmDuJEA

I guess if there's ever a reason to replay Q2 single-player, that would be it.

That and the soundtrack ;)

You need a disk for that as in CD-DA, unless that was patched to use files.

I'd love a version of Half-Life (using the original engine) with this, that's for sure.

Probably not easy to do with the original, but a GPL'd reimplementation is here: https://github.com/FWGS/xash3d

Raytracing, not textures.

It should probably be noted also that this doesn't even seem to be using textures updated with normal & specular maps. This is probably why all the surfaces appear a bit plasticky.

Those water reflections were oddly satisfying to see.

They might have wanted to build the demo on some game that has more realistic geometry and textures to showcase the benefits of raytracing. Quake 2 still looks 90's mostly. I can spot the "hard" features in the demo myself to some extent but given well-known shading techniques you could get a close enough similar emulation of the effects that would fool most people.

> Fully dynamic global illumination using path tracing, with raytraced shadows, glossy reflections and one bounce of indirect lighting.

I wonder how different two, three and four bounces of indirect lighting would make it look.

Would be super interesting to see a side-by-side comparison.

How hard would it be to implement varying resolution across the monitor with this approach, e.g. to combine with an eye-tracker to ensure that only the parts that the user looks at, are rendered in full resolution?

Varying resolution is trivial with raytracing, however a big part of the work here is not tied to screen resolution. Lighting is sampled far below screen resolution and needs to be reconstructed over multiple frames. Eye position adds no useful information here. Doing full-resolution "cinematic quality" path-tracing would require hardware that is magnitudes faster.

Having said that, variable shading rate is a feature of the newest NVIDIA GPUs (and supported by Wolfenstein: New Order) and it could be used with a sufficiently low-latency eye tracker rather trivially as well.

It feels like the effect could be improved by disabling most of the texture maps. The low resolution and baked-in lighting distracts from the physically correct surface shading.

To be honest, I'd really rather see this for Quake 1, which imho had better overall gameplay.

Quake 2 introduced (and overused) coloured lights, which are great showcase of path-tracing's capabilities.

Darkplaces engine[1] had introduced lots of features including photon mapping back in 2011, but it was slow as I remember. Photon mapping is kind of a predecessor of path tracing[2].

[1] https://icculus.org/twilight/darkplaces/download.html [2] https://en.wikipedia.org/wiki/Photon_mapping

woa, the water reflects

Why, oh why not the first Quake?

core i9 x are coming awfully close to larrabee performance as demonstrated in 2008, we should be close to be doing this on the cpu unassisted

Very strange, I'm on a JetBlue flight and the website appears to be blacklisted on their in-flight WiFi ("Fly-Fi")?

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact