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

129 Commits

Author SHA1 Message Date
Sergey Lipskiy
45d9d63564 Implement frame buffer subimage copy.
When N64 game needs to apply frame buffer texture to a polygon, it
copies part of frame buffer data to texture memory. The plugin
does not copy frame buffer texture, since frame buffer texture already in video memory
and thus can be used directly.
However, sometimes polygons with frame buffer texture use texture coordinates wrap.
Wrap can't be done correct when whole frame buffer texture is used.
Thus, frame buffer subimage copy is implemented. Part of texture copied to
a new texture, which can be correctly wrapped.

Fixed PD cloacking effect, #839
2016-05-08 15:58:19 +06:00
Sergey Lipskiy
ef5af03aaa Code refactor: replace
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBufferList().getCurrent()->m_FBO)
by
  frameBufferList().setCurrentDrawBuffer()
2016-05-08 13:35:17 +06:00
Sergey Lipskiy
8a9ec948d7 Minor code refactor and cleanup in FrameBuffer_ActivateBufferTexture. 2016-05-07 23:23:14 +06:00
Sergey Lipskiy
298b22a9dc Fix frame buffer texture offsetS for LOADTYPE_TILE.
Fixed Banjo-Tooie Framebuffer not working properly #651
2016-05-07 23:21:42 +06:00
Sergey Lipskiy
2054d9d689 Fix FrameBuffer::copyRdram(): fingerprint size must be not less than 4.
Fixed validity check for PD cloacking effect, #839
2016-05-07 23:20:10 +06:00
Sergey Lipskiy
0e24e6d1e8 Fix post-processing with GLES2 2016-05-05 16:40:16 +06:00
Sergey Lipskiy
0ad53ad0e8 Rewrite blending emulation:
- remove hardcoded mapping of N64 blend modes to GL blending
- add blending stage(s) to pixel shaders.
2016-05-05 16:38:59 +06:00
Sergey Lipskiy
f5310c4ba7 OGLRender::drawTexturedRect : call _updateStates only for texrect command. 2016-05-05 16:29:31 +06:00
Sergey Lipskiy
92beef8b35 Correct FrameBufferToRDRAM::_prepareCopy
Fixed banjo kazoiie: puzzle in intro doesn't work anymore (regression) #966
2016-04-23 18:29:29 +06:00
Sergey Lipskiy
bc80ff446a Code refactor: add TexturedRectParams::texrectCmd parameter
to distinguish calls to OGLRender::drawTexturedRect from texrect commands
and from other places.
2016-04-14 13:41:38 +06:00
Francisco Zurita
1611e8dd61 fix zelda subscreen crash 2016-04-12 07:39:00 -04:00
Sergey Lipskiy
b75d661b04 Fix FrameBufferToRDRAM::_prepareCopy: do not copy more than one buffer per frame.
Fixed ogre battle 64: wrong background jpeg (regression) #957
2016-04-10 20:16:49 +06:00
Sergey Lipskiy
4484bb5623 Correct texture coordinates calculation in OGLRender::drawTexturedRect :
add dsdx/dtdy instead of 1.0f

Fixed issues #27, #128, #209
2016-04-09 10:56:15 +06:00
Sergey Lipskiy
427806ac23 Rewrite PostProcessor: do not modify original buffer, use special frame buffer instead.
Fixed dual heroes: incorrect colors in menu #926
2016-04-02 18:56:07 +06:00
Sergey Lipskiy
046493e7d3 Revert "remove Lego racers hack"
This reverts commit ca6d6c720f.

Fixed lego racers: map doesn't appear anymore (regression) #935
2016-04-02 14:16:50 +06:00
Sergey Lipskiy
d69f722539 Fix Mario Tennis scoreboard. 2016-04-02 12:53:06 +06:00
Sergey Lipskiy
a4e5d58459 Fix scissor for post-processor.
Fixed buck bumble: bars on top and bottom of the screen (regression) #919
2016-03-31 17:52:01 +06:00
Sergey Lipskiy
f3677db0a7 Fix copy to RDRAM for native resolution factors above 1.
Fixed Broken monitor in MK64 #929
2016-03-24 17:50:51 +06:00
Sergey Lipskiy
3cfb377155 Fixed scissor in FrameBufferList::renderBuffer when AA enabled.
Fixed cut image in fullscreen mode with AA enabled in some games, e.g Mario Party 3
2016-03-19 20:36:56 +06:00
Sergey Lipskiy
ea62a778fa Force resolve multisampled buffer in FrameBufferList::renderBuffer.
Fixed Mario Party 3 - Missing characters and textbox in intro #901
2016-03-19 20:36:54 +06:00
Sergey Lipskiy
05466632af Correct main bufer height calculation again:
fix regression caused by commit 3215a8ad5d

Fixed regression issue #902
2016-03-19 19:21:05 +06:00
Sergey Lipskiy
444aa8320a Fix depth buffer copy for Perfect Dark. 2016-03-13 17:05:25 +06:00
Sergey Lipskiy
ede0a046c2 Fix DepthBufferToRDRAM::_prepareCopy for Native Resolution mode.
Fixed issue #888.
2016-03-13 17:02:10 +06:00
Sergey Lipskiy
a2c39afc19 Fixed crash in RDRAMtoFrameBuffer::CopyFromRDRAM in GLES2 mode. 2016-03-12 20:39:54 +06:00
Sergey Lipskiy
c504b9b216 Correct depth buffer removal:
if depth buffer removed, clear pointers on it for all frame buffers.
2016-03-06 21:12:23 +06:00
Sergey Lipskiy
d9d6d4530a FrameBuffer::init - clear buffer texture after allocation.
Fixed garbage on screen in some games on Linix, e.g. Tsumi To Batsu.
2016-03-04 10:58:52 +06:00
Sergey Lipskiy
235530cec8 Fix out of range read/write in _copyPixelsFromRdram when address in input array is outside of current frame buffer. 2016-03-01 16:49:54 +06:00
Sergey Lipskiy
3215a8ad5d Correct main bufer height calculation.
Fixed flicker in Bomberman Hero (E) , issue #305
2016-02-28 17:45:53 +06:00
Sergey Lipskiy
54d486371a Add "UseNativeResolutionFactor" option. 2016-02-27 12:43:20 +06:00
Sergey Lipskiy
f06b2d823a Code rafactor to fix compilation errors with mupen64plus build. 2016-02-27 11:58:56 +06:00
Sergey Lipskiy
c4b0e9999e Fix copy from RDRAM in widescreen mode. 2016-02-27 10:52:12 +06:00
Sergey Lipskiy
2a01d47df4 Fix copy to RDRAM in widescreen mode. 2016-02-27 10:52:11 +06:00
Sergey Lipskiy
8b3d53f4e5 Pass destination frame buffer to OGLRender::drawTexturedRect.
Fixed RDRAMtoFrameBuffer::CopyFromRDRAM, when FBWrite writes to a buffer,
which is not current displayed buffer.
Example: JFG crosshair.
2016-02-27 10:52:10 +06:00
Sergey Lipskiy
e8d76d21f0 Minor code cleanup: add RDRAMtoFrameBuffer::Reset() 2016-02-27 10:52:10 +06:00
Sergey Lipskiy
dca42610a8 Add FBInfo::isSupported() to know that emulator provides FBInfo support.
Correct frame buffer write detection hack (idea by purplemarshmallow).
2016-02-27 10:52:07 +06:00
Sergey Lipskiy
ce7526eaf5 Rewrite RDRAMtoFrameBuffer::CopyFromRDRAM:
copy from RDRAM only those pixels, which were provided with FBWrite.
2016-02-27 10:52:07 +06:00
Sergey Lipskiy
dcf32d0c5d Fix issues with FrameBufferToRDRAM::copyToRDRAM 2016-02-27 10:52:06 +06:00
Sergey Lipskiy
e62ce067e8 Fix FrameBufferToRDRAM::copyToRDRAM : pass correct end_address to _copy 2016-02-27 10:52:05 +06:00
Sergey Lipskiy
52dac34b98 Fix _cutHeight. 2016-02-27 10:52:05 +06:00
Sergey Lipskiy
8202638a7a Correct FrameBufferList::fillBufferInfo - do not add depth buffer. 2016-02-27 10:52:04 +06:00
Sergey Lipskiy
1ec14d0f8b Rename ShaderCombiner::updateFBInfo to ShaderCombiner::updateFrameBufferInfo 2016-02-27 10:52:03 +06:00
Sergey Lipskiy
857ae8a360 FBWrite draft implementation. 2016-02-27 10:52:02 +06:00
Sergey Lipskiy
646a88139c Fixing FBInfo build on gcc (5.2.1)
There was a conflict between signed and unsigned types to std::min.
Explicitly setting the literal as unsigned keeps all math as unsigned,
which I think is the best case here (assuming that 1 + y0 - y1 will never
be negative).
Also adding std:: prefix to make it clearer where these functions come from.
2016-02-27 10:52:02 +06:00
Sergey Lipskiy
148349a00a Fix FrameBufferToRDRAM::_prepareCopy
Wrong buffer could be used when several buffers copied per frame
2016-02-27 10:52:01 +06:00
Sergey Lipskiy
0b12d3b26e Correct height calculation on buffer copy. 2016-02-27 10:52:00 +06:00
Sergey Lipskiy
dde54b238f Fix mistakes in buffer copy. 2016-02-27 10:52:00 +06:00
Sergey Lipskiy
53e638bf47 Increase _numPixels if chunkStart is not even. 2016-02-27 10:51:59 +06:00
Sergey Lipskiy
1e376d641b Fix usage of FrameBufferToRDRAM::m_frameCount 2016-02-27 10:51:59 +06:00
Sergey Lipskiy
b9ee15bfb6 FrameBufferInfo API extension. Initial dummy implementation. 2016-02-27 10:51:56 +06:00
Sergey Lipskiy
5d8ea5dda1 Implement partial buffer copy. 2016-02-27 10:51:56 +06:00