Repository navigation
Releases: xenmods/DLSSNR-Cost-Scaler
Release list
v1.0.6 DLSSNR Cost Scaler
DLSSNR-Cost-Scaler is a standalone DirectX 12 proxy for NVIDIA DLSS-NR (nvngx_dlssnr.dll) that decouples neural model resolution from display resolution.
Highlights
- Resolution Scaling & Cost Slider: Run internal DLSS-NR model reconstruction from 25% to 200% of native resolution (from high-performance sub-sampling down to 4K Super-Sampling / SSAA).
- Zero-Overhead Dynamic FPS Scale Governor: Automatically adjusts internal neural resolution in discrete 5% tiers to lock in your target framerate (30–240 FPS) with instant slot caching and zero idle VRAM overhead.
- Frame Generation Target Mode: Target final displayed framerates directly when using 2x, 3x, or 4x frame generation.
- Anamorphic / Asymmetric Neural Scaling: Scale horizontal and vertical axes independently (e.g. 0.65x X / 0.85x Y) for ~45% neural cost reduction with near-native vertical clarity and flat, stutter-free frame pacing.
- Matched Residual Resolve: Composites the neural lighting delta back onto the untouched 1:1 native frame, preventing upscale blur on geometry, textures, and UI.
- Chromaticity-Preserving Color Control: Strips neural color casts without chalky or pastel desaturation, keeping native scene contrast and vibrant saturation intact.
- Depth-Aware Bilateral Silhouette Preservation: Uses the native depth buffer to guard geometric boundaries, preventing low-resolution neural radiance from bleeding across character or vehicle silhouettes.
- Hardware TMU & LDS Acceleration: Downsampling runs directly on GPU texture units, and RCAS runs in on-chip Local Data Share (LDS) for ~69% fewer global VRAM reads.
- Color & HDR Support: Full compatibility with SDR, HDR10 PQ, scRGB (FP16), and true native UAV support for 3-channel HDR (
R11G11B10_FLOAT). - Live INI Hot-Reloading & Companion Overlay: Full bidirectional sync between
nvngx_dlssnr.iniand the ReShade companion UI (dlssnr-companion.addon64). - Silent Hotkeys:
Ctrl + Alt + Space— Toggle proxy ON / OFFCtrl + Alt + End— Toggle Matched Residual vs BilinearCtrl + Alt + PageUp/PageDown— Adjust scale by ±5%
Quick Install
- IMPORTANT: Rename the original
nvngx_dlssnr.dllin your game directory tonvngx_dlssnr_real.dll. - Extract
nvngx_dlssnr.dllandnvngx_dlssnr.inifrom the zip below into the same directory. - (Optional for ReShade users): Copy
dlssnr-companion.addon64into your game directory to get an in-game tuning overlay under the ReShade Home menu.
What's Changed in v1.0.6
- Zero-Overhead Dynamic FPS Scale Governor:
- Automatically shifts internal neural resolution in discrete 5% stepped tiers to maintain your target framerate budget (
TargetFps, 30 to 240 FPS). - Asymmetric Hysteresis State Machine: Prompt step-down after 1.0s sustained deficit (<0.95x target) to rescue dips quickly; patient step-up after 3.0s sustained surplus (>1.15x target) with a configurable dwell cooldown (
HysteresisSec = 2.0s) to eliminate scale oscillation. - Spike & Outlier Protection: Rolling EWMA frame timer filters out transient loading screens, pause menus, and alt-tab spikes (>80ms) so the governor never false-triggers.
- Lazy Zero-Stutter Slot Caching: Caches visited resolution tiers across existing slots; switching between visited tiers is an instantaneous 0.00ms pointer swap with zero feature-recreation hitches.
- Zero Idle VRAM Penalty: When the governor is OFF, only 1 slot is ever allocated (0 MB extra VRAM). Toggling the governor off immediately flushes secondary cached slots back to baseline.
- Automatically shifts internal neural resolution in discrete 5% stepped tiers to maintain your target framerate budget (
- Frame Generation Target Mode (
EnableFgMode&FgMultiplier):- Built-in multiplier compensation for frame generation setups (NVIDIA DLSS-G, AMD FSR 3 FG, Lossless Scaling, RenoDX MFG Unlock).
- Allows targeting final perceived framerate (e.g. 120 FPS or 240 FPS) — the proxy automatically computes the required base engine framerate (
TargetFps / FgMultiplier) so your game never underscales. - Added clean quick-preset buttons in companion UI:
[2x](DLSS-G / FSR 3),[3x], and[4x](AFMF / Lossless Scaling / MFG).
- Chromaticity-Preserving Color Control:
- Refactored
CS_Resolveto use safe proportional luminance scaling when adjustingColorStrength. - Setting
ColorStrength = 0.00now cleanly removes neural color/temperature tints without introducing chalky, washed-out pastel desaturation, while safeguarding against division-by-zero on HDR highlights.
- Refactored
- Uniform Super-Sampling Pipeline Fix:
- Resolved an issue where uniform 150% and 200% scales bypassed the scaled neural reconstruction pipeline.
- Companion UI & Live Telemetry Polish:
- Dynamic Resolution slider now reflects live governor scaling in real-time with an active
[GOVERNOR: XX%]badge. - Dedicated Governor section featuring real-time FPS/frametime readouts, state badges (
[STABLE],[COOLDOWN],[STEPPING DOWN],[STEPPING UP]), and performance headroom metering. - Extended clipboard diagnostics to export governor state, active slots, and target metrics.
- Dynamic Resolution slider now reflects live governor scaling in real-time with an active
v1.0.5 DLSSNR Cost Scaler
DLSSNR-Cost-Scaler is a standalone DirectX 12 proxy for NVIDIA DLSS-NR (nvngx_dlssnr.dll) that decouples neural model resolution from display resolution.
Highlights
- Resolution Scaling & Cost Slider: Run internal DLSS-NR model reconstruction from 25% to 200% of native resolution (from high-performance sub-sampling down to 4K Super-Sampling / SSAA).
- Anamorphic / Asymmetric Neural Scaling: Scale horizontal and vertical axes independently (e.g. 0.65x X / 0.85x Y) for ~45% neural cost reduction with near-native vertical clarity and flat, stutter-free frame pacing.
- Matched Residual Resolve: Composites the neural lighting delta back onto the untouched 1:1 native frame, preventing upscale blur on geometry, textures, and UI.
- Depth-Aware Bilateral Silhouette Preservation: Uses the native depth buffer to guard geometric boundaries, preventing low-resolution neural radiance from bleeding across character or vehicle silhouettes.
- SEH Crash Shield: Hardware exception protection prevents crashes from third-party injector addons (
renodx-mfgunlock.addon64, ReShade hooks) reading non-standard memory segments. - Hardware TMU & LDS Acceleration: Downsampling runs directly on GPU texture units, and RCAS runs in on-chip Local Data Share (LDS) for ~69% fewer global VRAM reads.
- Color & HDR Support: Full compatibility with SDR, HDR10 PQ, scRGB (FP16), and true native UAV support for 3-channel HDR (
R11G11B10_FLOAT). - Dynamic Subrects & Multi-Pass: Preserves viewport offsets for games using Dynamic Resolution Scaling (DRS) and eliminates shimmering in chained multi-pass pipelines.
- Live INI Hot-Reloading & Companion Overlay: Full bidirectional sync between
nvngx_dlssnr.iniand the ReShade companion UI (dlssnr-companion.addon64). - Silent Hotkeys:
Ctrl + Alt + Space— Toggle proxy ON / OFFCtrl + Alt + End— Toggle Matched Residual vs BilinearCtrl + Alt + PageUp/PageDown— Adjust scale by ±5%
Quick Install
- IMPORTANT: Rename the original
nvngx_dlssnr.dllin your game directory tonvngx_dlssnr_real.dll. - Extract
nvngx_dlssnr.dllandnvngx_dlssnr.inifrom the zip below into the same directory. - (Optional for ReShade users): Copy
dlssnr-companion.addon64into your game directory to get an in-game tuning overlay under the ReShade Home menu.
What's Changed in v1.0.5
-
Anamorphic / Asymmetric Neural Scaling (Stutter-Free Widescreen Optimization):
- Added independent Horizontal (
$X$ ) and Vertical ($Y$ ) resolution scaling (EnableAnamorphic,ResolutionScaleX,ResolutionScaleY). - Decoupling axes on 16:9/widescreen displays (e.g. 0.65x Horizontal
$\times$ 0.85x Vertical) yields ~45% neural cost reduction while retaining 85% vertical edge acuity to avoid horizontal line crawl. - Flat, Stutter-Free Frame Pacing: Unlike alternating-frame techniques (VRNR) that produce 30Hz sawtooth pacing fluctuations, anamorphic scaling evaluates every single frame at an identical cost, ensuring rock-solid frame delivery with zero micro-stutter.
-
Independent Motion Vector Scaling:
DLSSNR.MVecScaleXandDLSSNR.MVecScaleYare dynamically scaled per-axis (workW / nativeW,workH / nativeH), completely eliminating motion smear during fast pans and driving. - Added companion UI controls: toggle checkbox, dual sliders, live neural load feedback, and quick presets (Widescreen 0.65x/0.85x, Ultra-Perf 0.50x/0.75x, Quality 0.80x/0.90x).
- Added independent Horizontal (
-
Super-Sampling Support (0.25x – 2.00x / 4K SSAA & Photo Mode):
- Expanded internal resolution scaling from
0.25x - 1.00xup to2.00x(200% Super-Sample / 4x pixel sample density). - Enables DLDSR-grade neural reconstruction and extreme fidelity capture for photo modes and high-end GPUs.
- Added quick presets in the companion UI:
150% (Photo Mode)and200% (4K SSAA).
- Expanded internal resolution scaling from
-
SEH Crash Shield (Addon & Injector Interop):
- Integrated Structured Exception Handling (
__try/__except) into the proxy hook inspector (HookSnippetCallerCheck). - Shields against memory access violations (
0xC0000005) caused by third-party hook injectors (such asrenodx-mfgunlock.addon64or custom loader stubs) executing from non-standard memory segments or unmapped code pages during launch.
- Integrated Structured Exception Handling (
-
Depth-Aware Bilateral Silhouette Preservation:
- Bound native depth buffers into
CS_Resolveto detect geometric silhouettes. - Attenuates neural radiance bleeding across object edges, keeping foreground contours (weapons, vehicles, hair) razor-sharp against distant backgrounds.
- Added runtime dimension checks: gracefully falls back to a neutral dummy buffer if depth dimensions mismatch the backbuffer, preventing GPU device removals.
- Bound native depth buffers into
-
D3D12 UAV Format Compatibility Overhaul:
- Corrected format remapping for
R11G11B10_FLOAT(32 bpp) to natively support UAV creation without illegal 64-bit cross-casting. - Guarantees zero
DXGI_ERROR_INVALID_CALL/DXGI_ERROR_DEVICE_REMOVEDcrashes on modern HDR pipelines and RenoDX hooks.
- Corrected format remapping for
-
G-Buffer & Subrect Auto-Synchronization:
- Automatically queries and synchronizes
DLSSNR.InputWidth/Height,DLSSNR.OutputWidth/Height, andDepthSubrect/MVecSubrectto match working resolutions, preventing internal NGX kernel assertion failures when G-buffers are supplied.
- Automatically queries and synchronizes
-
Diagnostics & Companion Polish:
- Clipboard diagnostics and telemetry now output explicit anamorphic dimensions and neural load calculations.
v1.0.4 DLSSNR Cost Scaler
DLSSNR-Cost-Scaler is a standalone DirectX 12 proxy for NVIDIA DLSS-NR (nvngx_dlssnr.dll) that decouples neural model resolution from display resolution.
Highlights
- Resolution Scaling & Cost Slider: Run internal DLSS-NR model reconstruction from 25% to 100% of native resolution for substantial performance savings.
- Matched Residual Resolve: Composites the neural lighting delta back onto the untouched 1:1 native frame, preventing upscale blur on geometry, textures, and UI.
- Hardware TMU & LDS Acceleration: Downsampling runs directly on GPU texture units, and RCAS runs in on-chip Local Data Share (LDS) for ~69% fewer global VRAM reads.
- Color & HDR Support: Full compatibility with SDR, HDR10 PQ, scRGB (FP16), and auto-bridging for 3-channel HDR (
R11G11B10_FLOAT). - Dynamic Subrects & Multi-Pass: Preserves viewport offsets for games using Dynamic Resolution Scaling (DRS) and eliminates shimmering in chained multi-pass pipelines.
- Live INI Hot-Reloading & Companion Overlay: Full bidirectional sync between
nvngx_dlssnr.iniand the ReShade companion UI (dlssnr-companion.addon64). - Silent Hotkeys:
Ctrl + Alt + Space— Toggle proxy ON / OFFCtrl + Alt + End— Toggle Matched Residual vs BilinearCtrl + Alt + PageUp/PageDown— Adjust scale by ±5%
Quick Install
- IMPORTANT: Rename original
nvngx_dlssnr.dllin your game directory tonvngx_dlssnr_real.dll. - Extract
nvngx_dlssnr.dllandnvngx_dlssnr.inifrom the zip below into the same directory. - (Optional for ReShade users): Copy
dlssnr-companion.addon64into your game directory to get an in-game tuning overlay under the ReShade Home menu.
What's Changed in v1.0.4
- Caller Parameter Passthrough by Default (OptiScaler & RenoDX Compatibility):
- The proxy no longer stomps upstream DLSS-NR parameters set by callers like OptiScaler or RenoDX. Whatever you configure in OptiScaler's GUI, RenoDX, or game menus flows directly into NVIDIA's neural engine untouched.
- Added
UseCustomSettings = 0(default) under[DLSSNR_Settings]. - Added an "Override Caller NR Settings" checkbox in the ReShade companion UI with automatic control dimming (
ImGui::BeginDisabled), allowing you to opt into proxy-side overrides only when desired.
- Hardware Bilinear TMU Downsampling (
CS_Downsample):- Replaced manual 4-tap ALU box filter math with single-cycle GPU Texture Management Unit (TMU) sampling via static linear clamp samplers (
s0), cutting shader register pressure and ALU overhead.
- Replaced manual 4-tap ALU box filter math with single-cycle GPU Texture Management Unit (TMU) sampling via static linear clamp samplers (
- LDS On-Chip Tile Caching (
CS_Resolve):- Integrated 1.2 KB of Local Data Share (LDS) per threadgroup into the matched residual resolve pass.
- RCAS contrast-adaptive cross-sampling now reads from on-chip shared memory instead of redundant global VRAM transactions, dropping memory requests by ~69%.
- In-Place Resolve & VRAM Footprint Reduction:
- In engines and integrations where the output buffer already exposes an Unordered Access View (UAV), the resolve compute pass writes directly to the backbuffer without allocating intermediate full-res scratch textures.
- Saves 66 MB to 132 MB of physical VRAM per active feature slot.
- D3D12 Stability & Crash Prevention:
- Remapped typeless depth stencil formats (
D32_FLOAT,R32_TYPELESS,R24G8,D16) to valid readable shader resource views (SRVs) and added strict dimension/format validation. - Prevents
DXGI_ERROR_DEVICE_REMOVED/DXGI_ERROR_INVALID_CALLcrashes across complex mod configurations.
- Remapped typeless depth stencil formats (
- Diagnostics & Telemetry Polish:
- The ReShade companion UI now displays real-time telemetry (color formats, active slots, G-buffer dimensions, caller passthrough status).
- Added a "Copy Debug Info to Clipboard" button for instant troubleshooting and bug reporting.
v1.0.3 DLSSNR Cost Scaler
DLSSNR-Cost-Scaler is a standalone DirectX 12 proxy for NVIDIA DLSS-NR (nvngx_dlssnr.dll) that decouples neural model resolution from display resolution.
Highlights
- Resolution Scaling & Cost Slider: Run internal DLSS-NR model reconstruction from 25% to 100% of native resolution for substantial performance savings.
- Matched Residual Resolve: Composites the neural lighting delta back onto the untouched 1:1 native frame, preventing upscale blur on geometry, textures, and UI.
- Color & HDR Support: Full compatibility with SDR, HDR10 PQ, scRGB (FP16), and auto-bridging for 3-channel HDR (
R11G11B10_FLOAT). - Dynamic Subrects: Preserves viewport offsets for games using Dynamic Resolution Scaling (DRS).
- Live INI Hot-Reloading: Changes to
nvngx_dlssnr.iniapply in-game within 1 second. - Silent Hotkeys:
Ctrl + Alt + Space— Toggle proxy ON / OFFCtrl + Alt + End— Toggle Matched Residual vs BilinearCtrl + Alt + PageUp/PageDown— Adjust scale by ±5%
Quick Install
- IMPORTANT: Rename original
nvngx_dlssnr.dllin your game directory tonvngx_dlssnr_real.dll. - Extract
nvngx_dlssnr.dllandnvngx_dlssnr.inifrom the zip below into the same directory. - (Optional for ReShade users): Copy
dlssnr-companion.addon64into your game directory to get an in-game tuning overlay under the ReShade Home menu.
What's Changed in v1.0.3
- Stability & Crash-Proof Bypass:
- Toggling proxy on/off or scaling to 100% native no longer triggers
DXGI_ERROR_DEVICE_HUNG / DXGI_ERROR_DEVICE_REMOVED. All slots pass through cleanly without destroying cached features mid-execution. - Increased feature and texture retirement latency to a safe 64-frame buffer, guaranteeing GPU command queues are fully drained before freeing resources.
- Toggling proxy on/off or scaling to 100% native no longer triggers
- VRAM Leak & Stutter Fix:
- Moving the Resolution Scale slider now commits only when you release the mouse or click quick presets, preventing dozens of concurrent neural model recreations.
- Fixes the 16 GB VRAM runaway and 4–5 FPS drops when adjusting resolution in-game.
- Multi-Pass Denoising Support:
- Fixed pipeline flickering in chained multi-pass DLSS-NR integrations.
- Color Strength Control (Closes #5):
- Added a dedicated
ColorStrengthslider (0.00to1.00) in both the ReShade companion UI andnvngx_dlssnr.ini. - Decomposes neural edits into luminance vs chroma, allowing you to completely eliminate neural color/tint shifts while retaining full ray reconstruction lighting and detail.
- Added a dedicated
- DirectX 11 / G-Buffer Subrect Sync (Closes #4):
- Fixed startup crash in The Elder Scrolls Online and other RenoDX titles using
R11G11B10_FLOATand native-res G-buffers (Depth,MVec) by properly feeding subrect bounds and format-matched UAVs.
- Fixed startup crash in The Elder Scrolls Online and other RenoDX titles using
- Bidirectional Config Sync:
nvngx_dlssnr.iniis now the true single source of truth: modifying values on disk updates the ReShade companion UI live on the fly, and companion UI edits flush directly to disk.
v1.0.2 DLSSNR Cost Scaler
DLSSNR-Cost-Scaler is a standalone DirectX 12 proxy for NVIDIA DLSS-NR (nvngx_dlssnr.dll) that decouples neural model resolution from display resolution.
Highlights
- Resolution Scaling & Cost Slider: Run internal DLSS-NR model reconstruction from 25% to 100% of native resolution for substantial performance savings.
- Matched Residual Resolve: Composites the neural lighting delta back onto the untouched 1:1 native frame, preventing upscale blur on geometry, textures, and UI.
- Color & HDR Support: Full compatibility with SDR, HDR10 PQ, scRGB (FP16), and auto-bridging for 3-channel HDR (
R11G11B10_FLOAT). - Dynamic Subrects: Preserves viewport offsets for games using Dynamic Resolution Scaling (DRS).
- Live INI Hot-Reloading: Changes to
nvngx_dlssnr.iniapply in-game within 1 second. - Silent Hotkeys:
Ctrl + Alt + Space— Toggle proxy ON / OFFCtrl + Alt + End— Toggle Matched Residual vs BilinearCtrl + Alt + PageUp/PageDown— Adjust scale by ±5%
Quick Install
- Rename original
nvngx_dlssnr.dllin your game directory tonvngx_dlssnr_real.dll. - Extract
nvngx_dlssnr.dllandnvngx_dlssnr.inifrom the zip below into the same directory. - (Optional for ReShade users): Copy
dlssnr-companion.addon64into your game directory to get an in-game tuning overlay under the ReShade Home menu.
What's Changed in v1.0.2
- ReShade Companion Addon (
dlssnr-companion.addon64):- Added an in-game configuration overlay tab under the ReShade Home menu.
- Tune resolution scale, sharpness, transfer strength, and resolve modes live in real time without alt-tabbing.
- In-game hotkey rebinding directly through the menu.
- AMD RCAS Sharpening Fix:
- Resolved an inverted clamp issue in the shader that was suppressing RCAS weighting to zero.
- Overhauled with contrast-adaptive unsharp masking to enhance fine textures while preventing halos on specular highlights.
- Smart Fallbacks:
- Out-of-the-box defaults now automatically fall back to
0.75scale and0.20sharpness even ifnvngx_dlssnr.iniis missing from the folder.
- Out-of-the-box defaults now automatically fall back to
v1.0.1 DLSSNR Cost Scaler
Standalone DirectX 12 proxy for NVIDIA DLSS-NR (nvngx_dlssnr.dll) that decouples neural model resolution from display resolution.
Highlights
- Resolution Scaling & Cost Slider: Run internal DLSS-NR model reconstruction from 25% to 100% of native resolution for substantial performance savings.
- Matched Residual Resolve: Composites the neural lighting delta back onto the untouched 1:1 native frame, preserving crisp native geometry, subpixel edges, textures, and UI.
- Broad Color & HDR Support: Full compatibility with SDR (
R8G8B8A8), HDR10 PQ, scRGB (R16G16B16A16_FLOAT), and native UAV support for 3-channel HDR (R11G11B10_FLOAT). - Dynamic Subrects: Preserves viewport offsets and dimension tracking for games using Dynamic Resolution Scaling (DRS) or custom render passes.
- Multi-Slot Feature Cache: Seamlessly handles multiple concurrent viewports and hooks without feature handle thrashing.
- Live INI Hot-Reloading: Changes to
nvngx_dlssnr.iniapply in-game within 1 second without restarting.
Silent Hotkeys
Ctrl + Alt + Space— Toggle proxy ON / OFF (instant A/B comparison)Ctrl + Alt + End— Toggle Matched Residual vs BilinearCtrl + Alt + PageUp/PageDown— Adjust scale by ±5%
Quick Install
- Rename the original
nvngx_dlssnr.dllin your game directory tonvngx_dlssnr_real.dll. - Extract
nvngx_dlssnr.dllandnvngx_dlssnr.inifrom the zip below into the same directory. - Configure your desired target scale in
nvngx_dlssnr.ini(default0.75).
What's New in this Update
- Fixed
DXGI_ERROR_DEVICE_REMOVEDon RenoDX "Upscaled" Hook & HDR:
Added native typed UAV write support forDXGI_FORMAT_R11G11B10_FLOAT(format 26). Scratch textures and UAV views now match render target precision, eliminating 64-bit to 32-bit descriptor casting faults and TDR crashes. - G-Buffer Subrect Synchronization:
Automatically queries actualDepthandMotionVectorsbuffer dimensions and synchronizes subrects to keep the low-res neural grid aligned with full-res G-buffers, preventing cropping and engine Page Faults. - Caller Parameter Restoration Guard:
Unconditionally restores original caller parameters (Color,Output,Width,Height,Subrects,MVecScale) immediately after neural evaluation to ensure 100% stability with downstream addons and callers. - Enhanced In-Place Swapchain Handling:
Added explicit state transitions and staging paths when color and output share the same resource.
v1.0.0 DLSSNR Cost Scaler
First release of DLSSNR-Cost-Scaler, a standalone DirectX 12 proxy for NVIDIA DLSS-NR (nvngx_dlssnr.dll) that decouples neural model resolution from display resolution.
Highlights
- Resolution Scaling & Cost Slider: Run internal DLSS-NR model reconstruction from 25% to 100% of native resolution for substantial performance savings.
- Matched Residual Resolve: Composites the neural lighting delta back onto the untouched 1:1 native frame, preventing upscale blur on geometry, textures, and UI.
- Color & HDR Support: Full compatibility with SDR, HDR10 PQ, scRGB (FP16), and auto-bridging for 3-channel HDR (
R11G11B10_FLOAT). - Dynamic Subrects: Preserves viewport offsets for games using Dynamic Resolution Scaling (DRS).
- Live INI Hot-Reloading: Changes to
nvngx_dlssnr.iniapply in-game within 1 second. - Silent Hotkeys:
Ctrl + Alt + Space— Toggle proxy ON / OFFCtrl + Alt + End— Toggle Matched Residual vs BilinearCtrl + Alt + PageUp/PageDown— Adjust scale by ±5%
Quick Install
- Rename original
nvngx_dlssnr.dllin your game directory tonvngx_dlssnr_real.dll. - Extract
nvngx_dlssnr.dllandnvngx_dlssnr.inifrom the zip below into the same directory.