A VRChat World Now Runs Quake III Arena on a 256-Core RISC-V PC Emulated Inside a Pixel Shader, at 24 FPS on an RTX 5090

A VRChat world now RUNS Quake III Arena, and NOT through a video STREAM or a plugin. Developer Mykhailo Moroz (@Michael_Moroz_) built ShaderEmu, a COMPLETE 32-bit RISC-V COMPUTER that lives INSIDE a pixel shader, boots LINUX to a desktop, and NOW plays id Software’s 1999 arena shooter with VR CONTROLS and a “barely working” LAN between players. He posted the Quake III clip at about 2:03 a.m. ET on October 17; by late morning it had passed 34,000 impressions and 750 likes. The project’s OWN BENCHMARK is the REALITY check: 24.2 frames per second on an RTX 5090.

Bar chart of ShaderEmu game benchmarks on an RTX 5090
Game benchmarks published in the ShaderEmu README, measured on an RTX 5090 under Direct3D 11 on October 16, 2026. Chart: MetaverseWatcher.

What Moroz Actually Built

The CONSTRAINT is the STORY. According to the ShaderEmu repository, VRChat allows ONLY Direct3D 11 graphics shaders, with NO compute shaders and NO unordered-access views. So the ENTIRE machine is STORED in TEXTURES that fragment shaders rewrite EVERY frame. The processor state, the RAM and the emulated GPU’s memory share ONE 2048×4096 texture; the root file system is a ROM spread across FOUR more.

The CPU is an RV32IMAF core with supervisor mode, DERIVED from pimaker’s open-source rvc shader emulator. Moroz SCALED it to 256 cores: Linux runs on core 0, and programs BORROW worker cores for HEAVY loops such as decoding media, physics, path tracing and, in Quake III’s case, the game SERVER’s frame. The kernel is Linux 5.17 built WITHOUT a memory-management unit, which the README says is 11 to 16% FASTER in games than the MMU build it replaced.

Around that core sits a SURPRISINGLY FULL software stack: a Nano-X desktop with a Start menu, a terminal, an editor, a file manager, a browser with CSS, audio and video players, a TinyCC compiler with an IDE and line-stepping debugger, and ports of Doom, Quake, Red Alert, Command & Conquer, Micropolis, ClassiCube and a NES emulator. An emulated GPU device takes vertex buffers and command lists from the guest and hands the rasterizing back to the REAL graphics card, which is HOW 3D games become PLAYABLE at all.

The Numbers Behind the Clip

The README’s game table, dated October 16 and measured in guest time on an RTX 5090, puts Doom‘s timedemo at 143.6 fps, Quake at 92.5 fps and Red Alert at 87.6 game frames a second. Quake III, on The Longest Yard (q3dm17) with three bots, manages 24.2 fps. That is a GENUINE ACHIEVEMENT for a CPU BUILT from pixel-shader passes, but it is NOT a smooth shooter, and it is on the FASTEST consumer card NVIDIA sells.

Chart of emulated RISC-V instructions per second on an RTX 5090
Emulated instructions per second by build, as listed in the ShaderEmu README. Chart: MetaverseWatcher.

RAW speed tells the SAME story. Upstream rvc managed about 0.5 million emulated instructions per second; Moroz’s OPTIMIZED Direct3D 11 shader, the kind VRChat runs, reaches 2.6 to 3.4 million under Linux, and the VRChat world itself sits at 2.7 to 2.9 million. In a follow-up post he described the GPU as emulating “a 256 core slowass RISC-V CPU, around 4MIPS speed per core,” and WARNED that players “need a pretty beefy GPU,” adding that clock speed and latency matter MORE than core count.

EVERY figure in the README comes from DESKTOP NVIDIA RTX hardware. It publishes NO numbers for standalone headsets, so Quest owners should NOT ASSUME this world runs for them.

Built in Ten Days, With an AI in the Loop

The PACE is the OTHER headline. GitHub shows the repository was CREATED on October 6 (UTC), and the latest push landed early on October 17. On October 7 Moroz wrote that he had let Anthropic’s Opus 5.5 run “in a loop for 2 days” OPTIMIZING the emulator, reaching a window manager, PLAYABLE Doom and an emulated GPU with OpenGL 1.x. By October 9 he had Doom rendering in 3D INSIDE the VRChat world by intercepting OpenGL geometry. Quake III followed EIGHT days later. The project’s own Quake III notes say that on October 13 the port was run by typed commands only, with keys, pointer, menus and sound “not tried by hand,” so the VR-controls clip is the FIRST public evidence of hands-on play.

The world itself, listed as ShaderEmu by misha_m, gives EVERY player a MACHINE in a 1990s-style den. Players can put each other’s machines on their screens, a classroom of stations shows everyone’s display, and “holodecks” wrap a 3D game’s frame around the player’s seat. A PERSISTENT folder saves to the player’s VRChat PlayerData.

Why It Matters Beyond the Stunt

VRChat CREATORS have spent YEARS pushing Udon and shaders far PAST what the platform was DESIGNED for, and ShaderEmu is the MOST extreme example yet: a sandbox that forbids compute shaders now HOSTS a multi-core Linux machine with NETWORKING between players. The LAN uses Linux’s OWN TCP/IP stack, with each player’s machine on a shared 10.0.0.0/16 network, so standard socket programs and multiplayer modes WORK without game-specific drivers.

The LIMITS are EQUALLY clear. The README lists NO outbound internet access: web pages reach the in-world browser ONLY because the HOST fetches them. The prebuilt image lags the sources, the faster no-MMU Linux must be built in WSL, and the Unity world runs a SINGLE machine configuration. The code is MIT-licensed, with GPL-2.0 kernel drivers.

The Metaverse Watcher take: ShaderEmu is NOT a product, and 24 fps Quake III on an RTX 5090 is NOT a gaming platform. It is a PROOF that a social-VR world can host REAL, general-purpose SOFTWARE when a determined developer, and an AI coding loop, treat the shader pipeline as a computer. The question for VRChat is no longer whether creators can do this, but what they BUILD NEXT.

Sources: the ShaderEmu repository and README (including its Quake III and LAN notes), the ShaderEmu VRChat world, pimaker’s rvc, and Mykhailo Moroz’s posts on X from October 7, October 9 and October 17.

Leave a Comment