Align sprite doesn't work in latest PCSX2
#1
Are we aware of this? I don't have time right now to file a proper bug report but I wanted to mention it and see if anyone could duplicate it. If we don't know and someone can I will put a report on Github. Basically in the latest revisions of PCSX2(including the very latest) the align sprite hack(which is used for removing the lines in games like Soul Calibur when upscaling) doesn't seem to work. I tried a million different combinations of things but it doesn't work right. Instead of solid black lines like with no hack, you get an effect like this when the hack is on:

[Image: TNTjiNQ.jpg]

(This screenshot was D3D11 hardware, 3x native, Align sprite on, all other settings default. This is in Soul Calibur 2)

I tried all combinations of renderers and settings but it's always like this. I also tried using round sprite at the same time but that didn't help either! Align sprite AND round sprite together would temporarily fix the image until I unpaused. I even completely wiped my PCSX2 and started from scratch but yeah, no dice. Am I missing something or is it really broken?
[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

#2
I tested it and it worked fine for me. Then I noticed that Gregory fixed the issue 8 minutes ago while I downloaded the build 7 minutes ago. Couldn't have timed that any better honestly.

EDIT: The issue does not persist in GSdx AVX 1.1.0 but it does happen in GSdx SSE41 1.1.0. Both were done in Direct3D11 (Hardware) 3x Native, HW Hacks: Align Sprites, PCSX2 1.5.0-20160509001321


Attached Files Thumbnail(s)
   
Reply
#3
Tongue2

However I don't like your edit ! Instruction set mustn't have any impact. Are you sure that the SSE build isn't an old build.
Reply
#4
(05-09-2016, 11:11 AM)gregory Wrote: Tongue2

However I don't like your edit ! Instruction set mustn't have any impact. Are you sure that the SSE build isn't an old build.
PCSX2 1.5.0-20160509001321 is the release before your align sprite fix, it might have merged wrong with the new one.

I don't see a difference between the two with the same settings. It's fixed in both.
Reply
#5
Rechecked and it was my mistake. I downloaded the build right before gregory fixed it and when I checked moments later saw the newest build and assumed that's the one I had gotten. Although it's still quite odd it worked fine in AVX. Anyways, it's all fixed here.
Reply
#6
Well damn, good job.
[Image: XTe1j6J.png]
Gaming Rig: Intel i7 6700k @ 4.8Ghz | GTX 1070 TI | 32GB RAM | 960GB(480GB+480GB RAID0) SSD | 2x 1TB HDD
Reply
#7
BTW this is another one of the games where the effect of upscaling is limited as the game draws to some kind of "texture as framebuffer" and then pushes that to the screen(in this case probably multiple textures and that's where the lines come from in the first place). The game requests bilinear filter on said textureframebuffer, you can tell by toggling nearest and PS2 bilinear option in GSdx. So yeah a lot of the effect of upscaling gets rekt because of that. Star Ocean 3 is another game that does it. I doubt there is any way to get around it, either ><
[Image: XTe1j6J.png]
Gaming Rig: Intel i7 6700k @ 4.8Ghz | GTX 1070 TI | 32GB RAM | 960GB(480GB+480GB RAID0) SSD | 2x 1TB HDD
Reply
#8
Actually it isn't multiple texture (albeit I know a game that render the background with N tiny texture of 16x16).

* GS memory it optimized for page access. Most game render heavy effect with severals columns of a page width. The GS process primitive from top to bottom (vertical lines). For special effect, the game will render page by page. (grid lines)
* Then games often reads back the framebuffer as an input texture. Issue is that coodinates are from GS (therefore native resolution) whereas frame buffer is upscaled. It is typically the half-texel offset and ghosting issue. FWIW, I think the half texel offset hack is poorly done. Because it moves the vertex position whereas it ought to move the texel position.
Reply
#9
I decide to print the coodinate info when GSdx read back a target (in integer coordinate). Here an example on tekken5 (moonlight)
Quote:T:Error    ID:1377    S:Mid    => SAMPLER: Dp 320.000000 224.000000 Dt 640.000000 448.000000
T:Error    ID:1380    S:Mid    => SAMPLER: Dp 160.000000 112.000000 Dt 320.000000 224.000000
T:Error    ID:1383    S:Mid    => SAMPLER: Dp 64.000000 30.000000 Dt 120.000000 53.000000
T:Error    ID:1635    S:Mid    => SAMPLER: Dp 191.500000 127.500000 Dt 191.500000 127.500000
T:Error    ID:1638    S:Mid    => SAMPLER: Dp 191.500000 126.500000 Dt 191.500000 126.500000
T:Error    ID:1641    S:Mid    => SAMPLER: Dp 191.500000 127.500000 Dt 191.500000 127.500000
T:Error    ID:1644    S:Mid    => SAMPLER: Dp 191.500000 126.500000 Dt 191.500000 126.500000
T:Error    ID:1647    S:Mid    => SAMPLER: Dp 191.500000 127.500000 Dt 191.500000 127.500000
T:Error    ID:1650    S:Mid    => SAMPLER: Dp 191.500000 126.500000 Dt 191.500000 126.500000
T:Error    ID:1653    S:Mid    => SAMPLER: Dp 191.500000 127.500000 Dt 191.500000 127.500000
T:Error    ID:1656    S:Mid    => SAMPLER: Dp 191.500000 126.500000 Dt 191.500000 126.500000
T:Error    ID:1659    S:Mid    => SAMPLER: Dp 639.500000 447.500000 Dt 159.500000 111.500000
T:Error    ID:1912    S:Mid    => SAMPLER: Dp 639.500000 447.500000 Dt 639.500000 447.500000

Dp is the dela of the vertex position. So Dp 330 224 means a rectangle of size 320x224 will be drawn. Dt is the delta of texture coordinate. So 640 448 means a rectangle of 640x448 texel will be read.

Here some picture of the draw 1633 (36 sprites). Related to this information
Code:
T:Error    ID:1635    S:Mid    => SAMPLER: Dp 191.500000 127.500000 Dt 191.500000 127.500000
The input texture (an older framebuffer):    

Then the renderer texture (the current framebuffer):    

Edit: sorry for the resolution but game resolution is very small. Done with a 2x scaling
Reply
#10
Actually I'm curious what will happen, if I merge all those sprite into a single sprite ? No more boundary limit, and maybe I could move a bit the rectangle to avoid the too big offset.
Reply




Users browsing this thread: 1 Guest(s)