Commit Graph

153 Commits

Author SHA1 Message Date
KrossX 9222e93c40 GSdx-hw: Fix OGL line scaling 2020-08-02 14:07:31 +02:00
lightningterror 25bf39e895 gsdx glsl/fx: Remove unused Uber_ATST shader code. 2020-07-28 01:59:53 +02:00
refractionpcsx2 a782e03ebf
GSdx-hw: Improve HW dithering (#3534)
* Improve HW dithering to stop it creating line artifacts across the screen

* Make DX dithering code OGL-like
2020-07-15 13:51:03 +01:00
lightningterror 5362fc9c26 gsdx-ogl: Fix MaxDepthPS byte alignment.
Bigger value comes first, then smaller to fill the gap so the alignment
can be proper.
vec3
float
2020-06-19 19:37:32 +02:00
KrossX b5625ad8b0 gsdx-hw: Add zclamping to ps/fs.
Add zclamping to ps/fs, enable vs, ps/fs clamp when needed with a macro.
2020-06-06 23:56:41 +02:00
lightningterror 5d0eefeebd gsdx-hw: Cleanup a bit EmulateZbuffer.
Update the comment to reflect recent changes,

Rename DepthMask to MaxDepth,

use a mask shift to get z format,

Do vs cb padding on d3d11.
2020-06-06 23:56:41 +02:00
lightningterror 33678441dc gsdx-hw: Clamp zbuffer to depthmask instead of wrapping.
The behavior was verified on Dobie to be correct.
The code needs to be ported to SW renderer too to
improve rendering on SW side.

Current PR will fix plenty of games on HW renderer
that had/have zbuffer issues before.

v2. Set DepthMask to the maximum the current depth format allows.
Will properly clamp for 16bit and 24bit formats.

v3. gl: Fix uniform buffer upload/cache for VSConstantBuffer.
2020-06-06 23:56:41 +02:00
KrossX 8b1eb3b456 GSdx: Dithering on Hardware 2020-05-16 21:53:17 +02:00
Gregory Hainaut 29aef04fbf gsdx ogl: re-normalize coordinate when TEX0 is invalid
Fix #258
Fix #695
2019-02-20 13:49:57 +01:00
lightningterror dabc99f466 gsdx-ogl: Small colclip improvements.
1. Allow hrd colclip to also run on the unsupported
cases which should be pretty rare.

2. Remove colclip from high sw blending.

3. Disable the hdr colclip shader which may not be
actually required to run.

Idea by Gregory
2019-02-08 14:53:15 +01:00
lightningterror 4ab29eb280 gsdx: Remove some useless dx9 comments. 2019-01-26 16:13:07 +01:00
lightningterror 80af99bb44 GSdx-ogl: Switch shader numbers main18 and main19.
Allows us to port feedback write (DoMerge function) to D3D11 without
adding dummy shaders for osd.
2018-12-10 18:31:59 +01:00
lightningterror c8f52b0ba3 GSdx-ogl: Move rgb channel 7 to empty slot 5. 2018-11-25 04:06:04 +01:00
lightningterror b360c07253 glsl, fx: Update point sampler comment. 2018-10-09 09:07:45 +02:00
KrossX 5719c6c3c0 glsl: remove signed int cast side (masks and offsets are unsigned to begin with.
Issue #2617
2018-10-04 20:47:03 +02:00
KrossX 9d562a454b GSdx: Limit Wrap negative UV when PS_FST is 0 only. 2018-10-03 15:21:46 +02:00
KrossX 629d2bd425 GSdx: Wrap negative UV on region repeat wrap mode.
Makes UV coord be on the range [0, SIZE) before applying mask and
offset. This fixes Xenosaga's hair for example, which has negative UV
coords.
2018-10-01 22:38:22 +02:00
KrossX e90c87a8ef GSdx-d3d: Keep fract in [0;1] range port from OpenGL.
Fixes texture flickering in Oni on d3d11.

Commit:
a8968257db
2018-09-28 02:33:58 +02:00
lightningterror 122f730608 glsl: Replace leftover tabs with spaces in shaderboost.
I believe all glsl files are cleaned up now.
2018-08-27 14:01:25 +02:00
lightningterror 1aeec47b30 glsl: Replace leftover tabs with spaces in tfx_fs. 2018-08-22 20:12:53 +02:00
lightningterror d7cdbf6f27 Gsdx: Point Sampler changes.
Re add point sampler to OpenGL. Fixes graphical issues when
Allow 8-bit textures is enabled on AMD gpus.
Issue: https://forums.pcsx2.net/Thread-GSDX-Hardware-mode-Bug-Report-Allow-8-bit-Texture

Adjust the code to be easier to read, and execute the gl code only on amd - suggested by Gregory.

Remove useless ATI_SUCKS define in tfx shader.It wasn't used anywhere outside of the shader.
2018-08-22 20:12:53 +02:00
Gregory Hainaut c5d35d434c glsl: reduce geometry shader complexity
output 1 strip of 2 triangles instead of 2 strips of 1 triangle.

Potentially it would reduce the geometry shader overhead. And it
might avoid a middle line in sprite in some AMD GPU/driver/OS
bad combination
2017-07-12 22:04:03 +02:00
Gregory Hainaut 38010432ee gsdx ogl: handle float integral coordinate for depth sampling
Fix depth effect regression on Nemo (issue #1979)
2017-07-12 22:03:47 +02:00
Gregory Hainaut 2d0a61fc8d gsdx ogl: use load resource to load shader
* Windows behavior must be checked
* remove glsl_source.h

v2: fix missing include
Big thanks to Turtleli

v3:
fix indentation in gsdx-res.xml
add dependency in cmake
remove old res/glsl/fxaa.fx symlink
add tfx.cl for OpenCL support on Linux

v4, v5
fix cmake indentation
2017-04-12 18:09:06 +02:00
Gregory Hainaut 61a7c747e1 gsdx-ogl: alternate implementation of half pixel offset
The previous implementation of HPO adds an offset on vertex position. It
doesn't always work beside it moves the rendering window.

The new implementation will add a texture offset so that instead to sample
the middle of the GS texel, we will sample the middle of the real texture texel.

It must be manually enabled with
* UserHacks_HalfPixelOffset_New = 1 (keep a small offset as intended by GS effect)
* UserHacks_HalfPixelOffset_New = 2 (no offset)

v2: always apply a 0.5 offset in case of float coordinates (Tales of Abyss)
Might break other games but few of them uses float coordinates to read
back the target
2016-11-29 17:22:02 +01:00
Gregory Hainaut c2229e3c0b gsdx-ogl: add a texture offset uniform parameter to vertex shader
It would be used for a new implementation of the half pixel offset hack

Hopefully it doesn't badly impact the perf on low end iGPU
2016-11-29 17:22:02 +01:00
Gregory Hainaut e80ca0fa92 gsdx ogl: of course some driver don't work with GL_ARB_enhanced_layouts
Windows and (AMD or Intel)
2016-10-23 12:48:23 +02:00
Gregory Hainaut 8fdf973e66 gsdx glsl: add basic support of GL_ARB_enhanced_layouts (GL4.4)
Hardcode location of interface to the location 0. If I understand the
spec correctly (unlikely), variable in interface will get successive
location.

Goal is to reduce driver work. Instead to compute some location based on
name matching approach (and silly validation), the driver can now use
static allocation.

Tests on future Mesa 13 are welcome
2016-10-19 23:03:39 +02:00
Gregory Hainaut 317a464278 gsdx shader: RGB => YUV conversion
Required for write feedback emulation
2016-10-14 18:13:20 +02:00
Jason Brown 6ef5607d99 gsdx shader: add a shader to render text for OSD
Gregory: code extracted from the OSD PR to reduce conflict
2016-10-14 18:13:20 +02:00
Jason Brown d84d30fe87 gsdx: Add color component to OGL shaders 2016-10-14 18:13:20 +02:00
Gregory Hainaut 7ea0e90678 gsdx mipmap:ogl: extend shader to support trilinear filtering 2016-10-13 20:16:38 +02:00
Gregory Hainaut c2b67ccb78 gsdx ogl: implement an alternate shader for Jak Shadows
The game sets the framebuffer as an input texture. So I did the same for
openGL. Code is protected with a CRC. It is working because the game want to sample
pixels.

For the record, I tested it GTA too, it doesn't work as expected because
the game will resize the framebuffer to a smaller one. So you don't have
the guarantee that pixel will be read before a data write.

Note: it requires at least accurate blending set on basic

Note: I need CRC of all Jak games that suffers of this issue. Thanks you :)
2016-09-08 23:58:13 +02:00
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 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 8c4d8cfdca glsl: avoid an unset warning 2016-06-09 18:27:58 +02:00
Gregory Hainaut 2b00447a43 glsl: optimize the number of active constant buffer
Increase the performance on the free driver (Nouveau)

Currently the driver validates all UBO when only 1 is updated. It
is clearly a bad idea to put all UBO in a single common headers.
2016-06-05 16:45:11 +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 564bf8a089 gsdx ogl: terminator 3 supports sampling from the depth 2016-05-30 19:39:52 +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 f7ddd488e1 gsdx ogl: Extend uniform buffer with channel parameter
Instead to use the standard ps ubo which is used every draw call.
I reused a barely used buffer to reduce the extra cost of the upload
2016-05-29 10:13:43 +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 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 d5681ba01c glsl: fix a bug in urban chaos hle shader
Bug only impact the lsb bits of the depth conversion, so impact is likely small
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 7c430c9d3c glsl: fix coordinate in channel depth effect
UV can't be used directly in channel effect

Properly fix Urban Chaos smoke
2016-05-04 18:08:40 +02:00
Gregory Hainaut 5676acaef9 glsl: support channel effect on depth texture too 2016-04-30 16:07:45 +02:00