This is a renderer for ioquake3 written in C++ and using bgfx.
Goal: Make Quake 3 Arena and derivitives look slightly better on a modern PC without content replacement. It doesn't need to run at 600fps, trade some of that performance for visuals.
Status: Work in Progress. Not widely tested. Q3A and TA more or less look how they should.
- Anti-aliasing - MSAA, SMAA
- Soft sprites
- Real dynamic lights
- Extra dynamic lights for Q3A weapons - BFG, Lightning, Plasma, Railgun
- Bloom
These are updated after every commit.
Clone bgfx and bx to the same parent directory as ioq3-renderer-bgfx.
Required packages: libgl1-mesa-dev libsdl2-dev
./premake5 shaders
./premake5 gmake
cd build
make
Clone ioquake3 to the same parent directory as ioq3-renderer-bgfx.
./premake5.exe shaders
./premake5.exe gmake
cd build
make
- Run
CompileShaders.bat
- Use ioq3-premake-msvc.
Copy the renderer binaries from build\bin_*
to where you have a ioquake3 test build installed.
Select the renderer in-game with cl_renderer bgfx
followed by vid_restart
.
Run the following console variables without any arguments to see a list of possible values.
Variable | Description |
---|---|
r_aa | Anti-aliasing. |
r_aa_hud | Anti-aliasing for 3D HUD elements. |
r_backend | Rendering backend - OpenGL, Direct3D 9 etc. |
r_bgfx_stats | Show bgfx statistics. |
r_bloom | Enable bloom. |
r_bloomScale | Scale the bloom effect. |
r_dynamicLightIntensity | Make dynamic lights brighter/dimmer. |
r_dynamicLightScale | Scale the radius of dynamic lights. |
r_lerpTextureAnimation | Use linear interpolation on texture animation - flames, explosions. |
r_maxAnisotropy | Enable anisotropic filtering. |
r_waterReflections | Show planar water reflections. Only enabled on q3dm2 for now. |
Command | Description |
---|---|
screenshotPNG |