Gregory Hainaut
1fb2c66a21
gsdx ogl: Unscale line
...
Line thickness will be increased to N pixels (N is the upscaling factor).
Code will also be enabled by UserHacks_unscale_point_line = 1
2016-08-22 18:18:12 +02:00
Gregory Hainaut
018895067b
gsdx ogl: restore code to unscale point
...
enabled by UserHacks_unscale_point_line = 1
Point will be transformed into a NxN square sprite. (N is the upscaling factor)
2016-08-22 18:18:12 +02:00
Gregory Hainaut
fa249a3f78
gsdx ogl: don't rely on the Z value in m_vt
...
Value seems wrongly rounded and you can't distinguish 0xFFFF from 0xFFFE
Instead check that depth is constant for the draw call and the value from the vertex buffer
Fix recent regression on GTA (and likely various games)
2016-08-16 07:30:52 +02:00
Gregory Hainaut
5c7e2432bd
gsdx-ogl: improve alpha test for GTA vice city (letters)
...
I don't understand why but it seems depth is rounded down even in 16 bits.
So uses 0xFFFE to enable ate_all_color_then_depth in 16 bits format too :)
2016-08-15 11:38:07 +02:00
Gregory Hainaut
5fbf702500
gsdx ogl: new optimization to bypass the alpha test
...
In FB_ONLY mode the alpha test impacts (discard) only the depth value.
If there is no depth buffer, we don't care about depth write. So alpha
test is useless and we can do the draw with a single draw call and no program
switch
2016-08-15 11:35:24 +02:00
Gregory Hainaut
b62859ffa2
gsdx ogl: only enable the alternate alpha test in FB_ONLY
...
RGB_ONLY requires to handle the alpha channel in the alpha test
2016-08-15 11:25:19 +02:00
Gregory Hainaut
8b94320524
gsdx ogl: implement another algo to handle alpha test
...
Fix rendering issue on letters on Kengo/burnout 3/...
Default algo will execute the alpha test in 2 passes. However due to blending
you can't handle accurately the color.
Fortunately for us, the rendering uses an always pass depth test so you
can execute first all the color rendering (which doesn't depends on the alpha test)
And then the depth part which depends on the alpha test.
2016-08-11 21:15:17 +02:00
Gregory Hainaut
866173a481
gsdx ogl: move zbuffer emulation code into a dedicated function
...
* Code was factorized a bit with the help of max_z
* Add an extra optimization if test is ZTST_GEQUAL and min z value is
the biggest value. Z test will always be pass.
Note: due to float rounding (23 bits mantissa vs 24 bits depth) the test
is done against 0xFF_FFFE and not 0xFF_FFFF. It is wrong but GPU will
also use float so impact will be null.
2016-08-11 21:14:58 +02:00
Gregory Hainaut
74822d6ba3
gsdx ogl: rework atst handling
...
* Move the rounding operation in the constant buffer
* Merge less with less equal. And merge greater with greater equal
Need test
2016-08-10 11:30:11 +02:00
Gregory Hainaut
9a188a87c2
gsdx ogl: move ATST emulation in a dedicated function
...
Future commit will try to reduce the number of Alpha Test possibilities
2016-08-09 20:53:44 +02:00
Gregory Hainaut
1ea83ba3a7
gsdx debug: log current area of the draw
...
This way it is easier to see which part of the texture is read, and which part
of the framebuffer is updated
2016-07-31 13:19:38 +02:00
Akash
dbad57b8e8
GSDX: Silence an implicit conversion warning
...
OMSetBlendState() doesn't accept passing a float value as it's argument
(AKA actual parameter).
2016-07-28 18:58:06 +05:30
Gregory Hainaut
29c97a9bf2
gsdx ogl: only enable accumulation hack in HDR algo
...
Goal is to reduce shader permutations and improve perf when sw blending is disabled
2016-07-07 19:56:23 +02:00
Gregory Hainaut
16c2baa0df
gsdx-ogl: don't hardcode the accumulation blend trick
...
Perf impact is bigger than expected
2016-07-07 19:56:23 +02:00
Gregory Hainaut
cc62e8c785
Merge pull request #1439 from ssakash/Cleanup_Warnings
...
PCSX2: Clean up warnings on MSVC
2016-07-03 15:45:39 +02:00
Gregory Hainaut
11eeeb6ab1
gsdx ogl: be sure sw blending is enabled in sw colclip
...
Hit the assertion on superman
2016-07-02 17:19:41 +02:00
Akash
4cfb2b248e
GSDX: Clean up warnings on MSVC
...
GLLoader: cast passed parameters to required type.
GSDeviceOGL: cast variables to required type and silence warnings.
GSRendererOGL: cast variables to required type and silence warnings.
2016-06-30 16:50:10 +05:30
Gregory Hainaut
08579021c5
gsdx ogl: 1 isn't used for WMT/WMS in shader
...
Stick it to 0 to avoid useless shader toggling
2016-06-11 13:35:32 +02:00
Gregory Hainaut
415ce93425
gsdx ogl: rename the confusing function EmulateGS to Lines2Sprites
2016-06-09 18:27:58 +02:00
Gregory Hainaut
61075febae
gsdx ogl: move selector as state variables
...
Will be easier to move code around if required in the future
2016-06-09 18:27:58 +02:00
Gregory Hainaut
1132230674
gsdx ogl: create m_require_one_barrier/m_require_full_barrier state variable
...
hopefully code will be more readable
2016-06-09 18:27:58 +02:00
Gregory Hainaut
7ece9b823d
gsdx ogl: move texture management into a separate function
2016-06-09 18:27:57 +02:00
Gregory Hainaut
5d49a6b685
gsdx ogl: replace 4 VS shader variation by an AND mask
...
Perf will be roughly the same. However there is a single VS for all
the HW emulation.
2016-06-01 09:29:56 +02:00
Gregory Hainaut
959abe64f8
gsdx ogl: implement wildhack on the CPU
...
Speed impact is likely small and the plan is only to keep a single Vertex Shader
2016-06-01 09:29:56 +02:00
Gregory Hainaut
3d192b7f8d
gsdx ogl: separate channel code into a separate function
2016-06-01 09:29:56 +02:00
Gregory Hainaut
fb26254fbb
gsdx ogl: implement a more generic HLE shader for terminator 3
...
Hopefully without regression for others games
2016-05-29 10:13:43 +02:00
Gregory Hainaut
a9c18c57e4
gsdx option: use the new GetConfig* function
...
v2:
add PSX stuff
ssakash review
2016-05-28 10:07:27 +02:00
Gregory Hainaut
1f4439a89e
gsdx: add some notes of potential optimization
2016-05-23 19:38:44 +02:00
Gregory Hainaut
a7ba779ba8
gsdx ogl: another HLE channel effect for terminator 3
...
Same as before but with a different fbmask value (I don't know why but
I have the feeling that I might need the others value too)
2016-05-20 19:55:39 +02:00
Gregory Hainaut
1c21ea955c
gsdx ogl: HLE channel effect for terminator 3
...
Unfortunately I think the game uses another similar effects
2016-05-20 19:45:20 +02:00
Gregory Hainaut
e258f3e2fa
gsdx ogl: update accurate DATE behavior
...
* Fast accurate DATE is always enabled, it was faster than standard DATE
* The less fast version is always enabled too. It is likely barely used
so perf impact will be small on few game that could hit this path.
Nice rendering has a higher priority
* The "slow" path will depends on the date option.
Note normally it isn't too slow (-10%) if GL_ARB_shader_image_load_store
is supported but AMD crimson is an epic fail.
2016-05-19 10:03:46 +02:00
Gregory Hainaut
e776118de9
gsdx-ogl: implement previous DATE optimization in a single shader pass
...
Faster :) Reduce further the cost of accurate date
The optimization will clear the stencil to 1. So all pixels will have a
single sample that pass both the depth & stencil test. No primitive
overlaps So the destination alpha test can be done directly in the
shader.
2016-05-15 17:44:40 +02:00
Gregory Hainaut
3ab12cef2f
gsdx ogl: accelerate special case of accurate date.
...
Game often uses date to allow a single pixel pass. If this
use case is detected, stencil buffer will be cleared after first pixels
that pass both depth&stencil test.
It seems to reduce the load on the GPU.
Note: with the help of texture barriere, maybe we could implement the algo
with a single pass.
2016-05-15 17:22:58 +02:00
Gregory Hainaut
025be70c42
gsdx-ogl: allow to fallback to a slow accurate DATE when GL_ARB_shader_image_load_store isn't supported
...
The best is still to have a DX11 generation GPU
2016-05-15 16:29:29 +02:00
Gregory Hainaut
5b061e062c
gsdx ogl: replace ClearRenderTarget_i by glClearTexSubImage
...
Avoid state change, avoid potential texture buffer reallocation
Note: require GL_ARB_clear_texture
2016-05-15 15:55:31 +02:00
Gregory Hainaut
82060320ef
gsdx ogl: use draw list size for sprite instead of vertex number to select date algo
...
Latest overlap detection allow to draw multiple sprite instead of 1,
so the limit based on vertex number is too conservative.
2016-05-15 15:00:52 +02:00
Gregory Hainaut
d47d9e5017
gsdx-ogl: fix a minor gcc warning
2016-05-15 13:10:46 +02:00
Gregory Hainaut
4065730e36
gsdx ogl: merge sprite hack take 2
...
try to detect paving correctly. Avoid to break effect such as Heat effect in Tekken5
2016-05-14 12:24:56 +02:00
Gregory Hainaut
24a673c482
gsdx ogl: avoid special format on the merge sprite hack
2016-05-13 18:28:21 +02:00
Gregory Hainaut
156b6425d2
gsdx ogl: add UserHacks_merge_pp_sprite option to reduce upscaling glitches
...
For test purpose, it is higly experimental.
So far it is yield interesting result for tekken5
2016-05-10 08:12:07 +02:00
Gregory Hainaut
c019f86529
gsdx ogl: add a performance note for a potential channel optimization
2016-05-10 08:11:28 +02:00
Gregory Hainaut
5b04672ba2
gsdx ogl: separate Tales of Abyss/Urban Chaos effect based on the fbmask
...
Avoid to rely on CRC
2016-05-08 17:31:13 +02:00
Gregory Hainaut
ecbcc566fe
gsdx ogl: use GT shader for Tourist Trophy
2016-05-07 22:46:41 +02:00
Gregory Hainaut
fc86620327
gsdx ogl: disable channel effect when signature is a bit different
...
Hack to avoid regression on Blood Will Tell
2016-05-07 22:46:41 +02:00
Gregory Hainaut
30b452543a
gsdx ogl: tekken5 uses similar effect as Gran Turismo
...
So just reuse GT hle shader :) Acid stage is now correct. However it might need
some tuning for others stages.
Still look awful with uspcaled resolution (note internal game framebuffer is around 160x128)
2016-05-07 22:46:41 +02:00
Gregory Hainaut
d41613c46a
gsdx ogl: add a Tales of Abyss HLE shader
...
Again fast and efficient but it relies on CRC
v2: forget to update the precompiled shader...
2016-05-07 22:46:41 +02:00
Gregory Hainaut
70ee8c5bc4
gsdx ogl: add an HLE brightness/contrast shader for GT series.
...
It works and it is very fast. But it relies on CRC
Others effect need to be tested as well
2016-05-07 22:46:41 +02:00
Gregory Hainaut
d58b71688b
gsdx debug: auto GL_POP
...
Nicer and exception safe
V2: miss definition of vs/ps
2016-05-05 18:53:32 +02:00
Gregory Hainaut
90af611fdb
gsdx ogl: Fix channel effect interaction with accurate blending
...
* Vertex info must be updated before PrimitiveOverlap
* Fix the vertex number (2 not 4)
* add an uint16 cast to shut up Visual Studio
2016-05-02 19:48:11 +02:00
Gregory Hainaut
e190841d67
gsdx ogl: improve blending logging
2016-05-02 18:14:02 +02:00