Categories
Computing

Nvidia DLSS isn’t magic, and this FSR hack proves it

Nvidia’s Deep Learning Super Sampling (DLSS) has been an undeniable selling point for RTX GPUs since its launch, and AMD’s attempts to fight back haven’t exactly been home runs.

But what if FidelityFX Super Resolution (FSR) could grant the huge performance gains of DLSS without all the restrictions imposed by Nvidia? If that sounds too good to be true, I wouldn’t blame you. After all, Nvidia’s special sauce of machine learning wasn’t supposed to be easily replicated.

Well, hold on to your hat because a modder recently discovered how easily FSR could ape off DLSS. And after trying out the solution myself, it’s made me more excited about the potential for FSR than ever.

What we have now

Before we get to the mod itself, it’s worth setting the stage for how we got here. FSR was AMD’s first attempt at a DLSS killer, and unfortunately, it left a bad taste in our mouths. Despite the rapid adoption in the first generation of FSR 1.0, the performance and image quality just didn’t cut it.

All that changed with the release of the technology’s second generation. I’ve tested FSR 2.0 in its launch title, Deathloopand the results are clear: DLSS provides a slightly higher performance boost, but FSR 2.0 is almost identical in terms of image quality. Based on Deathloop, you should use DLSS if you can, but FSR 2.0 is a very close second if you don’t have a supported GPU.

My expectations were surpassed further when I tested God of War, seeing the margin with DLSS shrink even more. In fact, FSR 2.0 was actually around 4% faster than DLSS with the Ultra Performance preset. You’re not trading much of anything with image quality, either. Even at the intense Ultra Performance preset, it’s nearly impossible to spot any differences between FSR 2.0 and DLSS while playing.

FSR and DLSS performance in God of War.

This is the real deal. The only problem? FSR 2.0 is available technically, but it’s not seeing the rapid adoption that the first version did. It’s available in only four games now: Deathloop, Farming Simulator 22, God of War, and Tiny Tina’s Wonderlands. The upcoming list isn’t all that exciting, either, headlined by Hitman 3, Eve Online, and the recently delayed Forspoken. 

Hence, the need for a seemingly impossible solution that takes the goodness of FSR 2.0 and widely expands its effect to as many titles as possible. And that’s where the fun begins.

A look into the future

An enemy swings a sword at the main character of Cyberpunk 2077.

About a month ago, modder PotatoOfDoom released an FSR 2.0 “hack” for Cyberpunk 2077. What the modder realized was that DLSS and FSR 2.0 require basically the same information — motion vectors, color values, and the depth buffer. That allowed PotatoOfDoom to create a simple instruction translation, using the DLSS backbone to send FSR 2.0 instructions. It’s like how Wine works for Windows games on Linux, according to the modder.

I’ll circle back to what these similarities between DLSS and FSR 2.0 mean, but let’s get games out of the way first. I followed the instructions and was able to implement the mod in Cyberpunk 2077, Dying Light 2, and Doom Eternal — all games that don’t currently support FSR 2.0. Doom Eternal was the only game that struggled with the mod, blocking out the DLSS option in the settings menu entirely. That was a no-go.

But Cyberpunk 2077 and Dying Light 2 were an absolute treat. The mod isn’t quite as powerful as a native implementation, but it’s still very close. The difference is less than 10% at most, even with all of the settings cranked up at 4K (including the highest ray tracing options).

DLSS and FSR performance in Cyberpunk 2077 and Dying Light 2.

Image quality was just as good, even on this self-described hack. In a still image, Dying Light 2 actually looked slightly better with FSR 2.0, and it was nearly identical in Cyberpunk 2077. The main difference, as was the case in God of War and Deathloop, is that FSR 2.0 doesn’t handle distant fine detail as well. You can see that on the phone lines in Cyberpunk 2077 below. It’s damn close, though.

DLSS and FSR aliasing in Cyberpunk 2077.

DLSS and FSR 2.0 look largely the same with a still image, but it’s the motion that matters. I saw heavy ghosting in Dying Light 2 that wasn’t present with DLSS or FSR 1.0, and flat textures cause some issues with masking.

Certain elements, like the smog from the sewer in the Cyberpunk 2077 screenshot below, don’t include motion vectors. FSR 2.0 and DLSS get around the issue with masking the element (like in Photoshop) so it’s not included in the supersampling. Unfortunately, they go about the masking in different ways, leading to the nasty pixelation with the FSR 2.0 hack that you can see below.

Sewer texture in Cyberpunk 2077.

Even with those issues, it’s remarkable how close DLSS and FSR 2.0 are, both on a gameplay and a technical level. PotatoOfDoom summed up how much they share in an interview with Eurogamer: “I expected to work on [adding FSR 2.0] for several days, but was pleasantly surprised that it only took me a few hours to integrate.”

The point isn’t that you should necessarily go out and use this mod to add FSR 2.0 to every game. Rather, this mod reveals the deep similarities between DLSS and FSR 2.0 — something Nvidia might not want to readily admit.

Taking deep learning out of supersampling

DLSS is all about machine learning; it’s right there in the name. And to this point, Nvidia has insisted for years that DLSS only works on its most recent graphics cards because they provide the AI cores necessary to perform the supersampling. That’s true, but FSR 2.0 is proof that the advantage provided by AI is small and, for the most part, unnecessary.

A big reason why Nvidia’s GPUs sell above list price is DLSS, even if it doesn’t need to be.

There are a lot of similarities between DLSS and FSR 2.0, even concerning Nvidia’s machine learning bit. DLSS is using a neural network and FSR 2.0 is using an algorithm, but both are fed with the same inputs and use the same overall system to render the final output. The fact that PotatoOfDoom was able to develop one mod that works across several DLSS titles in a few hours is a testament to that.

The main issue now isn’t that DLSS is bad — it’s excellent, and you should use it if you can — but that the feature is exclusive to only a few expensive graphics cards. Even when GPU prices are falling, Nvidia’s low-end and midrange models continue to sell for above list price. And a big reason why is DLSS, even if it doesn’t need to be.

Akito attacks enemies with magic in Ghostwire: Tokyo.
Ghostwire: Tokyo is an early show of Unreal Engine’s TSR, which is very similar to FSR 2.0.

General-purpose solutions like FSR 2.0 and Unreal Engine’s TSR (temporal super resolution) are the way of the future. They work with basically all modern hardware, and developers consistently insist that they only take a few hours to get working.

DLSS doesn’t need to go away, but it would be nice to see Nvidia leverage its relationships with developers to get a general-purpose supersampling feature into games that support DLSS already. And no, Nvidia Image Sharping, which is basically FSR 1.0, doesn’t count.

Catching up

The list of available DLSS supporting games.
In the chicken and egg game of supporting games and supportive gamers, DLSS has one major advantage over FSR. Nvidia

FSR 2.0 is genuinely impressive, but game support is holding it back. Far more games support DLSS than even FSR 1.0, and the official list of four FSR 2.0 is embarrassing. I’m not excited for too many of the upcoming FSR 2.0 titles, either, with the list mostly comprised of older or smaller games.

PotatoOfDoom’s mod is a hopeful sign, but we need more FSR 2.0 games for it to even stand a chance against DLSS. It might be tempting to root for AMD here, but it’s important to remember that DLSS still has a minor lead and is supported in far more games. AMD has a lot of ground to cover, and FSR 2.0 isn’t being added into games at nearly the rate that FSR 1.0 was.

Still, it will be interesting to see how the dynamic between DLSS and FSR 2.0 adjusts over the rest of the year. AMD just released the FSR 2.0 source code in June, after all. For now, DLSS is still the way to go for its game support and slightly better image quality, but it’s not a selling point on an Nvidia GPU like it once was.

This article is part of ReSpec – an ongoing biweekly column that includes discussions, advice, and in-depth reporting on the tech behind PC gaming.

Editors’ Choice




Repost: Original Source and Author Link

Categories
Computing

How to turn on FSR on the Steam Deck

The Steam Deck is great, but it still feels like a bit of a work in progress. The good news is that it has indeed progressed since its release. Valve’s updates have added much-requested features and new compatibility, and one of those updates helped improve performance and visual quality with the introduction of AMD’s Fidelity FX Super Resolution, or FSR.

If you are having trouble balancing a usable frame rate and an acceptable resolution for your favorite games – especially when playing on a monitor – then the Steam Deck’s FSR compatibility could make a huge difference.

If you want to make the most of your Steam Deck, here’s how to enable FSR.

What is FSR on the Steam Deck, anyway?

FSR is an AMD technology that stands for FidelityFX Super Resolution, with the latest version being FSR 2.0. Basically, it works to upscale and optimize the resolution of your games so that they can run with more detail without compromising as much on the frame rate. That’s especially helpful for a system like the Steam Deck, which can struggle to reach higher resolutions for certain games, especially if you are connected to a monitor for a larger screen. Valve has even reported that using FSR can significantly save on battery life for the Steam Deck for certain games.

Some games have innate support for FSR, but on the Steam Deck, FSR can be enabled in the settings to help on all games you play on the system. Here’s what you need to do.

How to turn on FSR on the Steam Deck

Step 1: While you are in a game you want to optimize, press the QAM (Quick Access Menu) button on the Steam Deck. That’s the “…” button the right-hand side.

Step 2: In the menu, move down until you reach the Performance section, indicated by the battery icon.

Step 3: In the Performance section, select the Advanced view option to see all the possible features.

Step 4: Scroll down until you get to the Scaling filter slider. Slide this all the way to the right to the setting that says FSR.

The Scaling Filter in the Steam Deck.

Step 5: Note that right below this section there is an option for FSR sharpness. For now, you can max it out. You may want to return to this slider later on and play with it, especially if you are having frame rate issues in the game you are upscaling.

Step 6: You aren’t done quite yet. To enable FSR, open your in-game menu and look for an option to set the resolution, usually in the video or graphics section (below is where to look in Half Life 2). Set the resolution significantly below the native or default level, preferably 720p or lower. You need to drop the resolution for the Deck to recognize the situation and kick in FSR. Now you should be ready to play.

The Steam Deck menu for Half Life 2.

Step 7: If you aren’t noticing any resolution changes at the same frame rate, check your screen settings. Try toggling the full-screen mode off and on to see if that helps. Keep in mind that that you may have to play around with your resolution settings, too. FSR sometimes works best to help increase your frame rate and sometimes to bump up the resolution, and the best outcome often depends on the game that you are playing.

Did you enjoy tweaking your Steam Deck to enable FSR? Here are nine other tips and tricks you need to know to make the most of your Steam Deck.

Editors’ Choice




Repost: Original Source and Author Link

Categories
Computing

AMD FSR Uses the Same Tech as Nvidia’s Sharpening Filter

AMD’s FidelityFX Super Resolution is an image upscaling algorithm made to improve gaming performance. It was meant to be the company’s response to Nvidia’s Deep Learning Super Sampling (DLSS) technology. While AMD FSR was supposed to be entirely new, digging through the source code showed that it is, in fact, based on the same technology as Nvidia’s old sharpening filter.

AMD previously claimed that the algorithm used in FSR was built entirely in-house, but @VideoCardz on Twitter found that to be untrue. A deeper look into the source code revealed that FidelityFX Super Resolution was based on the Lanczos resampling algorithm which has been around for several decades. What’s perhaps more interesting is the fact that it is also in use by Nvidia.

AMD makes big claims about FSR, but even if they don’t play out, the fact anyone can use it is more important.

The same algorithm that AMD made use of in the creation of FSR is utilized by Nvidia for its upscaling and sharpening filter. It was released with Nvidia drivers several years ago. As such, it’s been available to Nvidia users within the GeForce control panel for quite some time. However, AMD has obviously done much more legwork than to simply reuse Lanczos resampling.

When AMD FSR was announced, there was a lot of hope for AMD fans who wanted to utilize the same technology that Nvidia has already been providing for some time. FidelityFX Super Resolution was said to offer up to twice the performance in 4K gaming with ray tracing enabled. It comes with adjustments that make it run faster and prevent the halo effect from appearing during sharpening. All in all, it stands a chance at becoming a real competitor to Nvidia’s DLSS, although AMD will not be optimizing it for the users of the best graphics cards by Nvidia.

While FSR is still new, AMD’s open-source approach has already started picking up pace. The technology has already been adopted by close to 30 games as well as Unreal Engine and Unity Engine. The technology is supposed to be applied to 3D rendered content, meaning it’s only meant to be visible in games. If used properly, it can turn a 1080p title into 1440p as long as it’s supported. However, when used on flat elements such as the game UI, it can make the text difficult to read or blurry.

An AMD Radeon RX 6700 XT graphics card placed in front of a black background.

The main benefit of this technology lies in its accessibility. While Nvidia users can only benefit from DLSS if they have an RTX graphics card, AMD’s FSR is meant to work on any GPU. According to the Steam Hardware Survey, only 17.6% of all PCs have an RTX-based graphics card. This is where AMD pulls ahead, allowing FidelityFX SR to be used on each and every GPU out there.

Although it turns out that FSR is not quite the 100% made-from-scratch technology that AMD claimed it to be, it presents a solid option for Radeon card users. Previously excluded by Nvidia’s RTX-only DLSS, owners of AMD GPUs can now benefit from this image upscaling technology too. All that remains now is to hope that the technology will continue to spread across different brands and game studios.

Editors’ Choice






Repost: Original Source and Author Link

Categories
Computing

The One Feature Nvidia DLSS Needs to Compete with FSR

Nvidia just made the Deep Learning Super Sampling (DLSS) software development kit (SDK) freely available to developers. In a move that’s likely in response to AMD’s FidelityFX Super Resolution (FSR) technology, Nvidia has shown that it knows that the feature’s superior quality isn’t enough to compete with FSR alone.

Although the move certainly makes DLSS a more equal competitor to FSR, it alone isn’t enough to cement DLSS as the go-to upscaling feature. Nvidia has a commanding position with DLSS at the moment, and by borrowing a key feature from FSR, it could make AMD’s upscaling technique obsolete. Here’s how.

DLSS is winning right now

Nvidia

In the battle between DLSS and FSR, Nvidia’s feature is already winning. That’s not because it’s inherently better than FSR, but because Nvidia has been working on the technology for nearly three years. In that time, the list of supported DLSS titles has continued to grow, despite Nvidia asking developers to apply to use the technology.

Currently, DLSS is available in 56 titles. FSR is only available in 13. Nvidia has a clear lead in game support at the moment, but it’s important to remember that Nvidia built its lineup of games over a number of years. AMD has been able to more rapidly adopt titles, even if the number of games is far lower than what DLSS currently supports.

In a matter of days after FSR arriving on AMD’s GPUOpen platform, for example, Marvel’s Avengers received the feature, and AMD didn’t announce the game beforehand. This rapid adoption is likely what triggered Nvidia to make its SDK freely available to developers, especially as adopters of the feature claimed that AMD’s technology was easier to work with.

DLSS is already winning in the games race, and the move to make the SDK readily available greases the wheels of adoption. The latest SDK also brings Linux support, which wasn’t previously available with DLSS. FSR has worked on Linux since it launched.

For Nvidia, it’s not about DLSS winning against FSR. It’s about maintaining a position it has already built for itself over a few years, which shouldn’t be hard to do given the quality that DLSS provides over FSR, particularly with more demanding upscaling modes.

The quality gap

We were shocked in our FidelityFX Super Resolution review to find that AMD’s upscaling tech worked nearly as well as DLSS at the highest quality setting. A big reason why is the aura Nvidia built around DLSS. Requiring the company’s proprietary Tensor cores and only available to select developers, we thought FSR would fall clearly short of DLSS, even at the highest quality setting.

It didn’t.

That’s not true of the lower quality settings, however. As the internal render resolution shrinks, the problems with FSR start to become clear. Although the quality certainly drops with DLSS as the internal render resolution does, Nvidia’s upscaling tech still holds up much better than FSR does in the more demanding modes.

Godfall screenshot with simulated FSR effect.
Gearbox

There are two main reasons for this. The first is the artificial intelligence (A.I.) training that DLSS uses. There’s a generalized A.I. model that Nvidia trains with high-quality scans offline, which gives the upscaling algorithm more information to work with. Although that extra information isn’t important at high-quality modes, it becomes essential at low ones.

In addition, DLSS uses motion vectors while FSR doesn’t. This temporal data allows DLSS to use information from previous and future frames to accurately track moving objects in a scene, reducing visual artifacts. This is especially noticeable for distant objects, like molten steel pouring in Necromunda: Hired Gun and the flicker of wispy clouds in Death Stranding.

FSR is a very close approximation of DLSS. Once the tech is pushed to the limit, however, it’s clear that FSR is just an approximation. DLSS remains the benchmark due to its ability to take advantage of dedicated hardware, the A.I. model, and temporal information.

Quality alone may not be enough to give DLSS staying power over FSR, though.

The low-end linchpin

The DLSS versus FSR discussion really isn’t relevant on high-end hardware. Simply turning on the feature to one of the higher quality modes will render excellent image quality and a significant boost in performance. Low-end hardware is the linchpin to FSR’s rapid adoption, and it remains the most potent threat to DLSS.

You need an RTX graphics card to use DLSS. To use FSR, you just need a supported game. That means you need at least an RTX 2060 for DLSS, which, thanks to the GPU pricing crisis, will cost you around $600. With FSR, you can get by with something like the GTX 1050 Ti, which only costs around $200 at the time of publication.

A collection of Nvidia GTX 1050 Ti graphics cards.
Bill Roberson/Digital Trends

There are obvious performance differences between the two cards, but the fact remains that budget PC builders who most need access to an upscaling feature have been effectively priced out of DLSS. This is all the more frustrating because DLSS shows its clearest strengths at lower quality settings, which most benefit low-end hardware.

Even with a clear advantage in game support and quality, DLSS won’t be able to maintain its lead over FSR if budget hardware isn’t accounted for. FSR is a generalized solution that works pretty much regardless of the hardware you have, making it an obvious choice for users with inexpensive graphics cards or APUs.

Unfortunately, Nvidia can’t just adopt other graphics cards into DLSS. The feature requires Tensor cores, and they’re only available on the last two generations of Nvidia GPUs. However, Nvidia could use its experience with DLSS, A.I., and temporal upscaling to offer a feature that accounts for players who don’t have access to RTX graphics cards.

This is all the more important given the ongoing problems with finding a graphics card. When options are few and far between, builders are going to reach for whatever’s available. And when developers see that shift, they’ll be more likely to adopt a feature like FSR that works for their player base.

With DLSS, Nvidia has already optimized for the future. We’ve seen things like 8K gameplay above 60 frames per second thanks to the feature, accelerating what’s possible with PC gaming. In order to stay competitive with FSR, though, Nvidia also needs to optimize for the past.

Editors’ Choice




Repost: Original Source and Author Link

Categories
Computing

Nvidia DLSS Is Riding the AMD FSR Wave, Not Its Coattails

In almost every industry, competition drives innovation up and prices down, and in PC hardware, there’s little as hotly competitive as the graphics card market. But what’s good for the gamer is good for the gander too, because while AMD may be riding high on a wave of publicity, goodwill, and mindshare after the release of its FidelityFX Super Resolution upscaling algorithm, Nvidia is more than happy to coast atop it. It’s been trying for a long time to make upscaling relevant, and in releasing a solution that’s available to almost everyone, AMD has done it instead.

Nvidia could benefit from that tremendously.

FSR’s strength could be DLSS’ too

When FidelityFX Super Resolution was first shown off by AMD, I said that even if it turned out to be a fraction as good as AMD claimed, it would be an absolute game-changer. When we got our hands on the technology, it proved to be even better than we hoped, offering gamers a big boost in performance with minimal image degradation, even at the highest quality settings.

But the real strength of FSR is that almost anyone can use it. Whether you’re running a cutting-edge 4K GPU or an entry-level card from five years ago. It works on Nvidia cards too, and there are even some claims of it working on Intel GPUs. Consoles could follow, giving FSR an immediate and enormous potential player base.

AMD

That’s very different from Nvidia’s DLSS strategy. As much as its own supporting cards have grown more popular over the past three years, RTX 2000 and 3000 cards are still very much in the minority. Nvidia’s own GTX 10 series and 16-series cards dominate the Steam Hardware Survey, and though Nvidia has been magnanimous enough to give them the ability to stutteringly try ray tracing, it’s kept DLSS firmly locked behind a paywall that in 2021 has grown to truly ridiculous heights.

Which is why Nvidia must be thanking its lucky stars that AMD launched FSR to such great success. It now has a fight on its hands in convincing gamers that not only is DLSS better than FSR, but that it’s worth buying a new graphics card for.

That’s a fight that it wants to have, because it believes it can win.

Thanks to FSR, gamers can now get a taste of what upscaling technology can do, especially at the low end of the market which Nvidia has stubbornly refused to cater to (at least for now). But when GPU prices finally stabilize and we can all afford to buy graphics cards again, those gamers looking to upgrade will far better understand the potential of DLSS and may just opt to pay for its privilege.

Nvidia Ultra Quality – More than just a name

Following the release of FSR, and its subsequent near-universal praise, Nvidia has been quick with a retort of its own, pushing the story that DLSS is available on more and bigger games, like Fortnite, Minecraft, and Doom Eternal.

A list in tile form of available DLSS-supporting games.
In the chicken and egg game of supporting games and supportive gamers, DLSS has one major advantage over FSR. Nvidia

It’s also stressed the overall greater image quality of DLSS, which is a claim few would have argued with. But it may improve it further still, with rumors of a new Ultra Quality mode set to launch soon. Discovered during a recent release of the Unreal Engine 5 documentation, this preset seems likely to use a greater input resolution than the existing Quality preset, potentially leading to an image quality that is closer to native, without quite the same performance benefits as the lower settings.

It seems awfully convenient that this is coming about shortly after the release of FSR, though, which has its own Ultra Quality setting. Whether it’s because the image quality of FSR surprised Nvidia and feels the need to improve its own, or it merely doesn’t like FSR having a mode that sounds like it’s better than its existing DLSS Quality mode, will likely remain a mystery.

A look at how DLSS technology works.
Nvidia

But there’s no denying that DLSS is a smarter and more in-depth upscaling process. Its use of motion vectors gives it a real advantage over FSR, and though Nvidia’s technique does have its own unique visual artifacts to deal with, they aren’t the kind of heavy-handed sharpening that FSR users experience on most of the settings outside Ultra Quality.

You could certainly make the argument that DLSS is the premium upscaler available today. The problem still remains, however, that it’s very much a premium feature, for gamers who can afford to pay for it.

It’s no good if few people can use it

DLSS is great. It’s effective, looks good, offers great performance advantages, and it’s getting better all the time. But – and I know Nvidia feels I’m wrong on this one – it’s still barely available to anyone. Yes, the RTX 2060 is a popular card, but the overall RTX 2000 and 3000 series barely encapsulates 15% of all Steam gamers.

Steam hardware survey GPU results for June 2021.
It doesn’t help Nvidia’s case that its top RTX graphics cards have seen their numbers fall in the last month.

If AMD had made FSR available to only its own GPUs, it would be in a similar state. But it didn’t, and it isn’t. FSR works on everything, even cards it wasn’t designed to benefit, like Nvidia’s 900-series Maxwell GPUs. DLSS works on the latest and the greatest, which is great for the greatest of gamers with the grandest of wallets, but it’s largely useless for anyone else.

FSR, though, isn’t. Whether you use it or not, whether Nvidia will optimize for it or not, FSR is good for DLSS, and it’s good for Nvidia. FSR is going to put upscaling on the map and Nvidia knows all too well that it has the potential to lead people right to its new-generation GPUs. If Nvidia wants DLSS to remain relevant, it may well need it to.

Nvidia told Digital Trends that we can expect tensor cores in all GeForce GPUs moving forward, and that if we look at recent developments on the laptop front, we can expect something similar on desktop before long. That means more affordable RTX 3050 and 3050 Ti GPUs are likely going to hit desktop in the not-too-distant future.

That’s great. It’s exactly what DLSS needs to help those it has the most potential to benefit. Nvidia will no doubt keep tensor core counts low, and retain the biggest performance benefits for its premium customers, but it’s a start. It doesn’t seem likely that Nvidia will repeat its 16-series generational mistakes of keeping its entry-level consumers firmly locked in the past.

The upscaler wars are here, but should you care?

Not at all. This is one of those wonderful cases where the actions of both AMD and Nvidia are going to benefit almost every gamer. FSR is forcing Nvidia’s hand to make DLSS more inclusive and of higher quality. That in turn will keep AMD hunting for the perfect upscaler, with FSR offering a good-enough solution that looks set to redefine what upscaling is for most gamers.

If I had to put money on which will be more popular long term, I’d say FSR, thanks to its likely use on consoles, its more open standard approach, and its relative simplicity. But I don’t think DLSS is going the way of HairWorks any time soon. If all goes to plan, future Nvidia fans will be able to enable DLSS in the games they want, giving them a great quality and performance boost. For everything else, FSR will be there, giving every gamer those much-needed extra frames per second they’re always chasing.

Editors’ Choice




Repost: Original Source and Author Link