1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-07 03:13:49 +00:00
Commit Graph

498 Commits

Author SHA1 Message Date
fzurita
c92d13c094 Improve the draw elemenets base vertex check 2021-02-04 20:05:13 +07:00
fzurita
85ad11bbdd GLideN64 soft vertex clipping performance improvement for Adreno GPUs 2021-01-22 15:14:46 +07:00
fzurita
e129d66c22 Compile shader from keys if shader storage binary is invalid 2021-01-20 22:47:33 +07:00
Sergey Lipskiy
402cf6f8b6 Implement software vertex clipping. 2021-01-20 17:07:23 +07:00
fzurita
8b75b5dc96 Fix incorrect width used for sync color buffer reads with EGLImage 2021-01-20 16:42:35 +07:00
fzurita
2aa18a8ac7 Fix recently introduced GLES 2.0 GLSL compilation errors 2021-01-05 13:40:47 +07:00
Sergey Lipskiy
955c2f3b17 Add isHWLSupported bit to CombinerKey.
A game may use several microcodes, where some microcodes support HW lighting and others are not.
The same combiner can be used for both cases. isHWLSupported bit helps to resolve that problem.
2020-12-28 16:18:18 +07:00
Sergey Lipskiy
ca68dc3675 Do not fail if indices of barycoords attributes are greater or equal to max vertex attributes. 2020-12-27 13:11:32 +07:00
S2S
2f8372c113 Cleanup coverage calculation 2020-12-27 12:20:46 +07:00
S2S
a214ab822e Standarize the number of barycentric coordinate vertex attributes.
Use only two coordinates as vertex attributes for triangles to match the number of coordinates rectangles use. The third one can be computed in the vertex shader.
2020-12-27 12:20:42 +07:00
Sergey Lipskiy
47054eabc0 Add enableCoverage setting.
Not implemented for GLideNUI-wtl yet.
2020-12-27 12:20:39 +07:00
Sergey Lipskiy
2233cf9f04 Support 'barycoords' vertex attribute in unbuffered drawer. 2020-12-27 12:20:35 +07:00
S2S
61172283c1 Update blender to use coverage 2020-12-27 12:20:19 +07:00
S2S
fa848dc3f9 Fix issue with dual source blending 2020-12-27 12:01:16 +07:00
S2S
fdf3bc4f21 Compute coverage value 2020-12-27 12:01:16 +07:00
S2S
486cf59614 Load barycentric coordinates as vertex attributes 2020-12-27 12:01:16 +07:00
Sergey Lipskiy
192317955e Limit maxMSAALevel by 16. 2020-12-26 10:24:00 +07:00
Rosalie Wanders
ddec3866a7 Implement cross-platform max MSAA level detection 2020-12-26 10:23:54 +07:00
Sergey Lipskiy
f04ac8296d Implement max MSAA level detection.
Zilmar spec and Windows only.

Fixes #2216 MSAA max not 16x in UI
2020-12-26 09:51:32 +07:00
Sergey Lipskiy
8d028a9eaf Add debug option to force enable unbuffred drawer. 2020-12-23 17:09:55 +07:00
fzurita
3b6aa38b14 Disable "draw_elements_base_vertex" extension if renderer is PowerVR and
GLES is < 3.2
2020-12-21 12:02:04 +07:00
fzurita
02e6ccb3ef Fix missing check for frame buffer fetch in unemulated blending modes 2020-12-20 18:26:58 +07:00
fzurita
895401f981 Cleanup unneeded code 2020-12-17 17:57:37 +07:00
dankcushions
cb76d2f39d Added check for GL_EXT_draw_elements_base_vertex 2020-11-25 12:49:27 +07:00
dankcushions
0e228e9109 Removed GLES version check for glBufferStorage, allowing for any device that supports it. 2020-11-25 12:47:03 +07:00
Rosalie Wanders
3df9b2c312 DisplayWindowMupen64plus: disable WithRate function on any failure 2020-11-23 14:51:28 +07:00
S2S
bb05409c16 Disable clamping for special textures 2020-11-16 10:40:47 +07:00
fzurita
e89f5fedcc Fix build error and warning with Android 2020-11-16 10:39:10 +07:00
Sergey Lipskiy
78c89fbbfd Fix some of PVS-Studio warnings. 2020-11-14 20:00:19 +07:00
Sergey Lipskiy
46c65776a0 Code refactor and cleanup:
* type cast fixes
* signed/unsigned fixes
* code formatting fixes
* class members initialization fixes
2020-11-14 16:54:28 +07:00
gizmo98
ec02cc722f Spread bayer matrix
Multiplay matrix values with 2.0f so values are better spread between
1.0 and 0.0.
2020-11-13 10:08:04 +07:00
gizmo98
93ddc890e2 Use angrylion's magic square matrix
We use a precalculated matrix for float color values. It’s angrylion’s
matrix divided bei 16.0f * 2.0f.
2020-11-13 10:08:04 +07:00
fzurita
9aec59056f Fix some shader compilation issues 2020-11-11 13:34:45 +07:00
S2S
ff62e3cf18 Cleanup blending code
Abstract extension specific code to fragment shader header
2020-11-11 13:34:45 +07:00
fzurita
f01405bc75 Implement N64 blending using framebuffer fetch extensions 2020-11-11 13:34:45 +07:00
fzurita
d509758b6f Disable dual source blending for Adreno, it causes GPU driver crashes 2020-11-11 13:34:45 +07:00
fzurita
1b70d5b145 Fix shader compilation errors with Adreno GPUs with hybrid filter 2020-11-11 13:34:45 +07:00
gizmo98
e5d59a6394 Use angrylion's bayer matrix
https://github.com/gonetz/GLideN64/issues/2359

We use a precalculated matrix for float color values. It’s angrylion’s
matrix divided bei 16.0f.
https://github.com/project64/angrylion-rdp/blob/093754a4a53437925824317a
b22ce6a56748fe14/n64video.cpp#L2509
2020-10-31 13:55:10 +07:00
fzurita
c7144d0775 Fix issues with EGL image with Intel GPUs 2020-10-18 12:23:45 +07:00
S2S
5fa66762b3 Define STVEC in an Intel friendly way. 2020-10-12 12:58:14 +07:00
Rosalie Wanders
b200b33b84 DisplayWindow: introduce _restart()
DisplayWindowMupen64plus: m_resize{Width,Height} moved from _resizeWindow() to _restart()
2020-10-08 16:13:24 +07:00
Sergey Lipskiy
3dfa0e7622 [Code cleanup] Fix code formatting in mupen64plus_DisplayWindow.cpp in accordance with the rest of the code. 2020-10-01 18:05:24 +07:00
Rosalie Wanders
3179b37e8a Fix _resizeWindow for M64P_GLIDENUI 2020-10-01 18:00:30 +07:00
Rosalie Wanders
366ff85de3 Allow GLideNUI to work with mupen64plus
* Update the mupen64plus API headers
  * Add the new video extension functions in the opengl wrappers
  * Pull new headers from upsteam mupen64plus-core

* Modify CMakeLists.txt
  * Add GLideNUI source files
  * Expose new MUPENPLUSAPI_GLIDENUI option
    * This allows you to compile GLideN64 for mupen64plus with GLideNUI
    * NOTE that this only works with front-ends which call PluginConfig

* Move src/windows/Config_windows.cpp to src/GLideNUI/Config_GLideNUI.cpp
  * This makes more sense because it's not windows-exclusive anymore

* Add src/GLideNUI/fullscreenresolutions_mupen64plus.cpp
  * This allows GLideNUI to enumerate the fullscreen refresh rates and resolutions

* Modify src/Graphics/OpenGLContext/mupen64plus/mupen64plus_DisplayWindow.cpp
  * This modification allows mupen64plus with GLideNUI to use the selected fullscreen resolution and refresh rates

* Expose a new PluginConfig function which calls Config_DoConfig()
  * NOTE that this only works with front-ends which call this function
  * NOTE that this technically breaks the mupen spec
2020-09-16 19:02:46 +07:00
Sergey Lipskiy
15cbdc6593 [Code refactor] Remove redundant code. 2020-08-31 11:53:50 +07:00
Sergey Lipskiy
0a755614a0 Correct UTextureEngine::update() for background textures.
Fixed #2251 Zelda: OnePiece backgrounds broken
2020-06-21 18:15:53 +07:00
Sergey Lipskiy
f7b6f158b3 Up shader storage version. 2020-06-16 16:59:43 +07:00
Sergey Lipskiy
ed1648c438 Disable dual blending in Texrect Drawer Mode. 2020-06-14 11:51:33 +07:00
S2S
c48841cfeb Implement dual source blending.
Fixes Donkey Kong 64: Gate textures change from a distance. #585
Fixes Pokemon Stadium wrong transparency in warning sign #728
2020-06-14 11:51:33 +07:00
S2S
3df3df9964 Make glBlendFuncSeparate() available 2020-06-14 11:51:33 +07:00
M4xw
4f58d66e96 Fix regressions in GLES 2.0 support introduced by a405ad8
- IOS compiler also doesn't like the vec2 as return Type, thus it's made a out param
2020-05-31 21:07:48 +07:00
S2S
46d170e5fb Fix error introduced by c14ae30 2020-05-19 11:51:13 +07:00
S2S
c14ae30c6d Fix out of bounds texel fetch. Remove Mario Tennis workaround. 2020-05-17 20:39:47 +07:00
Sergey Lipskiy
4974f64a56 Correct precision in shaders. Follow up 1a9d37053 2020-05-13 09:32:20 +07:00
S2S
1a9d370530 fix floating point precision issue 2020-05-13 09:21:53 +07:00
S2S
f5ee3523ef Fix out of bounds texel fetch issues.
Fixes #2257 Dark Rift background issue
2020-05-12 10:44:54 +07:00
Sergey Lipskiy
be2f2244a2 Correct UTextureEngine::Update for special textures.
Fixed #2258 space silicon valley: first screen does not show
2020-05-11 17:48:18 +07:00
Sergey Lipskiy
b505d29838 [Debugger] Fix textures display. 2020-05-10 19:34:21 +07:00
Sergey Lipskiy
3f9911ab9d Up shader storage version.
Fix some compilation warnings.
2020-05-10 16:40:20 +07:00
S2S
bb2221d55f Preliminary GLES2 implementation 2020-05-10 16:24:29 +07:00
S2S
d3720145e3 Add workaround for issue with Mario Tennis Intro 2020-05-10 16:24:29 +07:00
S2S
4834359ec1 Delay texture coordinate normalization. Adapt texture filter to texture engine. 2020-05-10 16:24:28 +07:00
S2S
a405ad8659 Create Texture Engine unit 2020-05-10 16:22:36 +07:00
oddMLan
d62a653e83 Replace if statements in hybridFilter
if statements are bad for performance in GLSL
2020-05-10 15:56:33 +07:00
oddMLan
2b42e02e69 Fix shader compilation errors in GLSL ES
-Added missing precisions
-Removed explicit floats
-Explicit cast get_texture_size to vec2
2020-05-10 15:56:30 +07:00
Sergey Lipskiy
1cfdb4787d Use hybrid filter for upscale buffer copy and plain bilinear filter for downscale one.
Related to PR #2242
2020-05-10 15:56:09 +07:00
oddMLan
438bcc460f Update Hybrid Shader
This version doesn't use texel_fetch, hopefully fixes any slowdowns in mobile devices.
Also it offloads the bilinear filtering to the hardware.
2020-05-05 11:56:02 +07:00
Sergey Lipskiy
03b404bd4e Use noperspective shade color only for triangles with screen-space coordinates.
noperspective works incorrect for polygons, which are partially out of view.

Fixed #2240 SM64 strange green textures
2020-05-04 20:20:58 +07:00
Sergey Lipskiy
d494806186 Revert "Rewrite fog coordinate calculation:"
This reverts commit 7d4d0f282e.
2020-05-04 19:47:57 +07:00
Sergey Lipskiy
7d4d0f282e Rewrite fog coordinate calculation:
move it from vertex shaders to fragment ones.

Fixed #2234 SM64 Weird Shading on sand texture in Joly Roger Bay
2020-05-03 18:41:20 +07:00
Sergey Lipskiy
0bc6cf7a11 New LLE render. 2020-04-27 17:05:42 +07:00
Logan McNaughton
7ef3be1cab Mask VI_ORIGIN address 2020-04-15 11:12:42 +07:00
Sergey Lipskiy
d8f031294a Use linear equation for LOD calculation,
as proposed by standard-two-simplex in #2203
2020-04-09 15:06:59 +07:00
S2S
2c51fb096f Magnify clipping space by ClipRatio.
Fixed #190 Cruis'n World: wrong logo
2020-04-06 20:01:53 +07:00
Sergey Lipskiy
5ff3ef9649 Dithering shader: correct read threshold value from matrices. 2020-03-31 18:31:44 +07:00
Sergey Lipskiy
a0991dc9cf Refactor shader dithering code: replace mix by switch..case 2020-03-31 18:31:44 +07:00
Sergey Lipskiy
beee2bc368 Use enableHiresNoiseDithering setting. 2020-03-31 18:31:43 +07:00
Sergey Lipskiy
d7e3b4c84b Some dithering shaders refactoring. 2020-03-31 18:31:43 +07:00
Sergey Lipskiy
897fc35d51 Remove ditheringMode and bufferDitheringMode settings.
Add new settings:
- enableHiresNoiseDithering
- enableDitheringPattern
- enableDitheringQuantization
- rdramImageDitheringMode

New settings are not implemented in GUI yet.
2020-03-31 18:31:43 +07:00
Sergey Lipskiy
2600a6bc90 Remove "Enable noise" oprion. Emulation of noise is always enabled. 2020-03-31 18:31:42 +07:00
Sergey Lipskiy
d621eb4d34 Add enum DitheringMode for better readability.
Few fixes.
2020-03-31 18:31:41 +07:00
gizmo98
350d791596 -Remove enableDithering setting and use ditheringMode for everything
-Dithering Modes:
0 disabled
1 noise dithering
2 noise dithering with 5Bit quantitzation
3 noise and ordered grid dithering
4 noise and ordered grid dithering with 5Bit quantitzation
-Quantize dithered alpha (5Bit). Removes white remnants in SF Lylat
Wars.
2020-03-31 18:31:40 +07:00
gizmo98
0597632f8a Add dithering options and better color noise dithering
-Add enableDithering option: true - dithering enabled; false -
dithering disabled
-Add ditheringMode option: quantize noise or ordered grid dithered
content like original hardware would do it. true - quantize to 16Bit
colors, false 32Bit colors.
-Add snoiseRGB() and snoiseA() functions. Color dithering needs
different noiese values for r, g and b.
-snoiseRGB() and snoiseA() „double“ noise resolution if uScreenscale is
>= 2.0. So noise not so blocky but still grainy at higher resolutions.
-Increase config version to 28U
2020-03-31 18:31:40 +07:00
Logan McNaughton
85a8635952 Update to XXH3 for CRC_OPT 2020-03-30 21:16:59 +07:00
Sergey Lipskiy
022b375614 RE2 related fixes:
* fixed gSPModifyVertex for case when primitive depth enabled
* fixed GraphicsDrawer::isRejected for case when coordinates of vertex set by gSPModifyVertex
* fixed writeDepth() shader for RE2

Fixed various issues mentioned in #2152
2020-03-18 14:50:45 +07:00
Sergey Lipskiy
8a9d52b41b Fix static noise on screens in Space Station Silicon Valley.
Problem: the static on the screens is the result of alpha test with a random threshold.
The screens use 2 cycle combiner. First cycle for alpha uses "combined" input.
A value for this input is not set yet in the first cycle, so the result of alpha test is usually wrong.

Solution: replace "combined" input in the first cycle by special "half" input.

Fixed #1764
2020-03-08 23:28:54 +07:00
fzurita
0a5216f8e1 Make the hybrid texture filter optional through configuration 2020-02-12 11:51:04 +07:00
Sergey Lipskiy
0692abea4a Re-implement slower N64 depth compare synchronization method,
which requires only core OpenGL 4.2 without shader_interlock extensions.

Fixed N64 depth compare with older AMD GPU.
2020-02-09 19:03:53 +07:00
Sergey Lipskiy
495d9f959e Simplify aTexScale calculation in UClampWrapMirrorTex::update 2020-01-12 19:52:42 +07:00
fzurita
44ce554d5f Fix issues with EGL image public API on GLES 2.0 2019-11-30 15:54:59 +07:00
Sergey Lipskiy
d52d402d76 Do not use hybrid filer for GLES 2.0 due to poor performance.
Shader and code simplifications.
2019-11-30 15:54:54 +07:00
Sergey Lipskiy
25b270492e Revert "Don't use glGetTexLevelParameteriv to determine texture size"
This reverts commit b31e510932.
2019-11-30 15:31:43 +07:00
fzurita
49bdffb954 Fix shader compilation errors with Adreno devices 2019-11-30 15:30:50 +07:00
fzurita
6ac44db414 Don't use glFlushMappedBufferRange in debug mode, the performance
penalty is too high
2019-11-29 11:55:57 -05:00
fzurita
b31e510932 Don't use glGetTexLevelParameteriv to determine texture size 2019-11-29 15:56:22 +07:00
fzurita
a2fbea9086 Fix GLSL ES 1.0 compilation error 2019-11-29 15:50:34 +07:00
fzurita
0abaad4aee Fix shader compilation errors in GLSL 3.0 2019-11-29 15:02:35 +07:00
Sergey Lipskiy
2b5e8786d1 Add support for TEXTUREMODE_BGIMAGE in UClampWrapMirrorTex::update()
Fixed #2107 Majora's Mask OnePiece backgrounds broken
Fixed #2141 RE2 corrupt video
2019-11-28 19:13:26 +07:00
Francisco Zurita
9c4653a148 Throw an exception if a buffer greater than the ring buffer pool max size is allocated instead of dead locking forever. 2019-11-28 17:33:56 +07:00
Sergey Lipskiy
f918a909c7 Remove opacity check from hybridFilter shader. 2019-11-28 12:31:31 +07:00