aboutsummaryrefslogtreecommitdiff
path: root/src/GPU3D.h
Commit message (Collapse)AuthorAge
* update copyright headersArisotura2022-01-09
|
* handle changed VCount+threaded rasteriser more gracefullyRSDuck2021-08-04
|
* update copyright year and add missing GPL headersRSDuck2021-03-12
|
* Allow for a more modular renderer backends (#990)Wunk2021-02-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Draft GPU3D renderer modularization * Update sources C++ standard to C++17 The top-level `CMakeLists.txt` is already using the C++17 standard. * Move GLCompositor into class type Some other misc fixes to push towards better modularity * Make renderer-implementation types move-only These types are going to be holding onto handles of GPU-side resources and shouldn't ever be copied around. * Fix OSX: Remove 'register' storage class specifier `register` has been removed in C++17... But this keyword hasn't done anything in years anyways. OSX builds consider this "warning" an error and it stops the whole build. * Add RestartFrame to Renderer3D interface * Move Accelerated property to Renderer3D interface There are points in the code base where we do: `renderer != 0` to know if we are feeding an openGL renderer. Rather than that we can instead just have this be a property of the renderer itself. With this pattern a renderer can just say how it wants its data to come in rather than have everyone know that they're talking to an OpenGL renderer. * Remove Accelerated flag from GPU * Move 2D_Soft interface in separate header Also make the current 2D engine an "owned" unique_ptr. * Update alignment attribute to standard alignas Uses standardized `alignas` rather than compiler-specific attributes. https://en.cppreference.com/w/cpp/language/alignas * Fix Clang: alignas specifier Alignment must be specified before the array to align the entire array. https://en.cppreference.com/w/cpp/language/alignas * Converted Renderer3D Accelerated to variable This flag is checked a lot during scanline rasterization. So rather than having an expensive vtable-lookup call during mainline rendering code, it is now a public constant bool type that is written to only once during Renderer3D initialization.
* fixes to the threadedness of the sw rasteriserRSDuck2021-01-26
| | | | also fix #639 and fix #880
* use C++ style structs everywhereRSDuck2021-01-02
|
* GPU: forward BG0HOFS to internal rendering engine register for 3D layer ↵Arisotura2020-12-10
| | | | | | | | scroll (only when the rendering engine is enabled). fixes #840 thank you RSDuck and Hydr8gon for your insight into this.
* Merge vram dirty trackingRSDuck2020-11-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Squashed commit of the following: commit b463a05d4b909372f0cd1ad91caa0c77a25e5901 Author: RSDuck <rsduck@users.noreply.github.com> Date: Mon Nov 30 01:55:35 2020 +0100 minor fix commit ce73cebbdf5da243d7ebade82d8799ded9cd6b28 Author: RSDuck <rsduck@users.noreply.github.com> Date: Mon Nov 30 00:43:08 2020 +0100 fix dirty flags of BG/OBJ mappings not being reset commit fc5d73a6178e3adc444398bdd23de8314b5ca8f8 Author: RSDuck <rsduck@users.noreply.github.com> Date: Mon Nov 30 00:11:13 2020 +0100 use flat vram for gpu2d everywhere commit 34ee9fe2bf04fcfa2a5a1c8d78d70007e606f1a2 Author: RSDuck <rsduck@users.noreply.github.com> Date: Sat Nov 28 19:10:34 2020 +0100 mark VRAM dirty for display capture commit e8778fa2f429c6df0eece19d6a5ee83ae23a0cf4 Author: RSDuck <rsduck@users.noreply.github.com> Date: Sat Nov 28 18:59:31 2020 +0100 use flat VRAM for textures and texpals also skip rendering if nothing changed and a bunch of fixes commit 53f2041e2e1a28b35702a2ed51de885c36689f71 Author: RSDuck <rsduck@users.noreply.github.com> Date: Fri Nov 27 18:29:56 2020 +0100 use vram dirty tracking for extpals also preparations to take this further commit 4cdfa329e95aed26d3b21319c8fd86a04abf20f7 Author: RSDuck <rsduck@users.noreply.github.com> Date: Mon Nov 16 23:32:22 2020 +0100 VRAM dirty tracking
* make OpenGL renderer a build optionRSDuck2020-10-01
| | | | mostly meant for the Switch port
* * rework GPU's settings interface, make it config-agnosticArisotura2020-05-28
| | | | | * make video settings dialog functional, sorta * fix dialogs that were resizable
* update copyright yearsArisotura2020-02-14
|
* hack so that the GL renderer can render linesArisotura2019-06-12
|
* software renderer: fix rendering of line polygons. fixes #350Arisotura2019-06-11
|
* more code botchingArisotura2019-05-24
| | | | | | it's less shitty tho but still has bugs
* welp.Arisotura2019-05-21
| | | | progress
* remove reference to GL version 4.3 from filenames and namespacesArisotura2019-05-20
|
* start work on display captureArisotura2019-05-17
| | | | also fix a bug in the compositing shader
* BAHAHAHHHHArisotura2019-05-16
| | | | HARK HARK HARK
* BAHAHAHAHAHAHAHAAArisotura2019-05-16
|
* de-hardcode the GL renderer.Arisotura2019-05-12
| | | | | init framebuffer to black. fix bugs.
* calculate hi-res vertex positions. reduces shaking of polygons when ↵Arisotura2019-05-11
| | | | rendering at a higher res.
* hires hax. somewhat functionalArisotura2019-05-08
|
* first attempt at thingsArisotura2019-04-01
| | | | (also fix softrenderer reset)
* also, update copyright nameArisotura2019-01-22
|
* redesign main emu loop to use timestamps instead of being a trainwreckStapleButter2019-01-05
| | | | | | | | * cleaner code * faster in some cases * more accurate (on-demand compensation for timers and GPU) * less prone to desyncs * overall betterer
* some work on extreme/degenerate shit in GPUStapleButter2018-12-20
| | | | | | * clip against Z then Y then X. apparently, fixes #310. I had also observed hints that the hardware does it this way. * truncate W to 24 bits before viewport transform. * mark any polygons that have a W=0 at that point as degenerate. do not render.
* implement proper support for POWCNT1.StapleButter2018-12-18
| | | | fixes #260
* add proper support for GXFIFO stalls.StapleButter2018-11-23
| | | | | | | | bad games that blast the GXFIFO and overflow it: * Super Mario 64 DS * Rayman RR2 latter seems to get its music streaming crapoed.
* GPU doneStapleButter2018-10-18
|
* fixor copyright years.StapleButter2018-09-15
|
* 3D:StapleButter2017-08-28
| | | | | * more accurate polygon edges (still not perfect. heh) * antialiasing (doesn't always work)
* normalize W values in both directions (0123-0157 -> 1230-1570)StapleButter2017-07-06
|
* 3D: Y-sortingStapleButter2017-07-05
|
* 3D: move opaque/translucent sorting to GPU3D.cppStapleButter2017-07-05
|
* (finally) make the threaded 3D renderer option actually workStapleButter2017-06-04
|
* clean up some shit. make framebuffer access less weird.StapleButter2017-06-03
|
* rework slope/edge code. lay groundwork for antialiasing.StapleButter2017-05-28
|
* fogStapleButter2017-05-26
|
* fix crapoed shadowsStapleButter2017-05-26
|
* first attempt at threading the 3D rendererStapleButter2017-05-23
|
* make the 3D renderer work per-scanlineStapleButter2017-05-21
|
* latch 3D registers upon VBlankStapleButter2017-05-09
| | | | (fixes the last bugs in Gericom's train game)
* fix Z-buffering. not really clean, and not perfectly accurate.StapleButter2017-04-29
|
* misc optimizationsStapleButter2017-04-25
|
* a few attempts at optimizationStapleButter2017-04-23
|
* attempt at shadows. they're still a bit weird tho.StapleButter2017-04-22
|
* optimize the 3D renderer somewhatStapleButter2017-04-21
|
* * decal texture blendingStapleButter2017-04-12
| | | | | * start implementing toon shading * temp. revert the DMA fix, causes issues
* * always render normal BG/OBJ graphics (even if they're not getting ↵StapleButter2017-04-10
| | | | | | | displayed, they can still be fed to the capture unit) * fix 3D viewport calculation * keep track of the clearbuffer attributes before VBlank
* start 3D rendering at scanline 215. fixes Worms2D.StapleButter2017-03-21
|