Skip to content

jpcy/ioq3-renderer-bgfx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a06e5f8 · Nov 29, 2021
Nov 29, 2021
Aug 29, 2019
Jan 22, 2021
Sep 3, 2019
Sep 3, 2019
Dec 1, 2015
Dec 7, 2015
Dec 21, 2015
Nov 29, 2021
Aug 30, 2019
Mar 9, 2020

Repository files navigation

ioq3-renderer-bgfx

Actions Status License: GPL v2

This is a renderer for ioquake3 that uses bgfx to support multiple graphics APIs.

Minimum requirements: OpenGL 3.2 or Direct3D 11.

Features

  • Anti-aliasing - MSAA, SMAA
  • Soft sprites
  • Real dynamic lights, with extra dynamic lights for Q3A weapons - BFG, Lightning, Plasma, Railgun
  • Bloom

Screenshots

Bloom Extra Dynamic Lights
Planar Reflections Soft Sprites

Compiling

premake5 gmake if premake5 is in your PATH. Otherwise, ./bin/premake5 gmake to use the local copy of premake.

The generated makefiles are written to build.

Linux requirements

Packages: libgl1-mesa-dev libsdl2-dev

Cygwin/MinGW-w64/MSYS2 requirements

ioquake3 SDL2 libs and headers are required. Clone ioquake3 to the same parent directory as ioq3-renderer-bgfx.

Visual Studio

Use ioq3-premake-msvc.

Recompiling Shaders

Linux/Cygwin/MinGW-w64/MSYS2: premake5 shaders or ./bin/premake5 shaders

Visual Studio: run bin/shaders.bat

Usage

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.

Console Variables

Run the following console variables without any arguments to see a list of possible values.

Variable Description
r_aa Anti-aliasing.
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_extraDynamicLights Enable extra dynamic lights on Q3A weapons.
r_fastPath Disables all optional features to improve performance.
r_lerpTextureAnimation Use linear interpolation on texture animation - flames, explosions.
r_maxAnisotropy Enable anisotropic filtering.
r_textureVariation Hide obvious texture tiling in a few Q3A maps.
r_waterReflections Show planar water reflections. Only enabled on q3dm2 for now.

Console Commands

Command Description
r_captureFrame Capture a RenderDoc frame.
screenshotPNG

RenderDoc

The renderer must be built in debug mode - make config=debug_x86 or make config=debug_x86_64.

Place the RenderDoc shared library - renderdoc.dll or librenderdoc.so - in the same directory as the renderer binary.

Use the r_captureFrame console command to capture a frame. Bind it to a key so the console doesn't show up in the capture.

Capture files will be saved to the same directory as the ioquake3 executable as ioq3-renderer-bgfx_frameX.rdc where X is the frame number.