The Renderer interface looks like this:

class Renderer
        static RendererData& data() noexcept;
        static void saveSettings() noexcept;

        static const FString& getVendorString() noexcept;
        static const FString& getAPIVersion() noexcept;
        static const FString& getGPUName() noexcept;
        static const FString& getDriverVersion() noexcept;

The first function returns a reference to the RendererData struct that looks like this:

struct RendererData
    bool bVulkan = false;               // Enables the vulkan submodule
    bool bUsingVSync = true;            // Enables V-Sync, defaults to true
    uint32_t msaaSamples = 8;           // The number of samples for MSAA, supersampling
    bool bSampleRateShading = false;    // A boolean that if set to true enables sample rate shading, simply MSAA on shaders
    float sampleRateShadingMult = 0.0f; // Multiplier for sample rate shading, the higher = less performance but more quality

You can see descriptions in the code comments above.

The saveSettings function saves the settings in this struct to the Renderer config file under Config/Core/Renderer.yaml.

All functions after that, return information fetched from the Graphics API about your GPU, like the driver version or API version.


The settings for the renderer are stored at Config/Core/Renderer.yaml, which looks like this:

vulkan: false                
v-sync: false                
msaa-samples: 8              
sample-rate-shading: false   
sample-rate-shading-mult: 0.1

And corresponds directly to the RendererData struct documented above.

Event safety

The following members of the Renderer interface are marked as Any time:

  1. data()
  2. saveSettings()

The rest are marked as Begin.