Themaister
{{Short description|Norwegian programmer}}
{{Infobox person
| other_names = Hans-Kristian Arntzen
| birth_date = 1990
| education = *M.Sc. in digital signal processing from Norwegian University of Science and Technology
- B.Sc. in Electronics from Vestfold University College (now University of South-Eastern Norway).
| occupation = Programmer
| organization = Arntzen Software AS
| known_for = *Graphics programming
- Video game console emulator development
| notable_works = *RetroArch
- paraLLEl-RDP
- Rendering with Vulkan compute shaders
| website = {{URL|https://themaister.net/blog/}}
{{URL|https://github.com/Themaister}}
{{URL|https://arntzen-software.no/}}
}}
Hans-Kristian Arntzen, better known by the pseudonym Themaister, is a programmer who specializes in graphics programming, particularly the Vulkan API. He helped create the cross-platform frontend RetroArch and its Vulkan support. His work on the paraLLEl-RDP for RetroArch pioneered the use of Vulkan compute shaders in video game console emulation. Themaister used them to render computationally intensive low-level emulation on the GPU. This would emulate the Nintendo 64 with the accuracy of a pre-existing, low-level, CPU-based renderer, Angrylion; but with significantly lower hardware requirements and CPU-usage. This approach has since inspired the use of compute shader rendering in other emulators, such as redream, MelonDS, and PCSX2.
RetroArch
In 2010, Themaister created the SSNES interface for the bsnes emulator as an alternative to the existing Qt interface.{{Cite web |title=SSNES - The SNES emulator that sucks less. / Community Contributions / Arch Linux Forums |url=https://bbs.archlinux.org/viewtopic.php?id=98044 |access-date=2025-02-12 |website=bbs.archlinux.org}}{{Cite web |date=2023-03-17 |title=History of Videogame Emulators: The History of Multi-Console Emulators - Part 4 |url=https://historyofvideogameemulators.blogspot.com/2023/03/the-history-of-multi-console-emulators_17.html |access-date=2025-02-12 |website=History of Videogame Emulators}} A couple of years later, the project was renamed RetroArch. Themaister's work on Vulkan enabled RetroArch to be one of the first applications to support Vulkan on the first day of Vulkan's release.{{Cite web |date=2016-02-16 |title=Day 1 Vulkan support – Libretro |url=https://www.libretro.com/index.php/day-1-vulkan-support/ |access-date=2025-02-12 |language=en-US}}
paraLLEl-RDP
Conceived around 2016,{{Cite web |date=2016-07-17 |title=Nintendo 64 Vulkan Low-Level emulator – paraLLel – pre-alpha release – Libretro |url=https://www.libretro.com/index.php/nintendo-64-vulkan-low-level-emulator-parallel-pre-alpha-release/ |access-date=2025-02-10 |language=en-US}} paraLLel was a new libretro core for RetroArch. It had a low-level plugin (paraLLEl-RDP) to emulate the Nintendo 64's RDP (Reality Display Processor), and a dynarec (paraLLEl-RSP) to emulate the Nintendo 64's RSP (Reality Signal Processor). paraLLEl-RDP was designed to use the Vulkan API to render the RDP on the GPU rather than CPU (used by the accurate but slow Angrylion renderer), to reduce CPU bottlenecks. paraLLel started off slow with bugs,{{Cite web |date=2016-09-03 |title=paraLLEl RDP and RSP updates (September 2016) – Libretro |url=https://www.libretro.com/index.php/parallel-rdp-and-rsp-updates-september-2016/ |access-date=2025-02-10 |language=en-US}} but paraLLEl-RSP was rewritten in 2019-2020,{{Cite web |date=2020-01-26 |title=Parallel N64 with Parallel RSP dynarec release – fast and accurate N64 emulation is now here! – Libretro |url=https://www.libretro.com/index.php/parallel-n64-with-parallel-rsp-dynarec-release-fast-and-accurate-n64-emulation/ |access-date=2025-02-10 |language=en-US}} and Themaister then rewrote paraLLEl-RDP from scratch using new techniques.{{Cite web |date=2020-05-13 |title=Reviving and rewriting paraLLEl-RDP – Fast and accurate low-level N64 RDP emulation – Libretro |url=https://www.libretro.com/index.php/reviving-and-rewriting-parallel-rdp-fast-and-accurate-low-level-n64-rdp-emulation/ |access-date=2025-02-10 |language=en-US}}{{Cite web |date=2020-05-13 |title=paraLLEl-RDP rewritten from scratch – available in paraLLEl n64 right now for RetroArch – Libretro |url=https://www.libretro.com/index.php/parallel-rdp-rewritten-from-scratch-available-in-parallel-n64-right-now-for-retroarch/ |access-date=2025-02-10 |language=en-US}} With the new RDP renderer, modest mainstream hardware could for the first time emulate the N64 at full speed with the accuracy of Angrylion.
Later in 2020, Themaister added upscaling to paraLLEl-RDP, enabling the accurate, bit-exact emulation to be done at higher resolution, with the N64's native VI post-processing pipeline fully emulated.{{Cite web |date=2020-06-16 |title=paraLLEl N64 – Low-level RDP upscaling is finally here! – Libretro |url=https://www.libretro.com/index.php/parallel-n64-low-level-rdp-upscaling-is-finally-here/ |access-date=2025-02-10 |language=en-US}} Even with upscaling's additional computational requirements, consumer PCs could still run this at full speed. The public could finally use mainstream hardware to play the N64 with higher resolution graphics and accurate, low-level emulation. The paraLLEl-RDP and paraLLEl-RSP were subsequently incorporated into the Mupen64Plus-Next core (a successor to the libretro port of Mupen64Plus). Further changes and updates were made to Mupen64Plus-Next, and this core has succeeded the initial paraLLEl core.{{Cite web |date=2020-06-27 |title=Mupen64Plus-Next – v2.1 – Libretro |url=https://www.libretro.com/index.php/mupen64plus-next-v2-1/ |access-date=2025-02-10 |language=en-US}}
Following the emulation achievement, paraLLEl-RDP and paraLLEl-RSP were quickly incorporated into other N64 emulators, such as RMG and Simple64 (both Mupen64Plus derivatives) and the multi-system emulator Ares. Even the old emulator Project64 received a port, though with various accuracy problems or even freezes.{{Cite web |last=blog |first=mudlord's |title=paraLLEl-RDP ported to PJ64 and Mupen64Plus |url=https://mudlord.github.io/Parallel-RDP/ |access-date=2025-02-10 |website=mudlord.github.io}}
paraLLEl-GS
In 2024, Themaister, with the help of a colleague, turned the Vulkan compute shaders approach towards emulating the PlayStation2's "Graphics Synthesizer" (GS).{{Cite web |date=2024-07-03 |title=PlayStation 2 GS emulation – the final frontier of Vulkan compute emulation – Maister's Graphics Adventures |url=https://themaister.net/blog/2024/07/03/playstation-2-gs-emulation-the-final-frontier-of-vulkan-compute-emulation/ |access-date=2025-02-10 |language=en-US}} Their new paraLLEl-GS renderer attempts the accuracy of the existing software renderer GSdx (used in PCSX2), while enabling upscaling and supersampling at sufficient speeds on common hardware. paraLLEl-GS has been implemented in the new libretro core LRPS2, a heavily modified version of PCSX2,{{Cite web |date=2025-01-05 |title=LRPS2 – the new PlayStation2 core with a brand new Vulkan LLE renderer – Libretro |url=https://www.libretro.com/index.php/lrps2-the-new-playstation2-core-with-a-brand-new-lle-renderer/ |access-date=2025-02-10 |language=en-US}} and a version has been ported to PCSX2 itself.
Other consoles
The results achieved by Vulkan compute shaders in the parallel-RDP led other developers to try a similar approach. The Sega Dreamcast emulator, redream, added a low-level emulation video renderer that uses compute shaders to run on the GPU.{{Cite web |date=2025-02-02 |title=Anthony Pesch / redream · GitLab |url=https://gitlab.com/inolen/redream |access-date=2025-02-10 |website=GitLab |language=en}} In 2024, melonDS, an emulator of the Nintendo DS, added an OpenGL version of a compute shader renderer, to try to combine accurate graphics with support for upscaling and other improvements.{{Cite web |title=melonDS 1.0 RC, there it is! - melonDS |url=https://melonds.kuribo64.net/comments.php?id=216 |access-date=2025-02-10 |website=melonds.kuribo64.net}}
Career
After getting his B.Sc. in Electronics and M.Sc. in Digital Signal Processing, Arntzen worked for Arm Norway for four years. He has done work on SPIR-V for the Khronos Group, and currently runs his own company, Arntzen Software AS.{{Cite web |title=About the developer {{!}} Arntzen Software AS |url=https://arntzen-software.no/about |access-date=2025-02-12 |website=arntzen-software.no |language=no}}
See also
References
{{Reflist}}
External links
- https://themaister.net/blog/
- {{GitHub|Themaister}}
- https://arntzen-software.no/
Category:Free software programmers