; REM: settings of RemGfx, the REM renderer (Direct3D 8 device on Vulkan, src/RemGfx). ; Every key can also be given as an environment variable REM_GFX_ (that one wins). ; The log goes to remgfx.log next to freelancer.exe. [RemGfx] ; 0 errors, 1 warnings, 2 info (default), 3 debug (every new pipeline is logged) LogLevel = 2 ; 1: enable VK_LAYER_KHRONOS_validation when it is installed (development) Validation = 0 ; -1: first discrete GPU, else the first Vulkan 1.3 device; >= 0: that device index GpuIndex = -1 ; -1: as the game asks (windowed COPY_VSYNC / full-screen interval), 0: off, 1: on VSync = -1 ; full-screen (non-windowed) modes: 1 = borderless window over the monitor, the back buffer is ; scaled to it (no exclusive mode switch); 0 = leave the window alone Fullscreen = 1 ; ... and the back buffer takes the monitor's size: a mode smaller than the monitor is not scaled ; up with black bars (16:9 on an ultrawide), the picture is simply wider; 0 = scale the mode up FullscreenNative = 1 ; anti-aliasing: 0/1 off, 2, 4 or 8 = MSAA samples (the back buffer is resolved before present) Msaa = 0 ; texture filtering: 0 = as the game sets it, 2..16 = force anisotropic filtering Anisotropy = 0 ; R8 temporal anti-aliasing of the 3D scene (needs Hdr = 1): smooth edges and no shimmering highlights, ; also inside surfaces. TaaSharpness sharpens the result again (0 = off, 1 = strong). Taa = 1 ; R11 resolution of the 3D scene relative to the screen: above 1 supersampling (sharper, slower), ; below 1 fewer pixels (faster); TAA and the tonemap pass bring it to the screen. 0.5 .. 2. RenderScale = 1.0 TaaSharpness = 0.25 ; REM material maps: normal, roughness, metal and height maps from the material data folder, ; matched by texture name, lit per pixel. MaterialData (below) = that folder; NormalFlipY = 1 ; inverts the green channel if bumps look lit from the wrong side. MaterialMaps = 1 NormalFlipY = 0 ; strength of the normal maps (0 = flat, 1 = as authored) NormalStrength = 0.6 ; depth of the height-map parallax (0 = off, 0.25 = default, 2 = strong) ParallaxStrength = 0.25 ; REM normals: how the height maps give relief. 1 = V1 offset parallax (one sample, cheap; swims at ; grazing angles), 2 = V2 parallax occlusion (the view ray walks through the height field: edges hide ; what lies behind them, stable at grazing angles; more GPU time close up) RemNormals = 2 ; relief of planets, worked out from the brightness of their own texture (0 = flat as the original) PlanetRelief = 1.0 ; R3b REM lighting: 1 = physically based per-pixel light (GGX) on ships, stations, planets and ; base scenes; 0 = the Direct3D 8 lighting of the original. Roughness / metalness per texture from ; materials.json in the material data folder (its DefaultMaterial for the rest), else PbrRoughness / ; PbrMetalness; skinned characters are matt (0.8 / 0). Light in linear space x2. LightScale ; scales sun and lamps. Lighting = 1 PbrRoughness = 0.4 PbrMetalness = 0.9 LightScale = 1.0 ; R6 HDR: the 3D scene in a 16-bit float target, so lights, glows and effects can be brighter ; than white; Bloom adds the glow around everything above BloomThreshold (BloomStrength 0..1). ; Tonemap 0 = REM (the original look, highlights roll off softly), 1 = ACES filmic. Exposure scales ; the scene before the tonemap. Hdr = 1 Bloom = 1 BloomStrength = 0.2 BloomThreshold = 1.0 Tonemap = 0 Exposure = 1.0 ; R13 auto exposure: bright scenes (the sun, glowing nebulae) are exposed down between ExposureMin ; and ExposureMax (1 = never brighter than the original), aiming at an average brightness of ; ExposureKey, adapting at ExposureSpeed (1 / seconds). AutoExposure = 1 ExposureMin = 0.35 ExposureMax = 1.0 ExposureKey = 0.10 ExposureSpeed = 1.5 ; R13 grade: AmbientScale darkens the unlit sides (1 = original), Contrast deepens dark tones ; (1 = off) -- together a darker, more atmospheric space. AmbientScale = 0.6 Contrast = 1.15 ; R5 image based lighting: the environment cube (Textures\NebulaCubeMap.dds in the material data ; folder) gives metal its ; reflections and replaces the flat scene ambient; tinted with the system's ambient light (fog colour ; inside fog). ReflectionStrength scales it. Ao: screen-space ambient occlusion (creases, contact ; shadows) with a world radius AoRadius (metres) and strength AoIntensity. Reflections = 1 ReflectionStrength = 1.0 Ao = 1 AoRadius = 6.0 AoIntensity = 1.0 ; "REM RENDER" overlay top left: frame rate, draws, triangles, vertices, lights, effects Overlay = 1 ; R4 sun shadows in space and space cutscenes (cascaded shadow maps): ShadowMapSize is the atlas ; of the four cascades (2048 / 4096 / 8192), ShadowDistance how far from the camera (metres). Shadows = 1 ShadowMapSize = 4096 ShadowDistance = 3000 ; PlanetShadows = 1: planets also receive the shadows of ships, docking rings and stations PlanetShadows = 0 ; objects up to this many metres outside the picture are still drawn, so their shadows do not ; pop in and out when the camera turns (0 = the original culling) ShadowCullMargin = 400 ; R7 dynamic lights: the blinking lights of stations and ships light their surroundings (the ; nearest 64 to the camera). DynamicLightRange scales their radius, DynamicLightIntensity their ; brightness. DynamicLights = 1 ; R17 weapon lights: laser beams light their surroundings along their length, muzzle flashes, ; projectiles, impacts and explosions as points in the colour of their particles (needs ; DynamicLights = 1). WeaponGlow draws weapon effects brighter for the bloom (1 = original). WeaponLights = 1 WeaponLightIntensity = 1.0 WeaponLightRange = 1.0 WeaponGlow = 1.6 ; R2 debug view (diagnosis from screenshots): 0 off, 1 normals, 2 depth (1 m black .. 130 km ; white), 3 motion vectors (grey = still, magenta = unknown), 4 material class (glass, nomad, ; planet water, engine glow ... one colour each), 5 game object (one colour per object), 6 phase DebugView = 0 ; motion diagnostics in remgfx.log after each statistics line (planet surfaces, own ship, camera): 1 on MotionLog = 0 ; slow frames: a line in remgfx.log for each frame far slower than the running average (new pipelines, ; ray-tracing meshes, textures / buffers created, presenting and Reflex / Anti-Lag wait); 10 per 600 frames at most HitchLog = 1 ; R16 distortion: heat haze behind engines and around explosions, refraction at shield hits and ; cloaks, a swirl in the jump tunnel; Distortion switches all of it, the others scale each kind ; (0 = off). Needs Taa = 1 (it shares the scene's extra targets with the motion vectors). Distortion = 1 HeatHaze = 1.0 ShieldRefraction = 1.0 CloakRefraction = 1.0 TunnelDistortion = 1.0 ; R15 planet atmospheres: light scattering like Earth's (blue rim on the day side, red at the ; terminator, glow against the sun); AtmosphereReplace = 1 hides the planets' original atmosphere ; layer. AtmosphereColor turns that blue to the planet's hue: 1 = the mean colour of its surface ; texture (a desert planet gets an orange rim), 2 = its atmosphere layer's colour (the material's ; Dc), 0 = Earth's blue for every planet. Grey and white planets keep the blue. The layer's Alpha ; sets the strength (a thin layer a weak atmosphere, a black or invisible layer none). ; AtmosphereSaturation = how colourful the turned colour is (1 = as Earth's blue). ; AtmosphereDensity = thickness of the shell (higher = a thicker veil, 1 = the first R15 version) Atmosphere = 1 AtmosphereStrength = 1.0 AtmosphereReplace = 1 AtmosphereColor = 1 AtmosphereSaturation = 1.0 AtmosphereDensity = 0.5 ; R14 soft particles: explosions, smoke and glows fade out where they meet ships and stations ; (over SoftParticleRange metres in front of them) instead of cutting hard edges SoftParticles = 1 SoftParticleRange = 6.0 ; R10 sun light shafts: the sun's glow streaks past stations, ships and asteroids (screen space) SunShafts = 1 SunShaftStrength = 0.6 DynamicLightRange = 1.0 DynamicLightIntensity = 1.0 ; material data folder (normal / material maps, materials.json, environment cube); empty = MATERIALS ; next to the EXE folder, else its former name FLARDATA MaterialData = ; depth-bias units per D3D ZBIAS step (decals, glows) ZBiasScale = 1.0 ; 1: apply the Direct3D 8 half-pixel rasterisation offset (sharp UI); 0: off HalfPixel = 1 ; automated runs: write the back buffer to remgfx_capture_NNNNN.bmp every N frames (0 = off), ; at most CaptureMax files, and exit after ExitAfterFrames presented frames (0 = never) CaptureEvery = 0 CaptureMax = 20 ExitAfterFrames = 0 ; diagnosis: write every draw of frame N (state, material, lights, textures) to remgfx.log DumpFrame = 0