Commit Graph

315 Commits

Author SHA1 Message Date
Flyinghead 3ddcc272bf Fix autosort/presort mode selection. Per render pass sort mode.
The previous algorithm to determine the sort mode for TR polys was
faulty. And the sort mode can vary between passes for multipass
rendering. This also removes the need for the hack to support Always
depth mode with autosorted TR polys. Should fix the Resident Evil 3 menu
problem.
2018-06-30 12:33:11 +02:00
Flyinghead 7ecd384612 StrideSel is now part of the texture cache and must be set by RTT 2018-06-29 19:03:43 +02:00
Flyinghead f18aa63a67 Add stride and scan order to texture cache key as they are used to update the texture
Fixes glitchy FMV title screen in Bomberman Online
2018-06-29 11:59:48 +02:00
Flyinghead a94f01ee78 Force autosort TR triangles using depth func Always to be drawn on top of others
When autosorting triangles, ignore the depth of triangles using the depth func Always and force
them to be on top. Seems to help Psyvariar 2.
2018-06-28 13:21:40 +02:00
Flyinghead 6871061ca0 Modifier Volumes: summing up with triangles is faster than using a quad. 2018-06-26 15:38:55 +02:00
Flyinghead 7c93727b5e Improve modifier volume parsing and drawing logic.
Parse modifier volumes similarily to other polys (first, count, params).
Draw all triangles in one shot and use quad to sum up instead of
redrawing entire strip. Use OR operation for open volumes/quads
(Soulcalibur).
2018-06-26 14:45:58 +02:00
Flyinghead 846d02d9d2 Optimize RTT to VRAM. Add US version of THPS2 to per-game settings. 2018-06-25 16:55:22 +02:00
Flyinghead 3256e02813 Workaround for Virtua Tennis ball color problem.
There's a texture corruption of the tennis ball and other textures,
notably the players' bags in the first intro sequence. The corruption is
due to render to texture squashing existing textures. Not sure what's
going on but this avoids the texture corruption. The original problem
remains.
2018-06-25 15:53:28 +02:00
Flyinghead 08b8d30589 Implement clipping. Enabled by default. 2018-06-09 18:11:47 +02:00
Flyinghead 7640a35720 Draw modifier volumes only if enabled in settings (defaults to true) 2018-06-09 17:22:01 +02:00
Flyinghead 2fdcf0d821 Use float constants in GLSL 2018-06-07 18:26:02 +02:00
Flyinghead b9fe9332cf GLES 2 fix for fog table: use float only for vars and consts 2018-06-05 13:36:49 +02:00
Flyinghead 828990b926 Texture based fog table 2018-06-05 12:18:09 +02:00
Flyinghead a345fcc4c7 Draw modifier volumes after punch-through so they can be shadowed as
well.
2018-05-23 14:31:11 +02:00
Flyinghead 2f9dcfabd8 Use FPU_SHAD_SCALE.scale_factor for shadow intensity instead of
hardcoded value.
2018-05-23 12:26:24 +02:00
Flyinghead bccfb5b70c Faster implementation for translucent polys depth pass. Disabled by
default. Auto-enabled for Cosmic Smash.
2018-05-22 15:47:02 +02:00
Flyinghead 23a2af0a28 Add setting for THPS2. Move RenderToTextureBuffer option to rend
section.
2018-05-22 15:34:33 +02:00
Flyinghead 4c7ffeb520 Per-pixel fog shading. Shaders cleanup. 2018-05-22 13:04:21 +02:00
Flyinghead 8d01bbe145 Increase Z scaling factor to 100k (fixes background menu in VR2). Set
depth mask before clearing buffers.
2018-05-21 16:44:18 +02:00
Flyinghead 9098fd5a22 Autosort poly: Write to the depth buffer in a second pass, and only if
multipass rendering.
2018-05-20 21:41:31 +02:00
Flyinghead 2d904372a9 Multipass issues: depth mask must be enabled for autosorted tr poly.
Depth buffer must NOT be cleared b/w passes, same for stencil I guess.
2018-05-20 14:16:43 +02:00
Flyinghead c35aa4262c Fix OpenGL errors with modvols and multipass 2018-05-19 18:51:30 +02:00
Flyinghead c427997269 Enable modifier volumes. Fix for exclusion volumes. Prevent overflow of modifier triangles (JGR). 2018-05-19 10:13:00 +02:00
Flyinghead d596f988c8 Revert 99bc20220e 2018-05-17 11:17:51 +02:00
Flyinghead 99bc20220e Simplify clipping 2018-05-17 10:32:52 +02:00
Flyinghead 80c193b3de Cache texture parameters. Fixed exclusion volume modifiers. 2018-05-16 19:34:45 +02:00
Flyinghead e73d11d0ab glHint nicest->fastest, and just once 2018-05-15 22:37:40 +02:00
Flyinghead b469f05b9d Fix wrong fog calculation issue 2018-05-15 21:19:58 +02:00
Flyinghead d8165376be GL cache fix 2018-05-15 16:09:50 +02:00
Flyinghead de046c4620 Use OpenGL state cache. Allocate texture ids in bulk. Avoid modifier
volumes entirely when not needed.
2018-05-15 15:22:26 +02:00
Flyinghead 2d834c7396 Revert glChecks 2018-05-15 11:54:14 +02:00
Flyinghead 833a616122 Merge OSX fixes 2018-05-15 11:41:44 +02:00
Flyinghead b30f715796 Fix paletted textures mismatch in texture cache 2018-05-14 16:14:15 +02:00
Flyinghead 699c2986a5 WIP 2018-05-14 12:48:22 +02:00
Flyinghead 46f28cfb27 Fog fix 2018-05-13 23:07:35 +02:00
Flyinghead 95120690ef Use log2 depth scaling when opengl 3 is available 2018-05-13 20:19:36 +02:00
Flyinghead b68f0a16a8 Increase FPS font size 2018-05-13 16:45:20 +02:00
Flyinghead c30548eb6a Added on-screen FPS counter. Fix clear screen issue when widescreen
enabled but not currently on.
2018-05-13 16:01:08 +02:00
Flyinghead 50a2e7e842 Revert dd9f77b4ab0b4c66fe7a2a717ed4b8cc1835e343: no gl_FragDepth in GLES 2 :( 2018-05-12 14:39:06 +02:00
Flyinghead dd9f77b4ab Changed z normalization to log scale 2018-05-12 13:26:50 +02:00
Flyinghead 717ee0b3ce Make rendering to texture buffer optional 2018-05-11 19:33:17 +02:00
Flyinghead 43c125c208 Better texture cache: avoid duplicate. Attempt to put the RTT texture in
the cache to avoid copy to/from vram.
2018-05-11 15:29:24 +02:00
Flyinghead 683cbbba3e Multipass rendering 2018-05-10 21:28:20 +02:00
Flyinghead b77843b927 Handle RTT texture stride (VT) 2018-05-09 15:08:13 +02:00
Flyinghead c13a42611b Implemented other RTT format conversions. 2018-05-09 13:04:48 +02:00
Flyinghead 5710aa08ed Remove all vram locks before reading back RTT buffer. Use RGBA/ubyte
format when RGB/565 is not available.
2018-05-09 12:28:38 +02:00
Flyinghead 2e4ec3a1ed Added RTT support 2018-05-08 18:47:00 +02:00
Flyinghead 9f13ded502 Enable Modifier Volumes. Fix modtrig buffer overflow and stencil reset. 2018-05-04 18:18:04 +02:00
Flyinghead cc88561d4a Implemented clipping (Daytona USA menus) 2018-05-02 15:41:42 +02:00
Flyinghead db0534d5dd Fix PunchThrough texturing on JGR with nvidia 2018-05-02 12:29:47 +02:00
Flyinghead 35d3bd98d4 Disable fog table logging. Small optimization 2018-04-27 10:58:10 +00:00
Nicolas HOUDELOT 5c343a219c fix typo 2018-03-05 01:57:00 +01:00
Stefanos Kornilios Mitsis Poiitidis 3ed70a26fb Merge pull request #914 from ghost/issue-883
Update softrend.cpp
2016-09-12 22:19:39 +02:00
twinaphex ccfb6b635a Delete spurious code - fixes sprite palette issue with games like
Street Fighter III 3rd Strike/Capcom Vs SNk 2, possibly others
2016-05-13 14:37:47 +02:00
pvezien e093f679a8 Update softrend.cpp 2016-04-13 09:20:33 +12:00
Jan Holthuis 52afec6f7d Merge pull request #832 from reicast/holzhaus/sdl-opengl
Move to SDL2 for OpenGL 3.1 and GLES support
2016-03-04 15:13:25 +01:00
Stefanos Kornilios Mitsis Poiitidis 6c3c726019 softrend: Fix windows build 2015-12-14 03:11:40 +01:00
Stefanos Kornilios Mitsis Poiitidis af01baae75 linux/softrend: Optional via makefile, sse4.1 detection 2015-12-14 02:40:23 +01:00
Stefanos Kornilios Mitsis Poiitidis f3e4416bb4 linux/softrend: Cleanup accidental file changes 2015-12-13 14:08:16 +01:00
Stefanos Kornilios Mitsis Poiitidis 62018cf203 linux/softrend: Fix porting bugs, hackplement X11 drawing
- Fix RECT fields oder (initialized via {} on the code)
- Initialize shuffle_alpha (duh ...)
- X11 Image drawing (hacky, depends on internal X11 details)
- Untwidle code w/ optional flipping (X11 doesn't use inverted bitmaps)
- rgba shuffling (not needed yet, but left for documentation)
2015-12-13 14:00:25 +01:00
Stefanos Kornilios Mitsis Poiitidis 5e377399d3 linux/softrend: builds & runs, doesn't push to screen yet 2015-12-13 14:00:25 +01:00
Jan Holthuis 098e208a57 SDL: Drop SDL1.2 support and use SDL2 for GLES, too 2015-10-11 18:41:23 +02:00
Jan Holthuis 4267d51f90 stdclass: Make path getter function names more verbose 2015-09-02 15:49:00 +02:00
Jan Holthuis b6d0cddcaa stdclass: Add support for separate config/data dirs and system wide dirs
This adds support for separate config and data dirs.

On Linux, these will be compliant XDG Basedir Specification, i.e.
XDG_CONFIG_HOME and XDG_CONFIG_DIRS (or XDG_DATA_HOME and XDG_DATA_DIRS
respectively). On all other platforms, there currently just set to the
homedir path (so no previous behaviour has been changed).

If reicast wants to read and write a data file, it just calls
get_data_path("/samplefile.txt"). If it does not need to write to
that file, it just uses get_data_path("/samplefile.txt", false). That
way, we can also use system-wide dirs (like /usr/share/reicast on
linux), that the user usually doesn't have write access to.

The same applies for config file, where you use get_config_path(args)
respectively.
2015-09-02 15:48:53 +02:00
Jan Holthuis fc2d1edea9 linux-dist/x11: Enable fullscreen toggling via F11 button 2015-08-19 18:47:42 +02:00
Stefanos Kornilios Mitsis Poiitidis 67ecd6d9f9 vmem: Automatic fallback to slowpath if alloc fails
This consolidates some of the work done for TARGET_NO_NVMEM and
feat/no-direct-memmap. If nvmem is disabled at compile time or alloc
fails _nvmem_enabled() will return false. Various other fixes
and cleanups all around.
2015-08-12 03:09:44 +02:00
Stefanos Kornilios Mitsis Poiitidis eeeb2d6a62 texcache: Correctly compute size for STRIDE PLANAR textures 2015-08-12 03:09:44 +02:00
Stefanos Kornilios Mitsis Poiitidis 13b2c4d8aa naomi: Don't lock vram mirrors if vram isn't mirrored 2015-08-11 19:13:12 +02:00
Stefanos Kornilios Mitsis Poiitidis c3c2c68f21 Merge pull request #729 from reicast/wip/softrend
Basic and buggy software renderer
2015-08-11 17:43:47 +02:00
Stefanos Kornilios Mitsis Poiitidis 91039911ce softrend/gltex: Fix non-windows builds
_mm* are windows only, and so is softrend for now
2015-08-11 16:12:18 +02:00
Stefanos Kornilios Mitsis Poiitidis 26cfcd79e9 OSX: Fiddling to get the rec-cpp/noexcept path running 2015-08-11 07:57:22 -04:00
Stefanos Kornilios Mitsis Poiitidis dfc341a5fe softrend: OpenMP support, fix present overflow during untiling
- Uses vertical slicing
- Efficiency wins are best for 2-3 rendering threads
2015-08-11 00:26:02 -04:00
Stefanos Kornilios Mitsis Poiitidis 19fa2f1678 softrend: Limits on #defines, scissor area as rect 2015-08-11 00:26:02 -04:00
Stefanos Kornilios Mitsis Poiitidis 3e9431b2b7 softrend: billinear filtering, perspective uv, alpha test, ARGB1555
- Texture pixels are predecoded and expanded to quads for filtering
- bilinear input ordering might be wrong
2015-08-11 00:26:02 -04:00
Stefanos Kornilios Mitsis Poiitidis e6a9d3e661 softrend: Resembling a pixel pipeline, textures, sort, cull
- Basic pixel pipeline, a bit better triangle tests, specialized render handlers
- Textures w/ point filtering. Not very smart is it goes 32 -> 16 -> 32 bpp, but works.
- The texture cache is shared rather inelegantly w/ OpenGL one
- Culling
- PParam sorting (shared w/ GL)

The texturing and color blending paths are ugly and slow
2015-08-11 00:26:02 -04:00
Stefanos Kornilios Mitsis Poiitidis fcf273dd11 softrend: Add support for culling 2015-08-11 00:26:02 -04:00
Stefanos Kornilios Mitsis Poiitidis bedd2db7b6 softrend: WIP floating interpolation to handle big numbers
Still not 100% correct pixel fill
2015-08-11 00:26:02 -04:00
Stefanos Kornilios Mitsis Poiitidis b4b04ea75f pvr/softrend: Implement basic alpha blending 2015-08-05 08:19:50 +02:00
Stefanos Kornilios Mitsis Poiitidis f2f9a041e1 Merge pull request #727 from reicast/wip/import-drkpvr-softrend
rend/soft: Import the experimental core from nulldc/drkpvr, modularize
2015-08-05 04:25:06 +02:00
Stefanos Kornilios Mitsis Poiitidis 8cce1a4976 rend/soft: Import the experimental core from nulldc/drkpvr, better renderer modularization
- Adapted for indexed, async rendering, shared ta decoder
- This blits via a quick-and-hacky GDI blitter for now
- SSE/MMX intrins based, so not very portable
- A rather not good "reference" implementation
- At least, it's not terribly slow though
- GetTexture moved to Renderer interface
2015-08-05 02:43:40 +02:00
Stefanos Kornilios Mitsis Poiitidis 373cb6e24e nacl: Working towards GLES2. Will init, shaders won't compile 2015-07-29 04:30:21 +02:00
Stefanos Kornilios Mitsis Poiitidis 2eb9d7908f A first hackthrough to get nacl compiling working 2015-07-29 04:17:31 +02:00
Stefanos Kornilios Mitsis Poiitidis 00dbd6222f rec-cpp: Massage for gcc compatibility 2015-07-25 14:25:51 +02:00
TwistedUmbrella 115ee47efc Prevent log overlap when loading button.png 2015-07-08 10:21:26 +02:00
Stefanos Kornilios Mitsis Poiitidis 65ca1382d8 Merge remote-tracking branch 'remotes/origin/skmp/ios-wip' into feat/segfault-context-consolidation
Android/windows builds fine again. Android not tested yet, iOS/OSX not compiled yet
2015-05-16 07:12:19 +02:00
Stefanos Kornilios Mitsis Poiitidis d33ad6edfb Updating from linux/x64 2015-05-08 17:49:23 +02:00
Stefanos Kornilios Mitsis Poiitidis 7d75ee3839 gles: revert e5965e356d.
glCheck was already an option, and gcc sanely doesn't like if (do { ... } while(0))
2015-05-08 01:06:40 +02:00
Stefanos Kornilios Mitsis Poiitidis e5965e356d gles: Disable glChecks by default, glGetError can be painfully slow 2015-05-07 23:27:22 +02:00
Stefanos Kornilios Mitsis Poiitidis 64b2fcbb1c Disable glCheck by default, move to validate:OpenGlChecks config 2015-04-12 22:48:16 +02:00
~skmp 0783875b84 Linux GLX/3.1 support
My setup is only 2.1 right now, so this is totally untested
2014-12-30 13:21:05 +02:00
~skmp 83752b9761 Fix building for linux (-DGLES && eglCreateWindowSurface) 2014-12-30 10:00:20 +02:00
Stefanos Kornilios Mitsis Poiitidis 9d7cac160a PVR: Fix hscale, VO vs FB_W scissor
Fixes w320 games (bangai-o, kof99, etc), and Half-x clip (Ready2Rumble,
more)
2014-12-22 16:46:40 +01:00
Stefanos Kornilios Mitsis Poiitidis 56ebda10a9 ios interpreter works, bios runs w/ 3d visulals
THIS IS A MESS. Sorry @angelXwind :p. We'll have to clean up and merge for r8, but most of the nasty work is there.

What works:
- full init, memalloc, mprotects, etc
- boot
- gles2

What doesn't:
- Exceptions for page faults
  - Breaks texture cache
  - Breaks dynarec because of fastpath
  - segfaults don't work, needs special mach exc_server magic that still eludes me after 5 hours
- Dynarecs. RWX issues, and broken buffer mappings. Also some minnor linking stuff (most of it is taken care of)
- Audio. I just killed it off.
- All of the ui. Was getting in the way of me not knowing how to edit story boards...
- Input

Also, merged branch 'skmp/mac86-hackport' into skmp/ios-wip

Have fun~
2014-12-17 10:19:44 -08:00
Stefanos Kornilios Mitsis Poiitidis 86e2408ace wip to get ios compiling 2014-12-17 03:10:18 -08:00
Stefanos Kornilios Mitsis Poiitidis 09caf4a55e Lock the entire texture, not just the pixel array.
Fixes #49
2014-12-17 08:45:19 +01:00
Stefanos Kornilios Mitsis Poiitidis 29906d8416 Texkill, palette_update on correct place.
- Texkill needs to be done before texture allocation, which is now done during parsing (texture-sync update)
- palette_update needs to be called from the emu thread, before kicking off the render
2014-12-17 08:42:28 +01:00
Stefanos Kornilios Mitsis Poiitidis 000f432548 No rend: fix process 2014-12-09 22:10:16 +01:00
Stefanos Kornilios Mitsis Poiitidis 2b1aaf061d Isolate GLES, add DESKTOPGL option to core.mk 2014-10-22 14:39:07 +02:00
Stefanos Kornilios Mitsis Poiitids f14932c362 Building on osx w/o rec or rend 2014-09-30 12:00:46 +03:00
Stefanos Kornilios Mitsis Poiitidis 531863bca4 Fix rendering: GL3+ needs VAO, initialize screen_width/screen_height
*yay* it works now *dances*
2014-06-27 00:51:57 +03:00
Stefanos Kornilios Mitsis Poiitidis 6d6cf7d055 Call correct Texture/texture2d 2014-06-25 22:47:40 +03:00
Stefanos Kornilios Mitsis Poiitidis a1dfeb19e1 Partial port to opengl.
I forgot how much opengl sucked, so I figured I might try a port.

Nvidia doesn't draw (must be some fragment binding issue?, randomlulz returns GL_INVALID on glAttribPtr as well)
Intel doesn't compile the shader (and the error message makes no real sense. wut?)
Amd driver simply crashes (wheehaa)

All and all, doesn't look like much has changed in opengl the past 10 years, apart from even uglier initialization and more fragmented specs ~
2014-06-25 22:47:39 +03:00
Stefanos Kornilios Mitsis Poiitidis d59197f843 gdtool: better command line, stdin lists, cleanup
Also, imgread const filenames and such
2014-06-13 18:41:48 +03:00
TwistedUmbrella c3b1e1087e Add explicit casting for iOS, Import iOS EGL headers
EGL headers imported from https://github.com/alco/EGL_mac_ios for use
in iOS specialty directory
2014-05-20 23:45:38 -04:00
Karen Tsai 88d4e73f03 …And fixed a typo that was somehow made during the process of cutting-and-pasting. 2014-05-20 19:00:54 -04:00
Karen Tsai 370fa02b5c Massive build fix for iOS, ngen_arm.S (ARM JIT core) now compiles! The next goal… fix OGLES2. Because that’s completely broken. Also, updated .gitignore to properly ignore iOS build artifacts. 2014-05-20 18:58:41 -04:00
Stefanos Kornilios Mitsis Poiitidis ee2a1b7d20 Split CFLAGS/CXXFLAGS on core.mk, warning fixes 2014-05-12 20:53:43 +03:00
TwistedUmbrella 9639e47802 Compatibility with compilers on non-Ubuntu platforms 2014-05-08 00:18:48 -04:00
Stefanos Kornilios Mitsis Poiitidis f1ef4877b8 Cleanup textures after they are dead for a while 2014-05-08 04:29:14 +03:00
Stefanos Kornilios Mitsis Poiitidis 411aade5e2 Improve async/mt rendering & sync logic.
Should fix texture staging issues for now, without degrading performance
Fixes #49 (mvsc2, sf3, etc sprites)
2014-05-02 03:45:31 +03:00
ptitSeb 54e3a0e4e0 PANDORA: Options and GUI 2014-03-01 07:38:40 -05:00
Stefanos Kornilios Mitsis Poiitidis 0bbf33ce61 Updated buttons img, reset OSD scale 2014-01-21 17:39:05 +02:00
MrPsyMan 183d08a922 Enable VMU support by default.
Fake Bump Mapping handling until we take the time to do it fast+properly.
2014-01-01 07:42:49 +02:00
Stefanos Kornilios Mitsis Poiitidis f5d29677b3 Merge branch 'androidui'
Conflicts:
	core/hw/pvr/spg.cpp
	core/hw/sh4/interpr/sh4_interpreter.cpp
	reicast/android/src/com/reicast/emulator/MainActivity.java
2013-12-28 22:28:50 +01:00
Stefanos Kornilios Mitsis Poiitidis 7ef9de3cae Moving code around, cleanups 2013-12-28 22:20:08 +01:00