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

2284 Commits

Author SHA1 Message Date
Sergey Lipskiy
701ebad2ab Fix _cutLastPathSeparator()
Add Android implementation.
2015-05-29 20:51:23 +06:00
Sergey Lipskiy
2b0db06858 Add Android compatible wrapper for wcscat and wchar_t* constant strings. 2015-05-29 20:51:19 +06:00
Sergey Lipskiy
0a4bf95e2f Wrapper for std::wstring and wchar_t* strings.
Necessary functions are not implemented properly on many Android platforms.
The wrapper converts wchr_t* string to char* one and uses char* functions,
which Android supports well.
2015-05-28 12:20:21 +06:00
Sergey Lipskiy
076f0c8e1b GLideNHQ: Output debug messages to android log instead of file. 2015-05-26 23:41:02 +06:00
Sergey Lipskiy
037d2d8e1d Remove boost dependency.
This modification is done mostly for Android port of the plugin.

Boost::filesystem replaced by osal-files collection of filesystem functions.
osal-files copied from mupen64plus-video-rice and modified to work with wchar_t strings.

Windows implementation should work well with unicode strings, because
Microsoft provides wide string compatible filesystem functions.

Unix implementation fakes work with unicode strings by converting them to multibyte strings.
It may not work if user will chose folder with non-ASCII path.
2015-05-26 23:40:52 +06:00
Sergey Lipskiy
9299dc5549 Disable mip-map texture load for GLES2. 2015-05-26 14:03:53 +06:00
Sergey Lipskiy
ae694f98e0 Always use GL_RGBA as internal texture format for GLES2.
Fixed compatibility with Mali400 GPU.
2015-05-26 14:03:47 +06:00
Sergey Lipskiy
3e0d3dc192 Correct About dialog form:
- disable translation of authors and funders names.
- add nesplayer4life to main funders section. ($500+ in total!)
2015-05-25 15:26:51 +06:00
Sergey Lipskiy
7b0e0b94f4 Disable number of processors detection for Android. 2015-05-23 17:57:16 +06:00
Sergey Lipskiy
2c7184cab6 Add PluginAPI functions: GetUserDataPath() and GetUserCachePath().
New functions are used for texture library initialization.
GetUserDataPath() returns default folder to search for hi-res texture packs.
GetUserCachePath() returns folder to store texture cache.

Mupen64Plus implementation: use system ConfigGetUserDataPath() and ConfigGetUserCachePath().
Windows implementation: just return FindPluginPath() for both functions.

Note: behaviour of Mupen64Plus changed.
Previously the emulator's folder was default path for hires textures and texture cache.
Now default path is system dependent.
For Windows it will be %HOME%\AppData\Roaming\Mupen64Plus
2015-05-23 17:53:08 +06:00
Sergey Lipskiy
0c416070c7 Fix load RGBA16 texture when tlut is enabled.
Solution is taken from Angrylion's software lle plugin.

Fixed Mario Kart- thwomp textures #532
2015-05-22 19:05:21 +06:00
Sergey Lipskiy
c0655c1f7c Correct path to GL includes for GLES
Add #define GL_COLOR_INDEX8_EXT for GLES
2015-05-21 20:21:06 +06:00
Sergey Lipskiy
a966632dc6 Optimization: use simplified fragment_shader_readtex when BILINEAR_3POINT mode disabled. 2015-05-21 00:14:22 +06:00
Sergey Lipskiy
1819f4fc50 Add Shaders and GLSLCombiner for GLES2. 2015-05-21 00:14:16 +06:00
Sergey Lipskiy
48b1d55449 Move noise and monochrome_image initialization to the right place.
These functionalities do not require GL_IMAGE_TEXTURES_SUPPORT.
2015-05-21 00:11:43 +06:00
Sergey Lipskiy
92fcf0a797 Code cleanup: make g_monochrome_image_program variable static. 2015-05-21 00:11:39 +06:00
Sergey Lipskiy
5eee1ef01e Optimization. Split fragment_shader_readtex on 3 part:
- readTex when BILINEAR_3POINT mode disabled
- readTex when BILINEAR_3POINT mode enabled
- readTexMS for multisampled textures.
2015-05-21 00:11:37 +06:00
Sergey Lipskiy
aad80168d3 Code refactor:
Move CompileCombiner to ShadersUtils.
Remove GLES2 specific code.
2015-05-21 00:11:30 +06:00
Sergey Lipskiy
9fd4d55b44 Code refactor: Make specialized shaders code for GLES2 and OGL3X (GLES3+ and desktop GL)
GLES2 is very limited and its limitations make source code look bad.

Step 1. Move Shaders.h and GLSLCombiner.cpp to OGL3X folder.
2015-05-20 17:16:49 +06:00
Sergey Lipskiy
e62e81c0e2 Code refactor: move some shaders utility functions to separate files. 2015-05-20 11:32:10 +06:00
Sergey Lipskiy
e73cee3a58 Code refactor: add abstract class UniformCollection.
Implement it for desktop GL: OGL3X/UniformBlock
and for GLES2: GLES2/UniformSet

GLES3 and above must use OGL3X/UniformBlock.
2015-05-20 11:32:05 +06:00
Sergey Lipskiy
ed4271e60e Make shaders GLES2 compatible. 2015-05-19 00:33:16 +06:00
Sergey Lipskiy
19c9e80b70 Correct frame buffer texture format for GLES2. 2015-05-18 13:51:16 +06:00
Sergey Lipskiy
d30a2dc8b5 Correct depth buffer texture format for GLES2. 2015-05-18 13:51:16 +06:00
Sergey Lipskiy
12f9f8d5d0 Disable ResolveDepthBufferTexture creation for system without GL_MULTISAMPLING_SUPPORT 2015-05-18 13:51:15 +06:00
Sergey Lipskiy
47719e3ce3 Don't set GL_TEXTURE_MAX_LEVEL for GLES2. 2015-05-18 13:51:14 +06:00
Sergey Lipskiy
b14086911c GLES2: fix OGLRender::_initExtensions() 2015-05-18 13:51:13 +06:00
Sergey Lipskiy
b88f801a62 GLES2: fix OGLVideo::readScreen2 2015-05-18 13:51:13 +06:00
Sergey Lipskiy
d105a2a8a1 Make PostProcessor GLES2 compatible. 2015-05-18 13:51:12 +06:00
Sergey Lipskiy
ca0844c57d Correct shader version in PostProcessor 2015-05-18 13:51:11 +06:00
Sergey Lipskiy
b16dedd3f9 Fix compilation error in FrameBufferList::renderBuffer. 2015-05-18 13:51:10 +06:00
Sergey Lipskiy
7cbca30197 Disable resolveMultisampledTexture() for system without GL_MULTISAMPLING_SUPPORT 2015-05-18 13:51:10 +06:00
Sergey Lipskiy
4e821c0763 GLES2: Replace noise texture format by GL_LUMINANCE. 2015-05-18 13:51:09 +06:00
Sergey Lipskiy
9779399306 GLES2: Replace UniformBlocks by separate uniforms. 2015-05-18 13:51:08 +06:00
Sergey Lipskiy
d4a9899110 Code refactor: add set method to uniform classes. 2015-05-18 13:51:07 +06:00
Sergey Lipskiy
b219997c80 Always show cfb until first dlist:
- move flag CHANGED_CPU_FB_WRITE from gSP to gDP (code refactor)
- enable CHANGED_CPU_FB_WRITE on video init.
- disable CHANGED_CPU_FB_WRITE in process display list.

many pd roms and demos use cpu rendering only
now they are supported with default settings
also detectCFB=1 now isn't needed anymore for some games

Commit is based on changes made by purplemarshmallow in #536
2015-05-18 12:55:42 +06:00
Sergey Lipskiy
db9943a7b9 Code refactor: move flag CHANGED_COLORBUFFER from gSP to gDP. 2015-05-18 12:35:48 +06:00
Sergey Lipskiy
5b1a50ecb7 Set OpenGL context major and minor version in OGLVideoMupenPlus::_setAttributes() 2015-05-14 11:45:41 +06:00
Sergey Lipskiy
82a2d65018 Update Mupen64Plus interface headers. 2015-05-14 11:27:44 +06:00
Sergey Lipskiy
d7d22f2821 Fix compilation for Android. 2015-05-13 12:26:36 +06:00
Sergey Lipskiy
98c9303cdc Don't change texture Wrap mode if it has mirror flag.
Fixed Perfect Dark lights glitch depending on angle #516
2015-05-13 10:22:39 +06:00
Sergey Lipskiy
7741138775 Simplify OGLRender::drawTexturedRect : process texcoords in a cicle. 2015-05-13 10:22:38 +06:00
Sergey Lipskiy
98c4f06a77 Simplify OGLRender::_updateStates 2015-05-13 10:22:38 +06:00
Sergey Lipskiy
e758303e74 Code refactor: replace GLSLCombiner::usesT0() and GLSLCombiner::usesT1()
by GLSLCombiner::usesTile(_t)
2015-05-13 10:22:37 +06:00
Sergey Lipskiy
011ba09252 Code refactor: rename GLSLCombiner::usesTex() to usesTexture() 2015-05-13 10:22:36 +06:00
Sergey Lipskiy
5700ec8e54 Add Polish translation to the GLideNUI project. 2015-05-13 10:22:35 +06:00
Sergey Lipskiy
2e0389e72e Load config before About dialog call to get info about current translation. 2015-05-13 10:22:35 +06:00
Sergey Lipskiy
73fcf8d551 Move TextureCache::m_curUnpackAlignment initialization to TextureCache::_addTexture
Mupen64plus set GL_UNPACK_ALIGNMENT to 1 after TextureCache::init().
When TextureCache set GL_UNPACK_ALIGNMENT back to value obtained in init(),
it broke text in mupen64plus messages.
2015-05-13 10:22:34 +06:00
Sergey Lipskiy
fc8a000616 Fix RDRAMSize for non-Windows platforms. 2015-05-13 10:22:33 +06:00
Sergey Lipskiy
2feb8a24dd Use glTexStorage2DMultisample for GLES3_1 2015-05-13 10:22:33 +06:00
Sergey Lipskiy
d46ed98804 Fix wrong set of CHANGED_TEXTURE flag. 2015-05-13 10:22:32 +06:00
Sergey Lipskiy
13d53a0dde Set CHANGED_TILE flag in gDPSetTile.
Fixed Banjo Tooie: certain textures change/shift #499
2015-05-13 10:22:31 +06:00
Sergey Lipskiy
e685cbc83c Rewrite mipmap shader.
Less if().
2015-05-13 10:22:31 +06:00
Sergey Lipskiy
09837f88d4 Replace int uniforms uFb8Bit, uFbFixedAlpha by ivec2 ones. 2015-05-13 10:22:30 +06:00
Sergey Lipskiy
6c062c8232 Replace uniforms uMSTex0Enabled, uMSTex1Enabled by vector uniform uMSTexEnabled. 2015-05-13 10:22:29 +06:00
Sergey Lipskiy
7f9a3973eb Do not use textureLod for fetching normal textures. It kills anisotropic filtering:
https://www.opengl.org/wiki/Sampler_(GLSL)
Also need to keep in mind issue #232 and not allow mip-mapping for combiners,
which do not use it.

Fixed anisotropic filtering not working #505
2015-05-13 10:22:29 +06:00
Sergey Lipskiy
49efba0ce6 Correct RDRAMtoFrameBuffer::CopyFromRDRAM -
need to update combiner's FBInfo before use.
2015-05-13 10:22:28 +06:00
Sergey Lipskiy
eabbd252f8 Change CachedTexture::frameBufferTexture type to enum.
Need to separate one-sampled frame buffer textures from multosampled ones.
2015-05-13 10:22:27 +06:00
Sergey Lipskiy
dbbb7da427 Move _isMarioTennisScoreboard() from FrameBufferList to FrameBuffer. 2015-05-13 10:22:26 +06:00
Sergey Lipskiy
663a0d76f1 Implement multisampled textures fetch in shaders.
Thanks mudlord for the idea.

Fixed Perfect Dark frame buffer effects do not work when FSAA is on. #244
2015-05-13 10:22:26 +06:00
Sergey Lipskiy
b728ab97a7 Disable multisampling related code for GLES below 3.1 2015-05-13 10:22:25 +06:00
Sergey Lipskiy
f754943515 Disable use of depth_compare_shader for platforms, which do not support GL_IMAGE_TEXTURES_SUPPORT 2015-05-13 10:22:24 +06:00
Sergey Lipskiy
1437eb030a Define internal format for depth texture for GLES3 2015-05-13 10:22:23 +06:00
Sergey Lipskiy
d1a16d0a12 Fix memcpy not found on Android. 2015-05-13 10:22:23 +06:00
Sergey Lipskiy
e9564caaab Disable zelda_monochrome_fragment_shader for platforms without GL_IMAGE_TEXTURES_SUPPORT 2015-05-13 10:22:22 +06:00
Sergey Lipskiy
aac3c036dc Add define for shader version string. 2015-05-13 10:22:22 +06:00
Sergey Lipskiy
37963159e4 Fix texturedRectShadowMap for platforms without GL_IMAGE_TEXTURES_SUPPORT 2015-05-13 10:22:21 +06:00
Sergey Lipskiy
81c003a872 Add GLES3 headers include to OpenGL.h 2015-05-13 10:22:20 +06:00
Sergey Lipskiy
f95804db92 Fix vertex_shader_notex for GLES 2015-05-13 10:22:20 +06:00
Sergey Lipskiy
e819e3cf65 Remove obsolete code from Textures.h 2015-05-13 10:22:19 +06:00
Sergey Lipskiy
09b78ea577 Replace define GLES3 by GLES3_1 since current code is GLES3.1 compatible.
GLES3 is different.
2015-05-13 10:22:18 +06:00
Sergey Lipskiy
a550f70330 Add extern "C" for functions in glState.h
Thanks Gillou68310 for hint.
2015-05-13 10:22:18 +06:00
Sergey Lipskiy
243e186ba2 Correct internal format for DepthBufferToRDRAM color texture. 2015-05-13 10:22:17 +06:00
Sergey Lipskiy
d3f6754cff Correct depth texture intarnal format for GLES3 2015-05-13 10:22:16 +06:00
Sergey Lipskiy
0a89aa9f77 Make Shaders GLES3.1 compatible. 2015-05-13 10:22:16 +06:00
Sergey Lipskiy
e4e6c277da Fix fragment shader creation for GLES. 2015-05-13 10:22:15 +06:00
Sergey Lipskiy
c53dac8fa7 Temporal stub for PluginAPI::FindPluginPath 2015-05-13 10:22:14 +06:00
Sergey Lipskiy
107a81d079 Don't init from/to RDRAM objects when frame buffer emulation is off. 2015-05-13 10:22:14 +06:00
Sergey Lipskiy
94ec380bc8 Use GL_R16 as internal type for unsigned short textures for GL and
GL_R16UI for GL ES.
2015-05-13 10:22:13 +06:00
Sergey Lipskiy
0f8f8c3834 Move video_api_export.ver to mupenplus folder. 2015-05-13 10:22:12 +06:00
Sergey Lipskiy
4e4f0d1bf3 Replace 1D textures by 2D ones 2015-05-13 10:22:11 +06:00
Sergey Lipskiy
01807a0499 Fix FrameBuffer_CopyDepthBuffer: return false for GLES2 case. 2015-05-13 10:22:10 +06:00
Sergey Lipskiy
12102146f1 Add TxFilterStub.cpp for GL ES.
Temporal solution to avoid compilation errors.
2015-05-13 10:22:10 +06:00
Sergey Lipskiy
759578ff14 Replace TextDrawer by TextDrawerStub for GL ES. 2015-05-13 10:22:09 +06:00
Sergey Lipskiy
2bf72ab833 Correct filename case in includes. 2015-05-13 10:22:08 +06:00
Sergey Lipskiy
6afe5fe30c Disable anisotropy for GL ES 2015-05-13 10:22:08 +06:00
Sergey Lipskiy
ded889350c Remove use of obsolete texture type GL_LUMINANCE8_ALPHA8. 2015-05-13 10:22:07 +06:00
Sergey Lipskiy
2f2a22ee48 Move video_api_export.ver to projects/android folder. 2015-05-13 10:22:06 +06:00
Sergey Lipskiy
f7b27138d8 Enable GL_IMAGE_TEXTURES_SUPPORT for GLES3 2015-05-13 10:22:06 +06:00
Sergey Lipskiy
a02d284645 Use glTexStorage2DMultisample instead of glTexImage2DMultisample in case of GLSE3 2015-05-13 10:22:05 +06:00
Sergey Lipskiy
70b1b9ad03 Replace glMapBuffer by GLES3 compatible glMapBufferRange. 2015-05-13 10:22:04 +06:00
Sergey Lipskiy
82ce16f5fc Add new defines: GLESX for any GL ES version and GLES3 for GL ES 3.1
Guard GL ES incompatible code with GLESX
2015-05-13 10:22:03 +06:00
Sergey Lipskiy
bd5740ea3d Disable GL_CLIP_DISTANCE for GLES 2015-05-13 10:22:03 +06:00
Sergey Lipskiy
e8d8ee93e4 Correct RSP_SegmentToPhysical
Fixed Glover crash after intro #474
2015-05-13 10:22:01 +06:00
Sergey Lipskiy
bbc71c3f0a Fix crash in FrameBufferToRDRAM::CopyToRDRAM when current buffer is NULL.
Fixed Snowboard Kids causes segmentation fault #477
2015-05-13 10:22:01 +06:00
Sergey Lipskiy
cd0c74dff0 Enable translations for About dialog. 2015-05-13 10:22:00 +06:00
Sergey Lipskiy
5329a2a01b Fix txPath save/load.
Fixed Texture pack path not saved correctly #456
2015-05-13 10:21:59 +06:00
Sergey Lipskiy
a1fdd33389 Add Portuguese and Spanish translations to project file. 2015-05-13 10:21:59 +06:00
Sergey Lipskiy
143cee1712 Disable rendering when config dialog is open to prevent plugin crash if
new settings are incompatible with the current ones.
2015-05-13 10:21:58 +06:00
Sergey Lipskiy
831b3410ed Correct settings section creation for mupen64plus. 2015-05-13 10:21:58 +06:00
Sergey Lipskiy
36ae8b6eb6 Fix settings.hacks restore. 2015-05-13 10:21:57 +06:00
Sergey Lipskiy
29ab85fcc2 Fix frame buffer being bloomed twice. 2015-05-13 10:21:56 +06:00
Sergey Lipskiy
05b92c11bb Apply scissor for post-processed frame buffer area.
Fixed overexposed areas for games with black boarders.
2015-05-13 10:21:55 +06:00
Sergey Lipskiy
a567a880fc Add Italian translation to GLideNUI project file. 2015-05-13 10:21:55 +06:00
Sergey Lipskiy
d95103d3d1 Correct condition for mip-mapped textures filtering in 3 point filter mode. 2015-05-13 10:21:54 +06:00
Sergey Lipskiy
ced78db2b8 Minor code cleanup in ShaderCombiner::ShaderCombiner. 2015-05-13 10:21:53 +06:00
Sergey Lipskiy
e60e09922f Correct 'credits' section in About dialog. 2015-05-13 10:21:53 +06:00
Sergey Lipskiy
0c886e26c3 Limit depth buffer copy to RDRAM with top and bottom bounds of fillrect command.
Fixed regression issues #436 and #437
Issue #330 with Roadsters is fixed too.
2015-05-13 10:21:52 +06:00
Sergey Lipskiy
b205529aec Revert "Don't copy depth buffer to RDRAM if it was not cleared completly."
This commit causes 2 regressions: #436, #437
Better solution needed.

This reverts commit 8b551549e0ca5ece29c5322cb062e8a9bc11e48e.
2015-05-13 10:21:51 +06:00
Sergey Lipskiy
3fa7756fd9 Implement internalization suppport. 2015-05-13 10:21:51 +06:00
Sergey Lipskiy
4d87fb6833 Impelent new fb validity check method:
copy RDRAM content to a buffer and compare by content.
2015-05-13 10:21:50 +06:00
Sergey Lipskiy
4b1114a113 Fix texture ShiftScale calculation.
Pokemon Stadium missing ground texture #412 reveals the problem:
the game loads the same texture into tile0 and tile1.
The only difference is ShiftScale values.
Since the checksum is the same, the same CachedTexture is used for both tiles.
Shift scale correction ovrwrites ShiftScale for tile0 when tile1 is loaded.
Thus, texture coordinates for both tiles will be same.
Combiner uses (tile0-tile1)*env_a+shade. Since t0==t1, texture component is missing.

Solution: calculate ShiftScale for each tile right before use.

Fixed #412
2015-05-13 10:21:49 +06:00
Sergey Lipskiy
94a4f7c411 Code cleanup: remove redundant code in gDPLoadBlock 2015-05-13 10:21:48 +06:00
Sergey Lipskiy
b56ca89553 Code cleanup: remove unused TEXTUREMODE_TEXRECT 2015-05-13 10:21:48 +06:00
Sergey Lipskiy
8950fef27b Fix screenshot save:
Use wchar_t string to keep provided screenshot path.

Fixed Screenshots become invalid images #409
2015-05-13 10:21:47 +06:00
Sergey Lipskiy
e3d8905984 Fix _isMarioTennisScoreboard() hack for (E) version. 2015-05-13 10:21:46 +06:00
Sergey Lipskiy
08513ded89 Correct Mario Tennis scoreboard hack. 2015-05-13 10:21:45 +06:00
Sergey Lipskiy
cc600d499b Fix FogBlendEnabled condition.
Fixed Perfect Dark visor and lighting issues #427
2015-05-13 10:21:45 +06:00
Sergey Lipskiy
96aab6c9ad Correct Mario Tennis scoreboard hack for (J) rom.
Fixed issue #424
2015-05-13 10:21:44 +06:00
Sergey Lipskiy
2525b86f49 Implement "widescreen hack". 2015-05-13 10:21:43 +06:00
Sergey Lipskiy
c9d486222b Add Adjust Aspect option to the GUI. 2015-05-13 10:21:42 +06:00
Sergey Lipskiy
89a6186166 Add solution file for GLideNUI. 2015-05-13 10:21:41 +06:00
Sergey Lipskiy
7017a82277 Correct conversion screen shot folder name from char *. 2015-05-13 10:21:41 +06:00
Sergey Lipskiy
a70a92f752 Switch to Unicode strings. 2015-05-13 10:21:40 +06:00
Sergey Lipskiy
277807fbf4 Don't reset hacks on settings load for mupen64plus. 2015-05-13 10:21:39 +06:00
Sergey Lipskiy
7eb8e46e12 Correct texturedRectCopyToItself - apply it only for 8bit frame buffers. 2015-05-13 10:21:39 +06:00
Sergey Lipskiy
13d2ff4710 Move code from ZilmarAPIImpl_common.cpp to ZilmarAPIImpl_windows.cpp
Remove ZilmarAPIImpl_common.cpp
2015-05-13 10:21:37 +06:00
Sergey Lipskiy
138d270dfd Correct CMakeLists.txt 2015-05-13 10:21:37 +06:00
Sergey Lipskiy
cd1a679160 Rename GLFunctions.cpp to GLFunctions_windows.cpp 2015-05-13 10:21:36 +06:00
Sergey Lipskiy
968059b319 Remove obsolete makefiles from GLideNHQ. 2015-05-13 10:21:35 +06:00
Sergey Lipskiy
b24de2353c Move Android.mk to projects/android.
File needs corrections.
2015-05-13 10:21:34 +06:00
Sergey Lipskiy
2d4c518820 Add instructions how to build project with cmake.
Add Boost libs necessary for Linux build.
2015-05-13 10:21:33 +06:00
Sergey Lipskiy
94bffc2e83 Move visual studio projects for GLideN64 and GLideNHQ to projects/msvc12 folder.
Project file for GLideNUI is special, generated from GLideNUI.pro file,
so it is left on its old place.

glext.h moved to src/inc folder.
2015-05-13 10:21:33 +06:00
Sergey Lipskiy
52d68d1389 Move all sources to src folder. 2015-05-13 10:21:32 +06:00