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

205 Commits

Author SHA1 Message Date
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
Sergey Lipskiy
562612a21a Texture load status is now set per tile. 2015-05-13 10:09:47 +06:00
Sergey Lipskiy
5092cf5891 Code cleanup: Remove duplicated code in FrameBuffer_ActivateBufferTexture(). 2015-05-13 10:09:43 +06:00
Sergey Lipskiy
ad9e3d3bee Correct texture buffer shift in loadblock mode. 2015-05-13 10:09:42 +06:00
Sergey Lipskiy
aec5094967 Add support for 8bit frame buffers.
Fixed dynamic shadow in Banjo-Tooie
2015-05-13 10:09:41 +06:00
Sergey Lipskiy
3f98553ad2 Correct background images usage in frame buffer emulation. 2015-05-13 10:09:39 +06:00
Sergey Lipskiy
58728b954c Optimize FrameBuffer_SaveBuffer code. 2015-05-13 10:09:37 +06:00
Sergey Lipskiy
880238250b Fix depth buffer initialization and clean. 2015-05-13 10:09:36 +06:00
Sergey Lipskiy
797dfad57e Frame buffer related fixes. Zelda OOT pause screen works! 2015-05-13 10:09:34 +06:00
Sergey Lipskiy
3d2083d6a4 New implementation of FrameBuffer_RenderBuffer,
via glBlitFramebuffer.
2015-05-13 10:09:34 +06:00
Sergey Lipskiy
a07555546e Frame buffer fixes 2015-05-13 10:09:33 +06:00
Sergey Lipskiy
97f07e38c3 Fix some type mismatch errors. 2015-05-13 10:09:25 +06:00
Sergey Lipskiy
69f27a5d8a Initial project version. Based on glN64-0.4.1-rc2 2015-05-13 10:09:12 +06:00