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

162 Commits

Author SHA1 Message Date
Sergey Lipskiy
bc1a5a1f1f Fix frame buffer allocation again.
Check for all possible intersections of frame buffers address space,
remove all buffers, intersected with the new one.
2015-05-13 10:14:18 +06:00
Sergey Lipskiy
ea713f8e0c Remove assync depth copy functionality.
It is important to copy current depth buffer to RDRAM.
Otherwise coronas in PD does not work when in movement.
2015-05-13 10:14:12 +06:00
Sergey Lipskiy
a3d702a4dd Fix detection of frame buffers address space intersection.
Fixed problem of growing frame buffers number.
2015-05-13 10:14:11 +06:00
Sergey Lipskiy
efdfa31eda Make FrameBuffer_CopyDepthBuffer() return bool. 2015-05-13 10:14:09 +06:00
Sergey Lipskiy
c3a8148d0e Fix DepthBufferToRDRAM::CopyToRDRAM - limit max value by 0xfffc. 2015-05-13 10:14:08 +06:00
Sergey Lipskiy
39cbd870ff Add check for NULL pointers in FrameBuffer_ActivateBufferTexture. 2015-05-13 10:14:07 +06:00
Sergey Lipskiy
a6a8d810fb Fix CopyToRDRAM.
Need to set scissor off before using glBlitFramebuffer.
2015-05-13 10:14:05 +06:00
Sergey Lipskiy
7835cfb180 Fix color image height detection for height = 1. 2015-05-13 10:14:02 +06:00
Sergey Lipskiy
3a27056759 Don't write buffer address to RDRAM for CFB buffers. 2015-05-13 10:14:01 +06:00
Sergey Lipskiy
09eea95270 Add separate define for ImageTextures.
Set it on for platforms, which support this functionality.
2015-05-13 10:13:55 +06:00
Sergey Lipskiy
94c381f734 Fix code duplication in FrameBuffer.cpp 2015-05-13 10:13:54 +06:00
Sergey Lipskiy
72ce00157b Code cleanup: Fix class members initialization order in ctors. 2015-05-13 10:13:54 +06:00
Sergey Lipskiy
17479ccbe4 Rewrite FrameBufferList::renderBuffer
Use new method for destination coordinates calculation.
2015-05-13 10:13:47 +06:00
Sergey Lipskiy
0d35f461df Fix integer-float mismatch in FrameBuffer.cpp 2015-05-13 10:13:46 +06:00
Sergey Lipskiy
b31b4cc3f6 Correct renderBuffer usage in FrameBuffer_ActivateBufferTexture. 2015-05-13 10:13:34 +06:00
Sergey Lipskiy
f637e91f22 Replace _SHIFTR( *REG.VI_H_START, 0, 10 ) == 0 check by VI.width == 0 one
Fixed glError in Knockout Kings 2000. The game sets h_start==h_end at start,
thus VI.width is zero but *REG.VI_H_START is not.
2015-05-13 10:13:32 +06:00
Sergey Lipskiy
e21f455686 Don't call glBindImageTexture if it is not supported. 2015-05-13 10:13:28 +06:00
Sergey Lipskiy
768430a234 Implement screen aspect ratio support. 2015-05-13 10:13:26 +06:00
Sergey Lipskiy
6bf0302f19 Fix errors found by code analizer. 2015-05-13 10:13:19 +06:00
Sergey Lipskiy
7548922cfd Add CombinerInfo::update().
Call it in FrameBufferList::attachDepthBuffer() before currentCombiner()->updateDepthInfo
to avoid glError caused by wrong shader program set.

Fixed glError with MarioTennis character selection.
2015-05-13 10:13:18 +06:00
Sergey Lipskiy
805cef4225 Correct isLowerField calculation in FrameBufferList::renderBuffer.
It did not work correct for Donkey Kong (E).
2015-05-13 10:13:14 +06:00
Sergey Lipskiy
2454f70568 Don't call gDPFillRDRAM for frame buffers created in VI_UpdateScreen(),
because VI_ORIGIN is not correct address of frame buffer start.
2015-05-13 10:13:12 +06:00
Sergey Lipskiy
5eac0797f0 Remove VI emulation code, which can't be tested for now.
Star Wars Ep. 1 Racer (E) is fixed.
2015-05-13 10:13:11 +06:00
Sergey Lipskiy
8733c2b3e7 Set m_drawBuffer = GL_BACK in FrameBufferList::destroy().
Fixed crash on rom reset.
2015-05-13 10:13:10 +06:00
Sergey Lipskiy
d121144760 Disable frame buffer activiti when H width is zero. 2015-05-13 10:13:08 +06:00
Sergey Lipskiy
de5c0120ed Fix FrameBufferList::renderBuffer for interlaced modes. 2015-05-13 10:13:08 +06:00
Sergey Lipskiy
5ac57395e9 Fix FrameBufferList::renderBuffer compilation errors. 2015-05-13 10:13:07 +06:00
Sergey Lipskiy
4499a6f966 Fix *BufferToRDRAM destroy().
Fixed run 4mb games after 8mb ones.
2015-05-13 10:13:04 +06:00
Sergey Lipskiy
86cde946e9 Refactor: replace C style OGL_* functions by OGLRender and OGLVideo classes.
OGLRender performs rendering operations.

OGLVideo initializes OpenGL and performes operations with graphics context.
It has platform-dependent implementations.
2015-05-13 10:13:00 +06:00
Sergey Lipskiy
8719d245a4 Fix frame buffer endAddress calculation. 2015-05-13 10:12:58 +06:00
Sergey Lipskiy
604d290fec Fix FrameBufferList::attachDepthBuffer() :
fixed GL_INVALID_ENUM error in glDrawBuffers call.
2015-05-13 10:12:54 +06:00
Sergey Lipskiy
f6ebb311a1 Massive refactoring: move API or OS dependent code to separate files.
Include/enable necessary source files in project files.
2015-05-13 10:12:51 +06:00
Sergey Lipskiy
3352193632 Depth buffer refactor 2015-05-13 10:12:48 +06:00
Sergey Lipskiy
fbf660d4ec Refactor: Make DepthBufferList singleton. 2015-05-13 10:12:48 +06:00
Sergey Lipskiy
d7f4e44674 Frame buffer refactor.
Use std::list as container for frame buffers.
2015-05-13 10:12:46 +06:00
Sergey Lipskiy
bd8b73d5b5 Refactor: Make frame buffer singleton 2015-05-13 10:12:45 +06:00
Sergey Lipskiy
7f6d7e2772 Refactor: rewrite TextureCache.
Store normal textures and frame buffer textures in separate maps.
Replace TextureCache_* functions by methods of TextureCache.
2015-05-13 10:12:44 +06:00
Sergey Lipskiy
23f7f24d35 Refactor: replace CombinerInfo::get().getCurrent() by inline function currentCombiner() 2015-05-13 10:12:39 +06:00
Sergey Lipskiy
0f176dcc4c Refactor: rename ShaderCombiner methods - name starts from lower case letter. 2015-05-13 10:12:37 +06:00
Sergey Lipskiy
7b3423d7de Code cleanup: fix idents for FrameBuffer.cpp 2015-05-13 10:12:35 +06:00
Sergey Lipskiy
2e5ad21ddd Refactor: remove combiner update methods from CombinerInfo and call them
directly for ShaderCombiner object.
2015-05-13 10:12:34 +06:00
Sergey Lipskiy
709f631cbf Refactor: Make Combiner_* functions as members of CombinerInfo. 2015-05-13 10:12:32 +06:00
Sergey Lipskiy
92eb61572e Fix scissor related problems:
- scissor dissable/enable in FrameBuffer_RenderBuffer()
- scissor height in OGL_UpdateStates()
2015-05-13 10:12:20 +06:00
Sergey Lipskiy
a3f9fe2186 Disable scissor in FrameBuffer_RenderBuffer(). 2015-05-13 10:12:09 +06:00
Sergey Lipskiy
e784ea7205 GLES2 fixes in frame/depth buffer initialization. 2015-05-13 10:12:05 +06:00
Sergey Lipskiy
898a189f89 Fixed Combiner_UpdateCombineFBInfo() call. 2015-05-13 10:12:03 +06:00
Sergey Lipskiy
7166d0aacf Fix hardware lighting. 2015-05-13 10:11:41 +06:00
Sergey Lipskiy
3d9e48230a Fix FrameBuffer_RenderBuffer for GLES2. 2015-05-13 10:11:39 +06:00
Sergey Lipskiy
caf4353295 Guard GLES2 incompatible code in FrameBuffer.cpp and gSP.cpp 2015-05-13 10:11:39 +06:00
Sergey Lipskiy
889b889847 Replace GL_DRAW_FRAMEBUFFER by GL_FRAMEBUFFER in GLES2 compatible code. 2015-05-13 10:11:38 +06:00
Sergey Lipskiy
90f8e4c2f3 Remove glDisable( GL_FOG ). 2015-05-13 10:11:37 +06:00
Sergey Lipskiy
6219ee02bf Rewrite RDRAMtoFrameBuffer::CopyFromRDRAM
Use OGL_DrawTexturedRect to render the texture.
2015-05-13 10:11:37 +06:00
Sergey Lipskiy
2b0d6e8f1d Make FrameBuffer_AttachDepthBuffer() GLES2 compatible. 2015-05-13 10:11:35 +06:00
Sergey Lipskiy
f00ca5f0a1 Replace glFramebufferTexture by GLES2 compatible glFramebufferTexture2D. 2015-05-13 10:11:35 +06:00
Sergey Lipskiy
ee57f6ef47 Move frame buffer emulation options to Config. 2015-05-13 10:11:30 +06:00
Sergey Lipskiy
8018ba0aea Move user-defined settings to Config structure. 2015-05-13 10:11:27 +06:00
Sergey Lipskiy
2708b2abeb Remove FrameBufferExt functions usage. 2015-05-13 10:11:21 +06:00
Sergey Lipskiy
6bac605fe2 Make frame buffer GLES2 compatible. 2015-05-13 10:11:20 +06:00
Sergey Lipskiy
b2a260a055 Set READ_FRAMEBUFFER back to zero after CopyToRDRAM.
Fixed OGL_ReadScreen with CopyToRDRAM enabled.
2015-05-13 10:11:13 +06:00
Sergey Lipskiy
cc3446c4d6 BindImageTexture fixes 2015-05-13 10:11:09 +06:00
Sergey Lipskiy
344df93374 Rewrite depth texture clear. 2015-05-13 10:11:07 +06:00
Sergey Lipskiy
314b9098f4 Implement N64 depth compare.
Removed integer-based variant of depth texture.
2015-05-13 10:11:06 +06:00
Sergey Lipskiy
7f49dd39c2 Replace frameBuffer.drawBuffer from GL_DRAW_FRAMEBUFFER
to gles compatible GL_FRAMEBUFFER
2015-05-13 10:11:03 +06:00
Sergey Lipskiy
73890d4354 (R): Remove unused includes from FrameBuffer.cpp 2015-05-13 10:10:54 +06:00
Sergey Lipskiy
3b06773f43 (R): Rewrite OGL_SwapBuffers() and use it for all platforms. 2015-05-13 10:10:53 +06:00
Sergey Lipskiy
32892a2236 Fix #include dependences. 2015-05-13 10:10:47 +06:00
Sergey Lipskiy
0a1499caed Fix compilation errors when MUPENPLUSAPI enabled 2015-05-13 10:10:43 +06:00
Sergey Lipskiy
fd3fe0b7b7 Fix DepthBufferToRDRAM::CopyToRDRAM :
return if depth buffer is null
2015-05-13 10:10:41 +06:00
Sergey Lipskiy
4635e24d62 Add g_bIgnoreCFB option.
It is necessary for Zelda Pause Screen, otherwise it will be
replaced by blank data from RDRAM.
2015-05-13 10:10:40 +06:00
Sergey Lipskiy
da3d18d7d8 Fix frame buffer textures delete. 2015-05-13 10:10:38 +06:00
Sergey Lipskiy
d4953abb91 Fix depth beffer rendering.
Corrected bug with Z calculation in depth_compare_shader.
2015-05-13 10:10:37 +06:00
Sergey Lipskiy
9b8b667fab Implement CopyDepthBuffer to RDRAM. 2015-05-13 10:10:36 +06:00
Sergey Lipskiy
00c12e2d1d Add FBO for depth buffer. 2015-05-13 10:10:36 +06:00
Sergey Lipskiy
8e3e41356a FrameBuffer: Replace pointer to depth texture by pointer to DepthBuffer 2015-05-13 10:10:35 +06:00
Sergey Lipskiy
e9b5283339 Correct calls for Combiner_UpdateCombineDepthInfo()
+ cosmetic formatting.
2015-05-13 10:10:34 +06:00
Sergey Lipskiy
dfb8b0f04b Remove legacy combiners. 2015-05-13 10:10:32 +06:00
Sergey Lipskiy
14f5a92da3 Switch from glActiveTextureARB to glActiveTexture 2015-05-13 10:10:31 +06:00
Sergey Lipskiy
f151ef36ca Add shadow map shader 2015-05-13 10:10:28 +06:00
Sergey Lipskiy
898a81ecde Add possibility to switch between float and int depth texture formats 2015-05-13 10:10:26 +06:00
Sergey Lipskiy
9c508f1a9b Change to float format of depth texture 2015-05-13 10:10:25 +06:00
Sergey Lipskiy
c47ab51175 Add depth compare shader to the main program. 2015-05-13 10:10:25 +06:00
Sergey Lipskiy
01073f40b0 Add depth texture to depth buffer. 2015-05-13 10:10:20 +06:00
Sergey Lipskiy
55a14d42f0 Fix RDRAMtoFrameBuffer::CopyFromRDRAM - make it working with buffer of any size.
Mario Tennis scoreboard hack is now uses CopyFromRDRAM, so
FrameBufferToRDRAM::CopyAuxBufferToRDRAM became unused and thus removed.
2015-05-13 10:10:17 +06:00
Sergey Lipskiy
02c1884382 Fix pointer compare in FrameBufferToRDRAM::CopyAuxBufferToRDRAM 2015-05-13 10:10:14 +06:00
Sergey Lipskiy
26ab545b8a Fix FrameBuffer_RenderBuffer to work on Linux. 2015-05-13 10:10:13 +06:00
Sergey Lipskiy
5cedc0e6e7 Implement VI emulation: treat main frame buffer as TV screen and render
FBO buffers on it according to VI registers values.
2015-05-13 10:10:11 +06:00
Sergey Lipskiy
62e3f2404e Copy whole frame buffer to RDRAM, without offset. 2015-05-13 10:10:09 +06:00
Sergey Lipskiy
fb0ba864d1 Force CFB mode if current frame is shown more than 4 times in succession (<15 fps) 2015-05-13 10:10:08 +06:00
Sergey Lipskiy
a7b5127743 FrameBufferToRDRAM cosmetic changes 2015-05-13 10:10:06 +06:00
Sergey Lipskiy
5f57aa5c48 Implement copy RDRAM to frame buffer. 2015-05-13 10:10:05 +06:00
Sergey Lipskiy
35ab89d379 Fix bug in FrameBuffer_SaveBuffer:
don't use removed buffer
2015-05-13 10:10:05 +06:00
Sergey Lipskiy
31d236f59b Rewrite FrameBuffer_CopyToRDRAM.
Use Pixel Buffer Object for async read from video memory.
2015-05-13 10:10:04 +06:00
Sergey Lipskiy
ca99c49bc7 Remove duplicated code from FrameBuffer functions. 2015-05-13 10:10:03 +06:00
Sergey Lipskiy
72e7d41673 Remove unused function FrameBuffer_RestoreBuffer() 2015-05-13 10:10:02 +06:00
Sergey Lipskiy
bd51edec41 Temporal hackish solution for scoreboard problem in Mario Tennis:
copy aux frame buffer content to RDRAM and delete the buffer.

Need to implement proper solution.
2015-05-13 10:10:01 +06:00
Sergey Lipskiy
efee40c2c7 Implement copy texture frame buffer to RDRAM. 2015-05-13 10:09:59 +06:00
Sergey Lipskiy
971bd9d0ec Frame buffer fixes for Mario Tennis.
Implemented various methods for testing buffer validity.
2015-05-13 10:09:58 +06:00
Sergey Lipskiy
1e4870e6b9 Change way of color buffer address range calculation:
on buffers swap use actual color image height to re-calculate end address.
2015-05-13 10:09:53 +06:00
Sergey Lipskiy
1341f7bf15 Frame buffer emulation fixes:
save pointer to the load tile in the frame buffer.

Game: Mario Tennis
2015-05-13 10:09:52 +06:00
Sergey Lipskiy
7418f76968 Frame buffer emulation fixes:
clear color buffer when size is changed but address is the same.
2015-05-13 10:09:52 +06:00