The render pipeline has been updated to include an additional stage. Before updating the swap chain, the final image is rendered to a COPY_SRC texture. This allows the texture to be copied into a buffer, mapped into host memory and saved as a PNG. This is performed with the screenshot console command, seen below:
Client frame tracing
The client now implements a basic tracing API. Client data from frames run during a trace will be recorded. When the trace ends, the data is serialized as JSON and dumped to a file. Tracing is controlled with the trace_begin and trace_end console commands.
This feature was used to solve the "jitter" of the client view, which was caused by incorrect ordering of time and position updates. Below are graphs of the interpolated client position before and after the fix. (Note that the first graph was traced at host_maxfps 60, while the latter was traced at host_maxfps 144.)
Before
After
Miscellaneous
Switched from docopt to structopt for command line options.
Enabled anisotropic filtering.
Added host_maxfps cvar, which dictates how long the client will wait (by repeatedly yielding to the scheduler) until running the next frame.
Output capture
The render pipeline has been updated to include an additional stage. Before updating the swap chain, the final image is rendered to a
COPY_SRC
texture. This allows the texture to be copied into a buffer, mapped into host memory and saved as a PNG. This is performed with thescreenshot
console command, seen below:Client frame tracing
The client now implements a basic tracing API. Client data from frames run during a trace will be recorded. When the trace ends, the data is serialized as JSON and dumped to a file. Tracing is controlled with the
trace_begin
andtrace_end
console commands.This feature was used to solve the "jitter" of the client view, which was caused by incorrect ordering of time and position updates. Below are graphs of the interpolated client position before and after the fix. (Note that the first graph was traced at
host_maxfps 60
, while the latter was traced athost_maxfps 144
.)Before
After
Miscellaneous
host_maxfps
cvar, which dictates how long the client will wait (by repeatedly yielding to the scheduler) until running the next frame.