Sergey Lipskiy
2d712f2ae0
Rewrite textures loading and mapping:
...
- use RiceVideo method for texture size calculation.
RiceVideo uses the same method for texture dumping.
- rewrite texture mapping.
Texture Clamp-Wrap-Mirror implemented in shaders.
Problem explanation:
https://github.com/gonetz/GLideN64/issues/1885#issuecomment-485136358
Fixed various glitches with HD textures, #1885
2019-06-19 19:02:52 +07:00
Sergey Lipskiy
fc96b78542
Fix load of 4bit CI textures when TLUT mode is off. Correction for commit 98960950
...
Fixed color of the glove in Doubutsu no Mori sub-screen.
2019-03-23 12:37:38 +07:00
Sergey Lipskiy
989609505c
Fix load of 4bit CI textures when TLUT mode is off.
...
Fixed Goemon - Mononoke Sugoroku: wrong gfx #1892
2019-03-06 18:36:40 +07:00
Sergey Lipskiy
e13a2ffd6b
Correct gDPLoadTileInfo bytes calculation for 32bit textures.
...
Fixed ready 2 rumble 2 : wrong gfx in intro #2021
2019-03-05 16:06:26 +07:00
Sergey Lipskiy
3704b37c3e
Fix some of PVS-Studio warnings.
2019-03-03 11:47:10 +07:00
Sergey Lipskiy
f55283e32f
Fix CRC calculation for mip-mapped textures.
...
Fixed green smear on mipmaps in Turok, #1558
2019-02-25 15:44:56 +07:00
Sergey Lipskiy
19cf24f701
Apply "Disable enhancement for backgrounds" option only for S2DEX background commands.
...
Related to Ocarina of time - Temple of time issue #1984
2019-02-24 19:47:28 +07:00
Sergey Lipskiy
49465a094d
Implement dump of background textures.
2019-02-19 12:49:40 +07:00
Sergey Lipskiy
9bf36d390a
Implement 3-point texture filtering for mipmapped textures.
...
Fixed #1558 3-point texture filtering doesn't work with mipmapped textures.
2019-02-16 20:45:51 +07:00
Sergey Lipskiy
edc81952ab
Fix texture unpack alignment for filtered textures.
...
Fixed #1412 : Enhancements cause buggy texture elements.
2019-02-15 17:44:45 +07:00
Sergey Lipskiy
2aeff6caa5
Fix tile size when it is loaded by BgCopy with LoadBlock.
...
BgCopy set dimensions for tile0 to zero.
We can't use dimensions of load tile either because of CopyBlock.
The only way to find size of loaded texture is to use coordinates of texrect.
There is one-to-one correspondence between rect pixels and texture texels in copy mode,
so we can safely use it in this case.
2019-02-02 18:34:10 +07:00
Sergey Lipskiy
aab318b4f7
Fix tile load for BG commands.
2019-02-02 18:34:08 +07:00
Sergey Lipskiy
9ac633d2ea
Add originalMaskT, originalMaskS fields for struct gDPTile.
...
masks and maskt set by gDPSetTile, but _calcTileSizes may change them if actual
tile dimension do not correspond the mask. This creates problem for S2DEX_BG_1Cyc command,
which set tile masks and maskt to maximum, while actual size of loaded tiles may vary.
_calcTileSizes may set new values for masks and maskt, which are valid for the current tile but invalid for next ones.
Thus, original values of tile masks and maskt must be restored when tile size calculated again in _calcTileSizes.
2019-02-02 18:34:08 +07:00
Sergey Lipskiy
a44d5a8960
Fix condition to apply hardware texture filtering:
...
FILTER_LINEAR must be used only if the current combiner uses LOD.
2018-10-18 11:14:34 +07:00
gizmo98
35099ec8cb
Backgrounds: Fix cut off textures and texture fragments and seams
...
-Fix cut off textures in hamster64. Enable coord correction if
gDP.otherMode.textureFilter == G_TF_BILERP.
-Fix seams in hamster64 and texture fragments in starcraft64. Enable
texture clamp if lrs/lrt <= (imageW/imageH - 1).
2018-10-13 19:09:24 +07:00
Sergey Lipskiy
9f936be57e
Correct condition for texture filtering: remove (gSP.objRendermode&G_OBJRM_BILERP) != 0 from the condition.
...
It seems that flag G_OBJRM_BILERP in objRendermode does not mean that texture will be filtered.
2018-09-30 18:03:46 +07:00
Logan McNaughton
6ddaba8ec5
Remove FB Attachment caching
2018-05-08 16:27:37 +07:00
Sergey Lipskiy
10710f96ac
Fix warnings from compiler and static code analizer.
2018-05-06 15:28:07 +07:00
Sergey Lipskiy
75ea06cec7
Code refactoring: fix issues found by static code analizer.
2018-04-19 20:16:21 +07:00
Logan McNaughton
6a10a83d09
Fix RE2 and NFL QB Club 98 on GLES
2018-04-16 21:38:42 +07:00
Logan McNaughton
18e9a73eba
Cache SpecialFeatures check
2018-04-07 11:30:33 +07:00
Logan McNaughton
b49ee1dd8b
Fix GLESX clipping hack in GraphicsDrawer
2018-04-07 11:30:33 +07:00
Sergey Lipskiy
7aeb1018ea
Fix texture size calculation and texture load.
...
Fixed Missing Ground Textures in Super Smash Bros. #1716
2018-03-11 14:43:16 +07:00
Logan McNaughton
91ab96d514
Fix FB attachment caching when texture is deleted
2018-03-09 20:32:34 +07:00
Logan McNaughton
cb90bb95ed
Cleanup FB Texture caching code
2018-02-26 21:15:51 +07:00
Sergey Lipskiy
210315ec46
Fix texture filtering when mip-mapiing is off, #1699
2018-01-03 17:09:23 +07:00
Sergey Lipskiy
2e53bf19a0
Fix CRC calculation for 32bit textures.
2017-12-16 15:14:46 +07:00
Sergey Lipskiy
26623cec1f
Code cleanup: fix issues in GLideN64 found by static code analyser.
2017-11-18 22:07:27 +07:00
Sergey Lipskiy
e1c7a44593
Force texture wrap/mirror for hires textures when texture size is half of real (load) texture size.
...
Fixed Majora's Mask - custom textures broken on moon #1662
2017-11-18 15:31:02 +07:00
Sergey Lipskiy
dd4fac7230
Set tmu when init hires texture.
...
Fixed: Zelda: OoT Texture Pack flickers before day/night transition #1470
2017-11-05 22:27:13 +07:00
Sergey Lipskiy
4e36fa07a2
Remove 'Video RAM usage limit' config option.
2017-11-04 18:43:29 +07:00
Sergey Lipskiy
a2ac255710
Fix divide by zero crash when hd texture is less than original one.
2017-11-02 23:39:21 +07:00
Sergey Lipskiy
d1bf2e3979
Fix load hires textures.
...
Fixed 2 zelda oot problems #1521
2017-11-02 22:59:18 +07:00
Sergey Lipskiy
adc2b547e8
Implement YUV-to-RGB color space conversion. See 12.5 of programming manual
...
Up shader storage version.
Fixed Killer Instinct Gold: Improper Projectile Effects. #1513
2017-10-31 13:27:34 +07:00
Sergey Lipskiy
7e4271d991
Display save/load progress for combiners shaders
...
Display "init noise texture" message. Progress is hard to display because noise textures generated in threads.
2017-10-26 00:37:26 +07:00
Sergey Lipskiy
deaf61299f
Decrease level of mip-map texture if texture with given size and level can't be created by OpenGL.
...
Fixed shadows of empire: black triangles (regression!) #1612
2017-10-02 16:58:55 +07:00
Sergey Lipskiy
70c540b073
Rewrite fix for #1539 : keep in tile descriptor start address of frame buffer, not pointer on it.
...
Should be more safe.
2017-09-29 22:25:56 +07:00
Francisco Zurita
cd8783b24b
Don't use hires textures with zero dimensions
2017-05-29 23:18:16 -04:00
Logan McNaughton
6c32d5cd8f
Texture Cache performance improvements
2017-04-04 08:58:49 -07:00
Sergey Lipskiy
5e51b386f1
Make Resident Evil 2 playable.
2017-04-02 12:02:38 +07:00
Sergey Lipskiy
226cd6e4a3
Simplify TextureCache::_loadDepthTexture : do not convert unsigned shorts to floats
2017-04-02 10:41:30 +07:00
Sergey Lipskiy
5bfac0a664
Fix HD textures load for MK64, #1341
2017-03-23 22:51:34 +07:00
Sergey Lipskiy
8f1031da85
Call _calcTileSizes before TextureParams structure initialization because
...
_calcTileSizes can change clamp flags.
Fixed #1317 Smash 64 Graphical Inaccuracies
2017-03-22 20:28:00 +07:00
Sergey Lipskiy
a9bb3a46eb
Revert "Correct _calcTileSizes."
...
This reverts commit 6f35e5a237
.
2017-03-22 20:19:55 +07:00
Sergey Lipskiy
6f35e5a237
Correct _calcTileSizes.
...
Fixed #1317 Smash 64 Graphical Inaccuracies
2017-03-20 21:32:41 +07:00
Sergey Lipskiy
f428234787
Remove cached texture if new texture with the same CRC has different dimensions.
...
Fixed Aidyn Chronicles menu icons enlarged or text cut #1420
Problem description:
I thought that the same texture must always have the same dimensions.
I was wrong. When Aidyn Chronicles menu opens,
menu textures clamp width or clamp height may change during menu opening animation.
CRC remains the same because texture data not changed.
Solution:
Remove cached texture when expected dimensions differ from actual ones and load texture again.
I hope it is a rare case.
2017-03-19 19:18:07 +07:00
Sergey Lipskiy
bfe5b6078e
Fix compilation with clang.
2017-02-22 12:19:06 +07:00
Sergey Lipskiy
5b3b2920bc
Do not set sampler states for multisampled textures:
...
"GL_INVALID_ENUM is generated if the effective target is either GL_TEXTURE_2D_MULTISAMPLE or GL_TEXTURE_2D_MULTISAMPLE_ARRAY, and pname is any of the sampler states."
Fixed HWFBE when MSAA enabled.
Correct code formatting.
2017-02-18 21:40:41 +07:00
Francisco Zurita
5fd16a73b7
Fix GLES 2.0 texture initialization errors
2017-02-14 00:00:08 -05:00
Sergey Lipskiy
b9453474b6
Fix initialization of multisample textures.
2017-02-12 16:05:02 +07:00
Sergey Lipskiy
e011ee56b5
Fix internal texture formats for GLES 2.0
2017-02-10 16:58:17 +07:00
Sergey Lipskiy
403c60cfea
Convert texture format returned by GLideNHQ for GLES2.
2017-02-05 20:26:40 +07:00
Sergey Lipskiy
e232ae9e09
Rename InternalColorFormatParam RGBA to InternalColorFormatParam RGBA8.
2017-02-05 20:07:13 +07:00
Francisco Zurita
669e925029
Fix typo in ImageFormat() ctor in Textures.cpp
2017-01-29 22:09:56 +07:00
Sergey Lipskiy
df4a81bfea
Add special Parameter classes to make parametrs usage more safe.
2017-01-28 16:52:09 +07:00
Sergey Lipskiy
5ddfd78f50
Rewrite TextureLoadParameters.
...
This static structure uses static values from Parameters.cpp.
It can be initialized before initialization of parameters it uses.
I had to put it inside aux struct with delayed initialization.
MSVS 2013 can't do initialization of non-static objects with initialization list,
so I had to add ugly workaround for it.
2017-01-28 10:11:45 +07:00
Sergey Lipskiy
ea4d174e5c
Correct texture initialization.
2017-01-26 21:36:54 +07:00
Sergey Lipskiy
80ed169e24
Remove use of OpenGL.h
2017-01-22 20:43:05 +07:00
Sergey Lipskiy
4a97083d77
Raplace GL types in TextureLoadParameters
2017-01-22 18:44:42 +07:00
Sergey Lipskiy
663f696d8f
Remove direct calls of glBindTexture and GL_UNPACK_ALIGNMENT related functions.
2017-01-22 18:10:52 +07:00
Sergey Lipskiy
4e459c7645
Change type of CachedTexture name to graphics::ObjectHandle
2017-01-21 19:48:02 +07:00
Sergey Lipskiy
e34ebdc543
Remove obsolete constants for texture indices.
...
Use values from Parameters.h
2017-01-18 22:44:35 +07:00
Sergey Lipskiy
e83c3489a3
Replace OGLVideo by DisplayWindow
...
Replace OGLRender by GraphicsDrawer
2017-01-16 20:56:11 +07:00
Sergey Lipskiy
dd57479838
Add Drawer class to replace OGLRender WIP
2017-01-10 22:22:32 +07:00
Sergey Lipskiy
43e8aef6ea
Remove old-style code.
2017-01-09 11:21:06 +07:00
Sergey Lipskiy
c39b639d7c
Remove unused shaders related files.
2017-01-08 20:31:38 +07:00
Sergey Lipskiy
dcf1065957
Add textureIndices parameters
2017-01-08 17:49:47 +07:00
Sergey Lipskiy
cf5e9d8ed2
BufferManipulationObjects WIP
2017-01-02 21:00:49 +07:00
Sergey Lipskiy
3eb11aac82
setTextureParameters WIP
2017-01-01 21:59:54 +07:00
Sergey Lipskiy
eb7b640aa0
Use InitTextureParams struct instead of separate parameters.
2016-12-31 19:30:22 +07:00
Sergey Lipskiy
2a1a2d5c00
Implement Init2DTexture objects
2016-12-31 19:30:13 +07:00
Sergey Lipskiy
365b116c57
Start Graphics content implementation. First step: init , destroy , createTexture, deleteTexture
2016-12-31 19:30:05 +07:00
Sergey Lipskiy
91f015846c
Fix bug in TextureCache::update
...
Fixed textures in Supercross 2000.
2016-11-29 22:39:59 +07:00
Logan McNaughton
ad77e3db52
Remove some GLES3_1 ifdefs
2016-11-22 12:59:15 +07:00
Sergey Lipskiy
3b9f3a4263
Correct asserts in Textures.cpp
...
Previus conditions not met when texture pack is used.
2016-11-20 11:09:18 +07:00
Sergey Lipskiy
be6179cbcc
Revert 263ddf4
because it does not work properly on old PC cards.
2016-11-14 20:45:32 +07:00
Sergey Lipskiy
263ddf4baa
Use glTexStorage2DMultisample instead of glTexImage2DMultisample for OpenGL.
...
The same code with GLES3X.
2016-11-13 11:42:14 +07:00
Francisco Zurita
a48e1e37ca
Add support for LOD with GLES2
2016-11-07 16:22:58 +07:00
Sergey Lipskiy
354327b3f9
Correct checksum calculation for CI textures.
...
Fixed Mischief Makers incorrect textures #1175
2016-10-15 12:52:34 +07:00
Sergey Lipskiy
fc8c65f81b
Code cleanup: remove unused CachedTexture::lastDList
2016-10-05 15:28:36 +07:00
orbea
f7576185cc
Fix Texture Cache slow down and crashes
2016-09-15 15:44:55 -07:00
Sergey Lipskiy
feb446c3f8
Fix checksum calculation for mip-mapped textures.
2016-07-13 17:14:29 +06:00
Sergey Lipskiy
0ffaf66de0
Minor _calculateCRC optimization.
2016-07-12 15:46:07 +06:00
Sergey Lipskiy
d1749518ca
Add tile format and size to texture checksum calculation.
2016-07-11 21:50:37 +06:00
Sergey Lipskiy
803eb1d381
Clear cache if its size is too large.
2016-07-03 00:10:01 +06:00
Sergey Lipskiy
006218c708
Optimize TextureCache::_clear()
2016-07-03 00:09:58 +06:00
Sergey Lipskiy
5efd89ccd2
Fix input texture checksum calculation.
2016-07-03 00:09:26 +06:00
Sergey Lipskiy
2fbee3661f
Move TextureFilterHandler class to separate files.
2016-06-10 17:58:47 +06:00
Sergey Lipskiy
86fbea9edc
Code refactor: replace NULL by nullptr.
2016-06-10 12:40:18 +06:00
Logan McNaughton
8c632ca0ad
Fix Texture Cache on Raspberry Pi
...
The Raspberry Pi only supports 32768 GPU memory allocations
see https://github.com/raspberrypi/firmware/issues/611
Each texture takes 2 allocs, so the max is around 16000, I've set it to 15000 to be safe
2016-06-08 20:10:14 +06:00
Sergey Lipskiy
27a7540130
Add bHDTexture flag to CachedTexture structure.
2016-06-03 10:44:23 +06:00
Sergey Lipskiy
d337f0a316
Correct texture select when texture LOD is enabled but combiner does not use LOD.
...
Fixed tunel lamps in Top Gear Rally, #981
2016-05-10 21:44:03 +06:00
Sergey Lipskiy
ccff245f85
Implement render to depth buffer.
...
Fixed shadows in Pilot Wings.
Removed special texrect for NFL Quaterback 98 monitor: it is now supported by general code
2016-05-08 17:25:22 +06:00
Sergey Lipskiy
8f5a6b74b4
Fix mip-mapping for texture level 0.
...
Fixed World Cup 98: wrong ground (mip mapping or lod?) (regression) #858
2016-05-04 20:51:05 +06:00
Sergey Lipskiy
2649af3be3
Revert commit ebfd9b3... Enable texture mirror if real_size / size == 2
...
Fixed Pokemon Snap textures are upside down #859
2016-05-03 18:00:08 +06:00
Sergey Lipskiy
6e0d0432a7
Implement depth texture load for nfl quaterback 98
...
Fixed nfl quaterback 98: missing fb effect (whatever option used) #316
2016-04-09 21:07:55 +06:00
Sergey Lipskiy
bbf8ad91e6
Don't skip texture filter when texture dump is on.
2016-04-08 12:03:22 +06:00
Sergey Lipskiy
cc5dc009d8
Use current TLUT mode in texture CRC.
...
Hopefully fixed quake 2: wrong colors on corpses #328
2016-03-23 21:14:21 +06:00
Sergey Lipskiy
d8f8f587cf
Fix texture clamp size calculation during texture load.
...
Fixed Knife Edge: wrong texts #846
Warning: texture load changed, regressions possible.
2016-03-22 20:51:00 +06:00
matto
7fb2ad2d5b
Fixing what is almost certainly a memory leak
2016-03-07 12:58:49 +06:00