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

528 Commits

Author SHA1 Message Date
Sergey Lipskiy
5072ec8ee8 Fix anisotropic filtering.
Fixed #2527 Is anisotropic filtering always ON
2021-07-22 22:17:07 +07:00
Rosalie Wanders
14229b93ba Fix Project64 when statusbar is hidden 2021-07-21 19:58:15 +07:00
s2s
81ac29a04f Fix an overlook in 213c10d 2021-07-21 19:56:11 +07:00
s2s
213c10d6de Restore equivalent to old code for nativeResFactor=0 2021-06-13 21:54:52 +07:00
s2s
ce1fb27cf7 Fix detection of native-res texture rectangle when computing the texture coordinate offset. 2021-06-13 21:54:52 +07:00
Francisco Zurita
15668b9064 Wait for buffer to be empty before reallocating memory 2021-05-26 23:02:15 +07:00
Francisco Zurita
e9d08c33bd Temporary fix for NVidia shaking on Windows 2021-05-26 23:02:15 +07:00
s2s
acfb569dea Use a 640x640 bounding box for screen coordinates.
A smaller bounding box allows rendering in higher resolutions. It should be made bigger if geometry is clipped.
2021-05-15 23:31:10 +07:00
fzurita
f4a0019acf Fix GLES 2.0 GLSL shader compilation error. 2021-05-02 18:24:11 +07:00
fzurita
6ee8c71bf0 Only try to use an EGLImage if initialization of it was successful 2021-05-02 18:24:11 +07:00
fzurita
0cf810416b Destroy EGL image after we are done with it 2021-05-02 18:24:11 +07:00
s2s
02d12d180d Change heuristic when using non-multiple-of-native rendering resolutions.
The games behave unpredictably at random rendering resolutions, so a simpler heuritic is used.

Fixes #2482
2021-04-28 17:37:12 +07:00
s2s
e70c9bfcd7 fix native rects 2021-04-19 21:55:00 +07:00
s2s
4aa7fe9fc2 Change heuristic to render texture rectangles 2021-04-19 21:55:00 +07:00
s2s
f94ffe2b9d Increment shader storage version number 2021-04-19 21:55:00 +07:00
s2s
4e0a0186f5 Add config option for texture coordinate bounds 2021-04-19 21:55:00 +07:00
s2s
cdd1dcc438 Use texture coordinate bounds for non-native resolutions 2021-04-19 21:55:00 +07:00
s2s
acf26e613d Apply a vertex position or texture coordinate shift to approximate N64 rasterization rules 2021-04-19 21:55:00 +07:00
s2s
39153304e1 Workaround for framebuffer textures 2021-04-19 21:55:00 +07:00
s2s
fe244c5560 Update widescreen hack 2021-04-19 21:55:00 +07:00
s2s
81318c5445 Use screen coordinates to render primitives 2021-04-19 21:55:00 +07:00
fzurita
5f7a7cadc2 Stop using predefined texture sizes introduced for Android
For Android we use EGL image for async copies and for sync copies and
devices that don't support EGL image, the fixed texture sizes don't seem
to improve performance.
2021-04-19 21:50:55 +07:00
Logan
7a6289b270 Fix N64 Depth Compare on Intel PC 2021-04-14 21:07:22 +07:00
Sergey Lipskiy
d27ce4781f Fix calculation of clamping parameters for texture engine:
use integer part of tile coordinates to calculate tile dimensions.

Fixed texture glitches io topgear overdrive, #2464
2021-03-18 16:35:57 +07:00
fzurita
063fdae46e Don't allow EGL image on tegra devices 2021-02-22 13:03:21 +07:00
fzurita
35554dabf0 Fix N64 Depth compare with Adreno 2021-02-17 16:58:28 +07:00
Sergey Lipskiy
442d4ed894 Fix near-palne clipping for GLES.
Fixes #2449 Cruis'n world invisible car
2021-02-14 01:00:10 +07:00
s2s
090b38e2d3 Optimize coverage computation algorithm 2021-02-13 15:26:25 +07:00
fzurita
f48b158c0d Fix usage of GL extension GL_EXT_draw_elements_base_vertex 2021-02-07 11:39:19 +07:00
fzurita
dc6340bfff Fix issue where the barycoords vertex attribute was not being disabled 2021-02-04 20:06:43 +07:00
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