-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtools.html
More file actions
120 lines (108 loc) · 7.99 KB
/
Copy pathtools.html
File metadata and controls
120 lines (108 loc) · 7.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Free software from Sami Mirash. Returnal Multi-Frame Generation unlocks 3X, 4X, 5X and 6X frame generation in a game that ships 2X as its ceiling. Download, source, and how it works.">
<meta property="og:title" content="Tools | Sami Mirash">
<meta property="og:description" content="Free, open source software built while taking games apart. Download and source for everything.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.samimirash.com/tools.html">
<meta property="og:image" content="https://www.samimirash.com/articles/returnal-multi-frame-generation/cover-card.ad7b0654bf.jpg">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://www.samimirash.com/articles/returnal-multi-frame-generation/cover-card.ad7b0654bf.jpg">
<meta name="theme-color" content="#080705">
<link rel="canonical" href="https://www.samimirash.com/tools">
<link rel="icon" href="favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="assets/site.2bd763b8a4.css?v=2bd763b8a4">
<title>Tools | Sami Mirash</title>
<script defer src="assets/site.ed7522e9e1.js?v=df240437ff"></script>
<script defer src="assets/content.js?v=0915c490d0"></script>
<script defer src="assets/seo.js?v=a5ec08188b"></script>
<style>
.tool{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);
padding:22px 24px;margin:0 0 22px}
.tool h2{margin:.1em 0 .3em;font-size:1.4rem;color:var(--accent-3)}
.tool .sub{color:var(--muted);margin:0 0 1em;line-height:1.55}
.tool p{line-height:1.62;margin:0 0 .8em}
.dl{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:1.1em 0 .6em}
.dl a{display:inline-block;padding:11px 20px;border-radius:var(--radius);
text-decoration:none;font-weight:700}
.dl a.primary{background:var(--accent);color:#08110d}
.dl a.secondary{border:1px solid var(--line);color:var(--fg)}
.dl .meta{color:var(--muted);font-size:.86rem}
.facts{display:grid;grid-template-columns:minmax(140px,190px) 1fr;border:1px solid var(--line);
border-radius:var(--radius);overflow:hidden;margin:1em 0;background:var(--surface-2)}
.facts dt,.facts dd{padding:9px 12px;margin:0;border-bottom:1px solid var(--line);line-height:1.5}
.facts dt{font-weight:700;color:var(--accent-3)}
.facts dt:last-of-type,.facts dd:last-of-type{border-bottom:0}
table.perf{width:100%;border-collapse:collapse;margin:1em 0;font-variant-numeric:tabular-nums}
table.perf th,table.perf td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left}
table.perf th{color:var(--accent-3);font-size:.9rem}
code{background:var(--surface-2);padding:2px 6px;border-radius:4px;font-size:.9em}
.note{border-left:3px solid var(--accent-3);padding:10px 14px;margin:1.1em 0;
background:var(--surface-2);border-radius:var(--radius)}
@media(max-width:620px){.facts{grid-template-columns:1fr}}
</style>
</head>
<body data-page="tools">
<a class="skip-link" href="#main">Skip to content</a>
<header class="site-header" data-site-header></header>
<main id="main">
<section class="hero"><div class="wrap">
<p class="eyebrow">Tools</p>
<h1>Software I built while taking games apart.</h1>
<p class="lede">Free, open source, and written because a game would not do the thing it should have been able to do. Everything here is downloadable from this site and its source is public.</p>
</div></section>
<section class="section"><div class="wrap">
<div class="tool">
<h2>Returnal Multi-Frame Generation</h2>
<p class="sub">3X, 4X, 5X and 6X frame generation in a game that ships 2X as its hard ceiling.</p>
<p>Returnal was built against NVIDIA Streamline 1.3.3. Multi-frame generation needs 2.11 or newer, and the game hardcodes a request for exactly one generated frame. This is a small proxy that sits beside the game and translates the old SDK calls into the new ones while it runs, so the ceiling goes away.</p>
<p>It is pure NVIDIA: DLSS Frame Generation, Reflex and PCL through Streamline. There is no FSR, no XeSS and no AMD code anywhere in it. Nothing on disk is patched, so deleting two files undoes all of it.</p>
<div class="dl">
<a class="primary" href="downloads/SamiMirash-Returnal-MFG-v1.0.zip" download>Download v1.0</a>
<a class="secondary" href="https://github.com/SamiMirash/samimirash-returnal-mfg">Source on GitHub</a>
<a class="secondary" href="articles/returnal-multi-frame-generation/">Read how it was built</a>
<span class="meta">121 KB · Windows 10/11 64-bit · MIT</span>
</div>
<dl class="facts">
<dt>Needs</dt><dd>An NVIDIA GPU whose driver supports DLSS Multi-Frame Generation, and NVIDIA Streamline 2.13, which you download yourself from NVIDIA. The game verifies the signature on those files, so only NVIDIA's own signed build works.</dd>
<dt>Multiplier</dt><dd>One line in <code>SamiMirash_Returnal_MFG.ini</code>: <code>InterpolationCount</code>, where 1 is 2X and 5 is 6X.</dd>
<dt>Scope</dt><dd>Returnal only, deliberately. It hardcodes byte offsets into that game's own binaries.</dd>
<dt>Checksum</dt><dd><code>b26d5dc2d04b3098224d8875c6d730755709ec93a15a6ccb31aabc109bd26d68</code></dd>
</dl>
<p><strong>Measured here, on one machine, in one scene:</strong></p>
<table class="perf">
<tr><th>Setting</th><th>Frames presented</th><th>On screen</th><th>1% low</th></tr>
<tr><td>2X</td><td>2</td><td>130</td><td>111</td></tr>
<tr><td>3X</td><td>3</td><td>187</td><td>109</td></tr>
<tr><td><strong>4X</strong></td><td>4</td><td><strong>225</strong></td><td><strong>189</strong></td></tr>
<tr><td>5X</td><td>5</td><td>225</td><td>148</td></tr>
<tr><td>6X</td><td>6</td><td>225</td><td>170</td></tr>
</table>
<div class="note">
<p>Above 4X buys nothing on this setup, because the display ceiling is already saturated at 225, and it costs smoothness. 4X has the best frame consistency of the five. Your numbers will differ.</p>
</div>
<div class="note">
<p><strong>What is in the download, and what is not.</strong> The only binary in the zip is
<code>winmm.dll</code>, which is our own compiled code, released under the MIT licence.
<a href="https://github.com/TsudaKageyu/minhook">MinHook</a> is compiled into it under the
BSD-2-Clause licence and its notice travels with it.</p>
<p>Nothing else in the package belongs to anyone else. NVIDIA Streamline is
<strong>not</strong> included: you download it from
<a href="https://github.com/NVIDIA-RTX/Streamline/releases">NVIDIA's own releases</a>, which
is also the only way it works, because Returnal verifies the signature on those files and
refuses anything that is not NVIDIA's signed build. Windows' own <code>winmm.dll</code> is
not included either. <code>setup.cmd</code> makes that copy from your own machine. No
Returnal code or assets are included or redistributed.</p>
<p>Unofficial and unaffiliated with NVIDIA, Housemarque or Sony. Use at your own risk.</p>
</div>
<p>At 4X the engine renders 56 real frames to fill the same display that 2X needs 112 for, and the GPU time that frees is what pays for neural rendering. The full account, including three bugs that each looked like something else, is in <a href="articles/returnal-multi-frame-generation/">the article</a>.</p>
</div>
<p style="color:var(--muted);line-height:1.6">More to come. Everything I build ends up here and on <a href="https://github.com/SamiMirash">GitHub</a>.</p>
</div></section>
</main>
<footer class="site-footer" data-site-footer></footer>
</body>
</html>