GSdx
@gregory

If I wanted to implement a different type of texture upscaling, where in GSdx would I look?

Like where is the EXACT point the filtering operation happens?

It's prolly beyond me but I'd like to look into adding something like xBRZ.
[Image: XTe1j6J.png]
Gaming Rig: Intel i7 6700k @ 4.8Ghz | GTX 1070 TI | 32GB RAM | 960GB(480GB+480GB RAID0) SSD | 2x 1TB HDD
Reply

Sponsored links

It might worth to open a separate thread.

Could you explain me the algorithm? However it will likely bring back most of upscaling issue (at least the one related to the texture size).
Reply
Well tbh I'm not too knowledgeable on how it works. However the project is here: http://sourceforge.net/projects/xbrz/ maybe that can help.

Basically it's a pixel art scaler like HQ2X, Scale2x, etc. However it works reasonably well with certain kinds of non sprite textures as well. It would be quite a boon for 2d games, and also pretty useful for 3d ones. Not everyone likes it, but a lot do. We've seen lots of requests for stuff like HQ2X, and xBRZ is superior so that'd make the most sense. A lot of emulators use it, like PPSSPP, ePSXe, snes9x, etc.

Here are some example from the sourceforge page:

[Image: xBRZ%2022.png]

[Image: xBRZ%20-%20SOTN2.png]

[Image: xBRZ%201.png]

It's not everyone's cup of tea, but I like it a lot and I know others do too.

I think it would be a popular feature.
[Image: XTe1j6J.png]
Gaming Rig: Intel i7 6700k @ 4.8Ghz | GTX 1070 TI | 32GB RAM | 960GB(480GB+480GB RAID0) SSD | 2x 1TB HDD
Reply
the fastest way to do that? render native without filters and use the fx shader pass and upscale the final render.
Reply
Well I don't doubt that it will be popular.

Is it implemented as post processing filter or as a texture filter? Most emulators are sw renderer so it might be a bit easier. (They can use the if statement efficiently). Or maybe directly create 2d sprite upscaled and filtered (before gpu upload) but it might be impossible to do.
Reply
(04-10-2015, 08:06 AM)Blyss Sarania Wrote: [Image: xBRZ%20-%20SOTN2.png]

Sorry, off topic, but that looks terrible.

Like post process anti-aliasing, but for 2D art, and 10x worse.
Reply
@gregory - it can be implemented as either, I think.

PPSSPP does it in hardware, so it's definitely possible. I'll look into how they do it and see if I can find anything useful.

@dogen - Yeah, I said not everyone likes it. Also I agree on that pic it looks pretty *****.

Oh the thing is, if you want to use it for 3d textures(which I do, and which is what PPSSPP does) it needs to be a filter and not a post process.

E.G. it is used at the same stage bilinear normally is.

As a post process it would affect poly edges and things as well and not be nice(with 3d) but fine for 2d.
[Image: XTe1j6J.png]
Gaming Rig: Intel i7 6700k @ 4.8Ghz | GTX 1070 TI | 32GB RAM | 960GB(480GB+480GB RAID0) SSD | 2x 1TB HDD
Reply
I guess I should also clarify that it's not terribly useful for games that use "realistic" type textures (e.g. Metal Gear Solid, Socom) but is quite useful for games that use cartoony/anime type textures (Tales of, Star Ocean 3) and of course very useful for 2d games.

Also, If xBRZ isn't doable, I'd still like to see an option better than bilinear, like Lanczos.

Edit: woops triple post Ninja
[Image: XTe1j6J.png]
Gaming Rig: Intel i7 6700k @ 4.8Ghz | GTX 1070 TI | 32GB RAM | 960GB(480GB+480GB RAID0) SSD | 2x 1TB HDD
Reply
for 3d textures? ugh. Unsure does that look good? isn't it like a "painting" shader? i might think... if you do it wrong you destroy interpolated alpha channels. for "colorkey alpha" on 3d it's useless overkill cause it's basicly already done with bilinear. smudge that further? i know that alphatest look damn good. you might want to dither and implement alpha to coverage rather. but...

it might be an intersting idea for sprites like pixel art. really. but it's not really pixel anymore then. Laugh and... well... you gotta make sure to check what type of alpha you deal with. you can't throw that at everything. Wink
Reply
So I commited my latest fix for bilinear sprite. I didn't touch textures that are draw in reverse. Anyway it is much better for 2D games.

When you know that bilinear filtering on 2D sprite even at native resolution break rendering. You don't see it because factors are like 98%/2% on the good/bad pixels.

I guess, pixel art filtering won't be easy. Game dev plays a lots with the alpha channel on texture, so it might be possible to detect edge this way.
Reply




Users browsing this thread: 7 Guest(s)