Commit Graph

114 Commits

Author SHA1 Message Date
Anders Jenbo
225adda309
Rendering refactoring (#459)
* Hint texture intent to renderer

* improve transparancy for 32bit rendering

* Align OpenGL ES 2.0 with SDL_GPU's 2D rendering
2025-06-30 22:51:26 +02:00
olebeck
5dae46b3c9 missed a line 2025-06-30 22:10:45 +02:00
olebeck
3c548d987c Merge remote-tracking branch 'upstream/master' 2025-06-30 21:10:28 +02:00
olebeck
9cab1ac14d double buffered uniforms seem to work now 2025-06-30 21:07:42 +02:00
David Gow
e87184b502
Fix the OpenGL backends on non-glx Linux platforms (and remove GLEW dependency) (#446)
* Work around issues with depth-buffer size on EGL-based platforms

The OpenGL 1.1 and OpenGL ES 2.0 backends can break on EGL-based platforms,
such as Wayland, or X11 with SDL_VIDEO_FORCE_EGL=1. One of the reasons for
this (the other being glew on the GL1.1 backend) is that SDL/egl get very
confused by the way we set OpenGL attributes, particularly SDL_GL_DEPTH_SIZE,
resulting in SDL_GL_CreateContext() failing with EGL_BAD_MATCH.

The exact cause of this is unknown, but it seems to be a combination of:
- SDL_GL_SetAttribute() is supposed to be called _before_ the window is
  created, and we're calling it afterward.
- Creating several test windows during the enumeration process, mixing
  and matching between OpenGL and OpenGL ES profiles.

The "most correct" solution is probably to delay creating the game window
until the backend creation process, rather than before the enumeration
occurs. But that's a real refactor, which could cause other issues.

Instead, set the 24-bit bit depth (which we've hardcoded anyway) before
creating the window, and use SDL_GL_ResetAttributes() when creating backends.

This seems to work here in all of the cases I was able to try (modulo the GLEW
dependency, which is removed in the next patch).

* miniwin: Remove GLEW dependency for OpenGL 1.1

GLEW normally backs directly onto glXGetProcAddress on Linux, which is broken
on non-GLX setups, such as Wayland (but also X11 with EGL, and presumably KMSDRM).

Replace it with manual calls to SDL_GL_GetProcAddress() for the VBO path.

Note, however, that SDL_opengl.h includes "windows.h", so conflicts with the
miniwin implementation, which breaks builds on windows.

In order to work around this, we do what the Direct3D9 implementation does and
push all of the OpenGL calls to a separate file, actual.cpp.

Going forward, it may make sense to load _all_ OpenGL entry points via SDL,
which would allow us to avoid linking directly with libGL/libOpenGL, and
therefore eliminate the separate build dependency altogether, as well as
allowing more runtime configurability as to the OpenGL library to load.

(But that's definitely a bit uglier, and also useful very rarely.)
2025-06-29 17:47:09 +02:00
olebeck
5005772243 correct texture address mode, use tlsf instead of sceClibMspace 2025-06-29 16:30:20 +02:00
olebeck
7c15d4f9d8 run clang format 2025-06-28 03:39:00 +02:00
olebeck
7b258b0e30 fix normals matrix 2025-06-28 02:44:52 +02:00
olebeck
a7f41dd4a3 clean up a bit 2025-06-27 23:59:17 +02:00
olebeck
4aad9a9786 make 3d work, broken lights 2025-06-27 17:20:25 +02:00
olebeck
5f9b9675eb fix Draw2DImage 2025-06-27 00:38:05 +02:00
olebeck
5a6d05c38f support paletted textures directly to avoid copying the texture twice 2025-06-26 17:45:52 +02:00
olebeck
fb17107bca fix rendering somewhat, some geometry shows up 2025-06-26 14:03:20 +02:00
olebeck
06f2179ea1 make gxm renderer work with new d3drm 2025-06-26 02:34:16 +02:00
olebeck
b41e760d9d Merge remote-tracking branch 'upstream/master' 2025-06-25 22:07:25 +02:00
olebeck
d0020a3b9a avoid sdl renderer for vita, seems broken 2025-06-25 21:40:17 +02:00
Anders Jenbo
b65284a7a0
Move 2D drawing and upscaling to the renderer (#348) 2025-06-25 19:45:26 +02:00
olebeck
b38091ba1b add gxm renderer (not working with display yet) 2025-06-24 16:36:09 +02:00
olebeck
40a34ef48e remove test window which causes a bug in the vita sdl port to show up 2025-06-22 14:45:19 +02:00
Anders Jenbo
ea4b9ab1c9
Implement DirectX 9 backend (#332) 2025-06-18 18:10:48 +02:00
Anders Jenbo
e9c5e5b9ba
Use extensions to probe for 24 or 32bit depth buffer (#329) 2025-06-17 17:50:36 +02:00
Christian Semmler
3cfa3f5bec
Hotfix: reserve instead of resize 2025-06-16 21:00:12 -07:00
Christian Semmler
83205e2e4e
Fix UB in software renderer (#322)
* Fix UB in software renderer

One cannot access elements of the vector that don't exist. `reserve` allocates memory, but doesn't add elements.

`D3DRMVERTEX& dst = m_transformedVerts[i];` is UB and crashes on Windows debug build

* Update renderer.cpp
2025-06-17 05:25:34 +02:00
Anders Jenbo
0cfcc0fb21
Fix zawtooths during late game stage (#325) 2025-06-17 05:02:24 +02:00
Anders Jenbo
eab95514d6
Add an OpenGL ES 2.0 renderer (#287) 2025-06-17 03:47:23 +02:00
Anders Jenbo
1689a0063f
Fix an optimiaze OpenGL rendere (#320)
Co-authored-by: Christian Semmler <mail@csemmler.com>
2025-06-16 19:49:17 +02:00
Anders Jenbo
2828452b35
Clean up rendering (#301) 2025-06-16 04:28:32 +02:00
Anders Jenbo
975764dc17
Align OpenGL and SDL_GPU specular with software (#305) 2025-06-14 18:05:25 +02:00
Anders Jenbo
d06caa99cb
Dial software speculare color in to match the original as best possible (#302) 2025-06-14 16:52:08 +02:00
Anders Jenbo
81ba75ea65
SIMD optimize z-buffer clear (#283) 2025-06-13 01:21:34 +02:00
Christian Semmler
b95ca4b2a3
Fix m_callbacks resource issue (#289) 2025-06-12 21:37:51 +02:00
Anders Jenbo
4374453cb7
Align cache destruction callback in software renderer (#284) 2025-06-12 01:45:07 +02:00
Anders Jenbo
7732a3ccfd
Use edge walking for triangle rasterization (#280) 2025-06-11 21:56:12 +02:00
Anders Jenbo
b2354a85d0
Sort and render transparent objects last (#277) 2025-06-11 02:15:26 +02:00
Anders Jenbo
2c9d9ba920
Upload mesh data to GPU using VBOs when available (#275) 2025-06-10 23:33:14 +00:00
Anders Jenbo
4c5b255471
Use indexed triangles in SDL_GPU (#274) 2025-06-10 23:07:02 +02:00
Anders Jenbo
c8b8035de8
Upload models to GPU before rendering (#272) 2025-06-10 06:34:49 +02:00
Anonymous Maarten
7e9acc8d04
Add IDirect3DRMMiniwinDevice interface (#267) 2025-06-09 16:34:37 +00:00
Anders Jenbo
de82e8477a
Use dedicated path for flat shading (#248) 2025-06-09 05:06:19 +02:00
Anders Jenbo
cd4a24ec9e
Use indexed faces (#257) 2025-06-09 04:56:29 +02:00
Anders Jenbo
5be9b09b40
SDL3 GPU texture support (#254)
Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
2025-06-09 01:04:19 +02:00
Christian Semmler
1a91547011
Update legomodelpresenter.cpp (#264)
* Update legomodelpresenter.cpp

* Update renderer.cpp
2025-06-08 15:55:35 -07:00
Anders Jenbo
f3a4d8fcb5
Fix OpenGL rendering (#262) 2025-06-08 23:44:37 +02:00
Anders Jenbo
4cd0385c38
Some cleanups for the software rendere (#261) 2025-06-08 23:31:29 +02:00
Anders Jenbo
6bdcc16fd9
Turn things right side in on SDL_GPU (#260) 2025-06-08 23:20:43 +02:00
Anders Jenbo
ee372fbc8f
Replace GeometryVertex with D3DRMVERTEX (#259) 2025-06-08 23:06:38 +02:00
Anders Jenbo
d32c30492f
Add flat shading to Appearance (#258) 2025-06-08 22:40:14 +02:00
Anders Jenbo
9a1cf812dd
Enable backface culling (#241) 2025-06-06 01:49:47 +02:00
Anders Jenbo
874cc526be
Add texture support for OpenGL (#239) 2025-06-05 13:26:06 +02:00
Anders Jenbo
12d01ae311
Refactor renderers (#237) 2025-06-05 04:07:42 +02:00
Anders Jenbo
0ac7fee23c
Renderer clean up (#228) 2025-06-04 02:21:06 +02:00
Anders Jenbo
f412d44f83
Config clean ups (#226) 2025-06-03 20:08:09 +02:00
Anders Jenbo
d5a6da31e3
Make OpenGL compatible with config (#224) 2025-06-03 19:13:03 +02:00
Anders Jenbo
b169a4d637
Implement OpenGL 1.5 backend renderer (#223) 2025-06-03 03:28:53 +02:00
Anders Jenbo
2affbdfcc7
Align hardware lighting with software (#221) 2025-06-03 02:16:33 +02:00
Anders Jenbo
f08aec7438
Add highlights to software rendering (#218) 2025-06-02 04:14:40 +02:00
Anders Jenbo
ec7204ed38
Add texture rendering to the software rendere (#211) 2025-06-01 05:21:59 +02:00
Anders Jenbo
403ead7453
Push textures to the rendere (#209) 2025-05-31 23:48:20 +02:00
Anders Jenbo
613e5b8d9f
Add lighting for software renderer (#205) 2025-05-31 03:28:00 +02:00
Anders Jenbo
0ab5070b46
software: Add support for transparent surfaces (#201)
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2025-05-31 02:41:09 +02:00
Anders Jenbo
6afb7626a0
Add lighting (#200)
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2025-05-31 01:12:54 +02:00
Anders Jenbo
91e72261d0
Apply clipping and culling on hardware (#198) 2025-05-29 20:28:01 +02:00
Anders Jenbo
4abd404f2d Implement Software rendering 2025-05-29 04:08:01 +02:00
Anders Jenbo
ef7499bdb9 Restructure miniwin and add support for 3D backends 2025-05-29 04:07:53 +02:00