Compared with Rainbow Six Seige PC
How the Rainbow Six Seige PC build adds the PC features this console build lacks: frame pacing, vsync, mouse and keyboard, resolution and field of view.
Destiny 1 is a console build. It has no frame rate setting, no vsync choice, no mouse or keyboard, no resolution change and no field-of-view setting. The Rainbow Six Seige PC build, 86657, has all of them, built on the same engine. This page lists what Rainbow Six Seige PC does for each feature and what the Destiny 1 code has in its place.
Frame pacing
Both games use the same time control engine. See Time and frame pacing for Destiny 1’s. Rainbow Six Seige PC changes four things:
- The config comes from the display refresh rate, vsync and the frame cap, not a fixed 30 Hz. It is rebuilt when a setting changes.
- Mode 3, capped, drops the vblank phase. The frame interval is 1000 / cap, in ms.
- A variable-step flag is on for clients. Each frame runs one update, with the smoothed real frame time as its time step.
- In the background the game is held to 30 frames a second, with a lower cap.
step
Rainbow Six Seige PC
Destiny 1 PS4
config
built from the display settings
literals, built once
rebuild on a setting change
yes
none
clock
the performance counter, in ms
the time stamp counter
frame record
64 bytes; frame time clamped to 10 s; an average weighted 0.95 / 0.05
56 bytes
fixed-clock byte
1
1
variable step
on for clients; the time step is a 120-frame average of min(real dt, 1 / max(10, rate))
absent; the time step is fixed
Rainbow Six Seige PC has no render interpolation: its frame record holds no blend factor between two ticks. That rests on absence and is unverified.
Rainbow Six Seige can use a variable step because it counts gameplay time in seconds. Destiny 1 counts it in ticks, so the same change would speed up every timer. See Gameplay time is counted in ticks.
Vsync and presenting
step
Rainbow Six Seige PC
Destiny 1 PS4
video settings
36 settings, among them vsync_mode 0 to 5 (default 1), window_mode 0 to 3 (default 3) and framerate_cap 30 to 10,000 (default 200)
none
present
sync interval 0 with vsync off, else 1 to 4; no tearing flag; runs on the window thread
a flip from the GPU submission thread
frame latency
1; 2 or more in window mode 3
the engine stays at most one flip ahead of the GPU
resize
ResizeBuffers with one buffer; the game handles Alt+Enter itself
none
Destiny 1 sets the flip rate to 1 at device start-up. Each flip sets it again from a device field. The writer of that field was not traced.
Without the tearing flag, variable refresh rate works on Rainbow Six Seige PC only in exclusive fullscreen. That is unverified.
Mouse and keyboard
step
Rainbow Six Seige PC
Destiny 1 PS4
raw input
a hidden window, Tiger Input Window, takes raw input even without focus
no keyboard or mouse library
mouse sample
filled each frame
the same slot exists and is cleared each frame, but nothing fills it
device update
one 944-byte double buffer for pads, keyboard and mouse
a double buffer, pads only
mouse getter
present
present, with four callers
PC gate
none
at least one caller takes the mouse path only when a stub returns true; the stub always returns false
keyboard
a key message queue plus a poll of 105 keys
not found
cursor
clipped while the game has focus and captures it
none
The mouse sample has the same layout in both:
offset
field
+0x00
x movement
+0x04
y movement
+0x08
wheel, in steps of 120
+0x30
held-frame counts for 5 buttons
So Destiny 1 still carries the data path for a mouse. Only the input source is missing.
Resolution
step
Rainbow Six Seige PC
Destiny 1 PS4
display mode
applied from the settings, with a mode switch
fixed
render targets
all released and rebuilt on a change
built once at device start-up
render target sizes
size classes from full size down to 1/40, a class 360 high, and a class clamped to 1920 x 1080
not compared
render resolution
a percentage, 25 to 200
clamped to 320 to 1920 wide and 240 to 1080 high
Rainbow Six Seige PC imports no DPI-awareness call. That is unverified.
Field of view
step
Rainbow Six Seige PC
Destiny 1 PS4
default field of view
clamped to 1 to 150 degrees, fallback 1.3439 radians
a matching function exists; the pairing rests on one read
aspect fit
Hor+: the horizontal field of view is set for 16:9, turned into a vertical one, then back into a horizontal one for the real aspect
Vert-: the vertical field of view is computed from the horizontal one at the real aspect
field-of-view setting
fov_adjustment_offset, 55 to 105, default 85
none
Destiny 1 is Vert-. A screen wider than 16:9 keeps its horizontal view and loses vertical view. The lens flares and four other functions also read the aspect ratio.
Other PC features
- Settings are saved as
cvars.xmlinAppData\Roaming\Bungie\DestinyPC\prefs. - The game takes over Alt+Enter and the Windows key. It also has a keyboard hook, not read.
Not checked
- Rainbow Six Seige PC: the pump loop body, the window procedure, swap-chain creation, the consumer of the field-of-view setting, gamepad code, key binding consumers, and interpolation outside time control.
- Destiny 1: the action layer behind input, two of the mouse getter’s callers, the render target rebuild and free paths, the writer of the flip rate field, whether the input block holds a keyboard array, and the UI canvas and letterbox.
- The Destiny 1 Xbox input and present paths.
