GSdx
(03-26-2015, 03:27 AM)Blyss Sarania Wrote: I gotta say, Asmodean's FXAA is so amazing. It is quite literally the only shader based AA I've ever seen that isn't a bloody mess. It has practically no blur and actually anti aliases reasonably well. It's got nothing on MSAA, but for games that can't use that, it's amazing.

I told him the same thing his FXAA blow nvidia implementation away. I kind wish i should set nvidia's FXAA up like his so i could use in swtor and not deal with horrid bluring nvidia's has
Reply

Sponsored links

Yeah I was wondering myself if it could be implemented in PC games.
[Image: XTe1j6J.png]
Gaming Rig: Intel i7 6700k @ 4.8Ghz | GTX 1070 TI | 32GB RAM | 960GB(480GB+480GB RAID0) SSD | 2x 1TB HDD
Reply
He uses very little sub-pixel AA in his implantation for the standard setup, that's why it AA's pretty well. (I believe the default is 0.25 out of 1.00) You could do 0.00 for straight up only edge detection, but I have a hard time noticing the difference as it is.

You could mimic the result with PC games by using SMAA and turning off anything related to sub-pixel aliasing. FXAA is pretty dodgy, or at least, in my experience.
Reply
(03-26-2015, 02:24 PM)Bigbenn01 Wrote: FXAA is pretty dodgy, or at least, in my experience.

Exactly, which is why I've been so impressed with Asmodean's.

Here is a comparison. In Persona 3, it doesn't AA the environment that well, but it does well on the characters. These are giant PNG for maximum quality(4x+FXAA):

Off:
[Image: off.png]

On:
[Image: 1.png]

Look around Mitsuru's hair and skirt, and the tables for examples where it does quite well. Unfortunately, it does miss e.g. the light fixtures, but I'll accept that as a trade off for no blur.
[Image: XTe1j6J.png]
Gaming Rig: Intel i7 6700k @ 4.8Ghz | GTX 1070 TI | 32GB RAM | 960GB(480GB+480GB RAID0) SSD | 2x 1TB HDD
Reply
(03-26-2015, 09:00 PM)Blyss Sarania Wrote: Exactly, which is why I've been so impressed with Asmodean's.

By dodgy I think he meant it has worse coverage. FXAA was designed to be almost as cheap as possible to run, and as a result doesn't handle long edges as well as smaa and cmaa.

So if you configure smaa in a similar way you'll still end up with higher quality.
Reply
Ahh, I see.

I've always preferred SMAA to FXAA but still hate them both(except for Asmodean's). SMAA does a better job, is less blurry, but is quite smeary.
[Image: XTe1j6J.png]
Gaming Rig: Intel i7 6700k @ 4.8Ghz | GTX 1070 TI | 32GB RAM | 960GB(480GB+480GB RAID0) SSD | 2x 1TB HDD
Reply
Ok boy, I have a hack that improves black line issue in various game (ace combat / mana khemia video / colin 3)

The patch will give you a very small distortion of sprite rendering boundary. It could be less uglier than black line.

Add this option into your GSdx.ini file
Quote:UserHacks_align_sprite_X = 1

Please find the patch below (or in attachment)
Code:
diff --git a/plugins/GSdx/GSRendererHW.cpp b/plugins/GSdx/GSRendererHW.cpp
index fc4e5ef..5cb6971 100644
--- a/plugins/GSdx/GSRendererHW.cpp
+++ b/plugins/GSdx/GSRendererHW.cpp
@@ -32,6 +32,8 @@ GSRendererHW::GSRendererHW(GSTextureCache* tc)
{
        m_upscale_multiplier = theApp.GetConfig("upscale_multiplier", 1);
        m_userhacks_skipdraw = !!theApp.GetConfig("UserHacks", 0) ? theApp.GetConfig("UserHacks_SkipDraw", 0) : 0;
+       // Hack to avoid various black vertical line issue
+       m_userhacks_align_sprite_X = !!theApp.GetConfig("UserHacks_align_sprite_X", 0);

        if(!m_nativeres)
        {
@@ -295,6 +297,22 @@ void GSRendererHW::Draw()
        context->FRAME.FBMSK = fm;
        context->ZBUF.ZMSK = zm != 0;

+       // Hack to avoid black line in various games (ace combat/mana khemia/colin 3).
+       if (m_userhacks_align_sprite_X) {
+               if (m_vt.m_primclass == GS_SPRITE_CLASS) {
+                       size_t count = m_vertex.next;
+                       GSVertex* v = &m_vertex.buff[0];
+                       for(size_t i = 0; i < count; i += 2) {
+                               int x  = v[i+1].XYZ.X;
+                               int ox = context->XYOFFSET.OFX;
+                               // Transform i.d into i.9375 (int12:4 format). It avoid wrong vertical line
+                               // generated by upscaling.
+                               v[i+1].XYZ.X = ((x-ox) | 0xF) + ox;
+                       }
+               }
+       }
+
+
        //

        DrawPrims(rt->m_texture, ds->m_texture, tex);
diff --git a/plugins/GSdx/GSRendererHW.h b/plugins/GSdx/GSRendererHW.h
index 405257a..19b87f6 100644
--- a/plugins/GSdx/GSRendererHW.h
+++ b/plugins/GSdx/GSRendererHW.h
@@ -35,6 +35,8 @@ private:
        bool m_reset;
        int m_upscale_multiplier;
        int m_userhacks_skipdraw;
+
+       bool m_userhacks_align_sprite_X;
        
        #pragma region hacks


Attached Files
.gz   black_line.patch.gz (Size: 785 bytes / Downloads: 796)
Reply
I wonder if this works with Ar tonelico, where the face sprites are messed up with any kind of upscaling? I'll have to try once I get Visual Studio reinstalled.
[Image: XTe1j6J.png]
Gaming Rig: Intel i7 6700k @ 4.8Ghz | GTX 1070 TI | 32GB RAM | 960GB(480GB+480GB RAID0) SSD | 2x 1TB HDD
Reply
Upscaling generates a lots of accuracy issue (so far, input texture too small / input primitive too small / wrong window offset). My hack increases the size of the sprite without increase the mapped texture size. Texture will be a little stretched. I'm afraid it will be horrible for small spirit.

Anyway, if you can generate me a gs dump of Ar tonelico, I will give it a look.
Reply
I have compiled SSE2 and SSE4 versions of this hack. The results in ace combat 5 are definitively worth the tiny imperfections.

Gs dump is here
And please, be aware you'll have to use m_userhacks_RemoveHoleBetweenSprite=1 instead of the option Gregory previously mentioned


Attached Files
.7z   GSdx32-upscalehack.7z (Size: 356,17 KB / Downloads: 563)
Reply




Users browsing this thread: 8 Guest(s)