I've removed my post from Reddit, you can't be constructive there.
An ETS2 DLSS mod and ATS DLSS mod: NVIDIA DLAA and DLSS upscaling for Euro Truck Simulator 2 (ETS2) and American Truck Simulator (ATS), on a flat screen and in VR, with Windows HDR support. It replaces the game's own anti-aliasing with DLAA (NVIDIA's native-resolution AA) and can optionally upscale with DLSS so the game renders fewer pixels and the GPU has an easier time.
It installs as a small dinput8.dll proxy in the game folder. No launcher, no
account, no in-game menu — a few hotkeys and an optional text config.
An NVIDIA RTX GPU is required (DLAA and DLSS only run on RTX cards).
Menu: Features · Download · Requirements · Install · Modes · Flat or VR · Render scale · Models · Controls · dlaa.ini · Troubleshooting · Multiplayer · Build · Report a problem · License
- DLAA — NVIDIA anti-aliasing at the game's render resolution. It removes the shimmer and flicker on fences, power lines, road markings and shadows that the game's own AA leaves behind.
- DLSS upscaling — render fewer pixels and let DLSS rebuild the full picture, for more frame rate.
- Flat and VR — one DLL and one
dlaa.inifor both. VR runs one pass per eye (OpenXR). - Windows HDR — works with HDR on in flat mode (new in v0.8.0).
- NVIDIA Smooth Motion — works with the driver's frame generation switched on, in flat mode (new in v0.8.1).
- Drivable cars (ATS) — DLAA / DLSS also runs while you drive a car (new in v0.8.2).
- Menu and truck-preview screens get anti-aliasing too, not only the drive.
- Four DLSS models to pick from, switched live with a key, from light to heavy.
- Adjustable sharpening — strength and width, live.
- DLAA area (VR) — process only the middle of each eye to save GPU time.
- Hotkeys with beeps — made to use blind in a headset; every key can be re-bound in
dlaa.ini. - Bring your own
nvngx_dlss.dll— drop in a newer one at any time to get NVIDIA's newer models. - Small and simple — a single
dinput8.dll. No launcher, no account, no in-game menu. Delete the file to uninstall. - Debug log for bug reports (off by default).
Download the latest release here
— get the .zip under Assets, then follow Install below.
(The green Code button downloads the source code, not the mod.)
This is an unofficial fan project. It is not affiliated with, or endorsed by, SCS Software or NVIDIA. Euro Truck Simulator 2 and American Truck Simulator are trademarks of SCS Software; DLSS and DLAA are trademarks of NVIDIA Corporation.
Status: v0.8.2. Works while you drive a car in ATS (new in v0.8.2). Works with NVIDIA Smooth Motion on in flat mode (new in v0.8.1). Windows HDR works in flat mode (since v0.8.0). DLAA has been run in ETS2 (VR) and ATS (flat and VR). The DLSS upscaling path (render below native, reconstruct up) runs in VR but is still being tuned. Treat upscaling as experimental.
- Euro Truck Simulator 2 or American Truck Simulator (64-bit, DirectX 11).
- An NVIDIA RTX GPU with a current driver.
nvngx_dlss.dll— the NVIDIA DLSS runtime. This mod does not ship it; see Install below.- For VR: an OpenXR runtime (for example Virtual Desktop), launched with the game's
-openxroption.
-
Make a backup of the game's
bin\win_x64\folder first. -
Download the latest release zip and unzip it.
-
Find the game's executable folder, e.g.
...\steamapps\common\Euro Truck Simulator 2\bin\win_x64\(or...\American Truck Simulator\bin\win_x64\). -
Remove any other proxy mod first. Only one
dinput8.dll/dxgi.dllproxy can load — delete any other mod'sdinput8.dllordxgi.dllfrom that folder before continuing. -
Copy
dinput8.dllintobin\win_x64\. Optionally also copydlaa.inithere to change settings or keys (see below) — it is not required. -
Add the NVIDIA DLSS runtime yourself. This mod ships no NVIDIA files. Put your own
nvngx_dlss.dllin the samebin\win_x64\folder, next todinput8.dll. You can get it from:- the NVIDIA DLSS SDK on GitHub — https://github.com/NVIDIA/DLSS, file
lib/Windows_x86_64/rel/nvngx_dlss.dll, or - any game that already ships
nvngx_dlss.dll(copy that file).
You can drop in a newer
nvngx_dlss.dllat any time to update the DLSS model — just replace the file. - the NVIDIA DLSS SDK on GitHub — https://github.com/NVIDIA/DLSS, file
-
Launch the game. DLAA starts on. No log file is written unless you set
debug = 1indlaa.ini(see Troubleshooting).
To uninstall, delete dinput8.dll (and dlaa.ini) from bin\win_x64\.
Press End in game (no modifier) to cycle the mode. The choice is saved to
dlaa.ini immediately and used again next launch.
| Mode | What it does | Beep |
|---|---|---|
| DLAA | NVIDIA AA at the game's render resolution; the game stretches the result to the output size | 1 high beep |
| DLSS | NVIDIA reconstructs from the render resolution up to the output size (upscaling) | 2 high beeps |
| off | the game's own picture, no injection | 1 low beep |
At 100 % render scale DLAA and DLSS produce the same picture; the difference only shows once you render below native (see render scale below).
The mod reads the game's launch options at start. With -openxr or -oculus it runs in VR mode
(one DLAA / DLSS pass per eye; the desktop mirror window is left alone). Without them it runs in flat mode.
The log says which: launch mode: VR or launch mode: FLAT. One dlaa.ini serves both.
If the launch options say VR but no headset session starts (the game then runs on the monitor), the mod
notices after about one second of driving and switches to flat mode by itself (launch mode FALLBACK in the log).
The game renders the 3-D scene at r_scale_x × r_scale_y of the output size and
then stretches it up. In DLSS mode this injector replaces that stretch with DLSS
reconstruction, so lowering the render scale buys performance with little quality
loss.
Set both r_scale_x and r_scale_y (game closed) in
Documents\Euro Truck Simulator 2\config.cfg (or Documents\American Truck Simulator\config.cfg), e.g. uset r_scale_x "0.667" and uset r_scale_y "0.667":
| DLSS mode | r_scale_x = r_scale_y |
pixels rendered |
|---|---|---|
| Quality | 0.667 |
~44 % |
| Balanced | 0.58 |
~34 % |
| Performance | 0.5 |
~25 % |
The injector picks the matching DLSS quality level automatically from the ratio. In DLAA mode the render scale just sets the resolution DLAA runs at (no upscaling).
VR: the per-eye output size is set by the game's VR supersampling cvar
r_manual_stereo_buffer_scale (and your headset/runtime resolution); r_scale_x /
r_scale_y then shrink the render below that eye size for DLSS to reconstruct back
up to it.
A "model" (NVIDIA calls it a render preset) is the neural network that cleans
the picture. All of them remove jagged edges; they differ in how sharp and stable
the result is and in how much GPU time they cost. Switch live with
Shift+F1..F4 (1 to 4 beeps), look for a few seconds, then save your choice
with Shift+F12.
| Key | Model | In one line | Cost |
|---|---|---|---|
Shift+F1 |
1 (default, preset K) |
Best detail | High |
Shift+F2 |
2 (preset E) |
Good picture, fast. Start here | Low |
Shift+F3 |
3 (preset F) |
Smoothest edges, but can smear moving detail | Low |
Shift+F4 |
4 (preset M) |
Very heavy. Flat screen only | Very high |
Scaling is the game's own slider: Options → Graphics → Scaling. Stereo
buffer scale is VR only and is not in the menu: with the game closed, set
uset r_manual_stereo_buffer_scale "1.5" (for example) in config.cfg.
| Your setup | Mode (End) |
Model | Scaling (in game) | Stereo buffer scale |
|---|---|---|---|---|
| Flat, strong card | DLAA | 1 | 100 % | not used |
| Flat, need more frame rate | DLSS | 1 or 2 | 75 % (or 50 %) | not used |
| VR, top-end card | DLAA | 2 | 100 % (75 % if the frame rate drops) | 2.0 |
| VR, mid-range card | DLSS | 2 | 75 % | 1.0 to 1.5 |
- Flat: do not set Scaling above 100 %. The mod already removes the jagged edges, so extra pixels only cost frame rate.
- VR: the stereo buffer scale is what makes the picture sharp;
1.0is the headset's own resolution, higher is sharper and heavier. Raise it as far as your card allows, then use Scaling below 100 % with DLSS mode to win the frame rate back. - Scaling below 100 % only makes sense in DLSS mode. In DLAA mode the game just stretches the smaller picture and it looks soft.
- The slider has fixed steps. Values in between (for example
0.667) can be set inconfig.cfg, see How render scale works above. - These are starting points. Only the "VR, top-end card" row is measured: model 2
holds a steady 72 fps at stereo buffer scale 2.0 with
r_scale_x0.75. Watch your own frame rate and move one step up or down.
How to pick a model:
- Start with model 2. Drive for a minute. Watch thin things in the distance: power lines, fences, lamp posts, road markings.
- Frame rate is still fine and you want more detail? Try model 1. If the
frame rate drops (in VR: stutter or reprojection), go back to 2 — or, in VR,
make the DLAA area smaller with
Shift+F5so model 1 only works on the middle of the view. - Still shimmer on model 2? Try model 3. If the road or fences look smeared while moving, go back to 2.
- Press
Shift+F12to save.
What to expect:
- No model makes the picture sharper than what the game renders. They remove
crawling and flicker on edges. If the picture is soft, raise the render scale
(see above) or the sharpening (
Shift+F7/F8); do not look for a "sharper model". - Cost grows with resolution. As an example, on a top-end card at a very high VR resolution (about 4600 × 6500 per eye) we measured per eye: model 2 and 3 about 1 ms, model 1 about 2.5 ms, model 4 about 9 ms. At 72 Hz a frame has 14 ms in total, for both eyes and the game. On a flat 1440p or 4K screen all of them are much cheaper.
- Things that move on their own (traffic, wheels, wipers) can show a little ghosting with any model. The mod knows how the camera moves, not how each object moves.
- A model change takes one short hitch (a few hundredths of a second) while the new network loads.
- The menu and truck-preview screens always use model 2. The model keys only change the picture while driving.
- Which models exist depends on the
nvngx_dlss.dllyou installed.EandFare older models that newer DLSS files may drop one day; if a model cannot be created the mod falls back to model 1 by itself. More letters (J,L) can be set withdlss_presetindlaa.ini. - The same model is used in DLAA and DLSS mode. The mode (
Endkey) decides what resolution the model works from; the model decides how it cleans the picture.
Every key can be changed. Open dlaa.ini, find the key_... line for the
action and edit the key, e.g. key_dlaa_toggle = Ctrl+D (or none to turn it
off). Restart the game. Full list: docs/KEYS.md.
By default every control except End is an F-key with one modifier, so it can be used
blind in a headset. The game window must be focused. Shift + F-key = the keys you
use while playing; Ctrl + F-key are debug keys (see docs/KEYS.md
for the full sheet).
| Default key | Action |
|---|---|
End |
Cycle mode: DLAA → DLSS → off (saved) |
Shift+F1..F4 |
DLAA model / preset: 1 = default (driver pick), 2 = E, 3 = F, 4 = M |
Shift+F5 / F6 |
DLAA area − / + 10 % (shrinks the processed region; VR only, flat always uses the whole picture) |
Shift+F7 / F8 |
Sharpening strength − / + 0.1 |
Shift+F9 / F10 |
Sharpening width − / + 0.5 |
Shift+F11 |
DLAA on / off |
Shift+F12 |
Save the current preset / area / sharpening / upscale settings to dlaa.ini |
Each key beeps to confirm (pitch tracks the value); a long low tone means "already
at the limit" or "save failed". Turn beeps off with beeps = 0 in dlaa.ini.
Optional, placed next to dinput8.dll. One key = value per line; # or ; start
a comment. It is read once at launch (the config (...) line in the log shows what
was used). The full template with every key and its default is in
docs/dlaa.ini.sample. The keys most users care about:
| key | default | meaning |
|---|---|---|
mode |
(set by End) |
start mode: 1 DLAA, 2 DLSS, 0 off |
dlss_upscale |
1 |
1 = allow DLSS upscaling when the render scale is below 1; 0 = DLAA only |
dlss_preset |
default |
DLSS model: default, J, K, L, M, E, F |
sharpness |
0.4 |
sharpening after DLAA, 0..1 (0 = off) |
sharp_radius |
1.5 |
sharpening width in texels, 1..4 |
dlaa_area |
100 |
run DLAA on the centre N % of each eye image (VR performance), 40..100. VR only: in flat mode the whole picture is always used |
preview_dlaa |
1 |
1 = also anti-alias the profile / truck-preview screen (flat and VR); 0 = leave that screen untouched. VR at eye resolution needs a lot of GPU memory and time there, turn it off if that screen stutters. That screen always uses model 2 (preset E); the model keys change the drive only |
jitter_sign_x / jitter_sign_y |
1 |
flip if the image shimmers or looks doubled (try the 4 combinations) |
dlss_hdr |
1 |
HDR only: 1 = tell DLSS the picture is HDR (normal); 0 = try this if HDR brightness or colours look wrong with DLAA on |
beeps |
1 |
0 = silence the hotkey beeps |
key_<action> |
(see KEYS.md) | re-bind any hotkey, e.g. key_dlaa_toggle = Ctrl+D, or none to disable it. Full list and format: docs/KEYS.md |
debug |
0 |
1 = write the log file dlaa_inject.log (off by default) |
- The log is off by default. Put
debug = 1indlaa.ini(next todinput8.dll) and start the game again:dlaa_inject.logis then written next to the DLL. It records the version, which hooks installed, and whether DLAA/DLSS started. It is opened share-read, so you can tail it while the game runs. Check it first. - Game won't start: the
bin\win_x64\folder may be read-only (run a Steam "verify files" and it reverts), or antivirus may have quarantined the unsigned DLL. Adxgi.dll/dinput8.dllfrom another mod still present will also conflict. - No DLAA, or a crash referencing NGX/DLSS:
nvngx_dlss.dllis missing or too old — add or update it (see Install step 6). - Windows HDR: supported from v0.8.0 in flat mode (driving and the menu / truck-preview screen). Older
versions do nothing with HDR on (the log shows
blits=0): update. If brightness or colours change when you switch DLAA on and off in HDR, putdlss_hdr = 0indlaa.iniand report it. - NVIDIA Smooth Motion: supported from v0.8.1 in flat mode (driving and the menu / truck-preview
screen). Older versions do nothing with Smooth Motion on (the log shows
passes=0 blits=0andcaller=NvPresent64.dll): update. Smooth Motion only adds frames on the monitor; it does nothing for the headset picture in VR, so switch it off for VR. - Faint dark line down the middle of the menu / truck-preview screen: fixed in v0.8.1: update.
- No DLAA / DLSS while you drive a car (ATS): fixed in v0.8.2: update. Older versions work in the menu
but do nothing in the car (the log shows many
fifo underflowlines). - No log file with
debug = 1: the line must not start with#. From v0.8.2 the packageddlaa.inihas a plaindebug = 0line: change the 0 to 1. - Start with DLAA off (detect + log only): put an empty file named
dlaa_off.txtnext todinput8.dllbefore launch.Shift+F11/Endstill switch it on. - Shimmering / doubled image: flip
jitter_sign_x/jitter_sign_yindlaa.ini(4 combinations). - Uninstall: delete
dinput8.dll(anddlaa.ini).
ETS2/ATS single-player has no anti-cheat, so this works fine there. TruckersMP and Convoy multiplayer have their own rules about third-party DLLs — check what each allows before using it online.
Visual Studio 2022 (MSVC, x64) and CMake ≥ 3.20. MinHook is fetched automatically by CMake (needs git + internet on the first configure). DLAA is compiled in when the NVIDIA DLSS SDK is present:
git clone --depth 1 https://github.com/NVIDIA/DLSS external/DLSS
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config ReleaseOutput: build/Release/dinput8.dll. Without external/DLSS the build is a
logging-only injector (no DLAA). scripts/package.ps1 builds Release and assembles
the release zip. Architecture and internals: docs/DEVELOPMENT.md.
If something goes wrong, open an issue (New issue > Bug report) and attach the files below. Without the log I usually can't tell what happened.
Steps first: put debug = 1 in dlaa.ini (the log is off without it), start the game, reproduce the problem, then quit the game and
only then collect the files. Load a save and drive for about a minute before quitting, so the log covers the 3D scene and not just the menu. The log is written while the game runs, so grab it after
the game has exited (or at least after the problem has happened).
Files to attach — all of them live in the game's bin\win_x64\ folder, next to
dinput8.dll, e.g.
...\steamapps\common\Euro Truck Simulator 2\bin\win_x64\ or
...\steamapps\common\American Truck Simulator\bin\win_x64\:
dlaa_inject.log— required, always. It only exists whendlaa.inihasdebug = 1; if there is no log file, that line is missing.dlaa.ini— required (your settings).- Only when asked, or for visual problems:
dlaa_trace.txt— frame trace, written after you pressCtrl+F11in game.dlaa_selftest\folder —Ctrl+F9dumps lossless BMPs there. Zip the folder.dlaa_snap\folder —Ctrl+F10writes an NGX input snapshot there. Zip the folder.
- A screenshot or short video of the problem. Video compression hides anti-aliasing
detail, so for AA-quality problems the
Ctrl+F9self-test files are far more useful. - Game
config.cfglinesr_scale_x,r_scale_yandr_manual_stereo_buffer_scale, or just the whole file — fromDocuments\Euro Truck Simulator 2\config.cfgorDocuments\American Truck Simulator\config.cfg.
Write in the issue:
- Game (ETS2 or ATS) and game version.
- Mod version — near the top of the log:
=== ETS2/ATS DLAA injector v<version> loaded ... ===. - Flat or VR (the log line
launch mode: FLAT/launch mode: VRshows what the mod detected) and your game launch options; if VR, the headset and runtime (e.g. Quest 3 via Virtual Desktop / VDXR). - GPU and driver version.
nvngx_dlss.dllversion (right-click > Properties > Details).- Mode in use (
Endkey: DLAA / DLSS / off) and the model (Shift+F1..F4). - Other mods or injectors in the folder (ReShade, any other
dinput8.dll/dxgi.dll). - Steam overlay on or off.
Privacy: the log can contain folder paths with your Windows user name. Open it and check (or edit it) before uploading.
Never attach nvngx_dlss.dll or any other NVIDIA DLL — their license doesn't allow
redistribution. Just give the version number.
This mod — PolyForm Noncommercial License 1.0.0, Copyright (c) 2026 JRDevo.
- Free to use, copy, change and share for noncommercial purposes.
- No commercial use (no selling, no paid bundles) without written permission.
- If you share it, include the license and the copyright notice.
- No warranty: you use it at your own risk.
Third-party parts — each has its own terms, see THIRD_PARTY.md:
| Part | License | Shipped with this mod? |
|---|---|---|
| MinHook (function hooking) | BSD 2-Clause | Compiled into dinput8.dll |
| NVIDIA DLSS / NGX SDK | NVIDIA RTX SDK license (proprietary) | Only the small SDK link stub inside dinput8.dll. No NVIDIA DLL — you supply your own nvngx_dlss.dll |
| RCAS sharpening method (AMD FidelityFX FSR 1.0) | MIT | Own implementation of the published method |
Unofficial fan project: not affiliated with, or endorsed by, SCS Software, NVIDIA or AMD.