Skip to content

Arcan 0.3.1

Compare
Choose a tag to compare
@letoram letoram released this 15 Nov 00:16
· 3628 commits to master since this release

Download links at the bottom

Lots of changes this time around, while Gridle and associated themes (remote, streamer, ...) hasn't received much in terms of direct updates, they have benefited from several major engine revisions.

Biggest change is the addition of the Desktop oriented theme AWB (~10k LOC). Excluding mame-keybinding generation, it should have more functions and features than gridle already. Feedback appreciated!.

Brief changelog:
LUA

Can now be built using luajit-2.0 instead of regular lua5.1, workaround hacks for tonumber/tostring compatibility issues where 

[modified functions]
image_texfilter (terminate on invalid filter specifier)
image_clip_on (can now take clipping type specifier)
hide_image, blend_image, show_image, order_image, 
move_image, nudge_image all accept n-indexed tables of vids as first argument as well.
image_tracetag (vid only argument returns current tag)
build_shader (now accepts nil as vertex or fragment and assumes built-in default)
camtag (can now set near, far, fov, aspect, facing), camtag object scale affects output (-1 flips vertical))
game_info (can now grab table by ID and not just title)

[new functions]
attrtag_model (switch 3dmodel transform state, e.g. infinite- distance models)
target_seek (seek absolute or relative in decoding frameservers)
recordtarget_gain (set mixing properties for an audio source in a recordtarget)
inputanalog_filter (set low-level analog device input filtering)
inputanalog_query (get current dev/axis filtering state)
inputanalog_toggle (mass disable/enable all analog input processing)
benchmark_data (copy the current benchmark ring-buffer)
benchmark_enable (toggle gathering of benchmarking data)
benchmark_timestamp (get system clock time in millis)
forward3d_model (push the model along its current forward facing vector)
strafe3d_model (push the model along the vector perpendicular to up and forward)
image_sharestorage (discard the storage of the dst object and replace it with a reference to src)
null_image (create an object without a GL storage attached, useful as property masters and anchors)
color_image (create an object without a GL storage and uses a single-color shader without samplers)
storepush_video_context, storepop_video_context (allocate a new object, store the visible output of this context into the new object and push/pop the rest, returning a handle to the new object)
image_inherit_order (set order value to be relative to parent)
frame_pulse entry-point added (only tested for once and disabled if not found)

[new "debug build" only functions]
freeze_image (trap as soon as image state is modified after this has been set)

[new reserved functions]
 clipboard_getmsg, camtaghmd_model

Core

  • Refactored out most OS / Platform specific stuff into platforms/*
  • SDL_Image made optional, using libpng for screenshot/image loading.
  • SDL_TTF requirement dropped, using freetype with a simplified sdl_ttf version in-source for now (more refactoring will happen here).
  • Picking- group functions can now have their order reversed.
  • Broken math in picking functions fixed.
  • Video- pipeline state serialization (for debugging, crashlogs etc).
  • LodePNG for screenshots dropped.
  • Monitor mode (linux/BSD only currently) added, where on arcan session can sample the state of another.
  • Internal streaming audio playback dropped and replaced with decode frameserver entirely.
  • Individual resource loading switched to an internal resource mapping API to fit better with the platform split.
  • Reference counted GL storage decoupled from video object, allows storage to be shared (in preparation for sprite sheets and to circumvent restrictions in instance_ and linking).
  • Frame generation times, logic update times and frame syncronization times now tracked for benchmarking.
  • Switched db default fsynch on write to be off (performance boost, but may introduce corruption side-cases, monitor for future changes).
  • Debug option to dump textures as PNG on upload.
  • Hierarchical pick fix to take resolved rather than local opacity when selecting.
  • Re-added the aggressive "dupm stack and die" for getvid in debug builds.
  • Notable 2D pipeline optimization work; transformations chain resolves are cached, transformation matrixes as well, most expensive operations being being replaced with SIMD versions.
  • Default- oriented 2D objects gets a cheaper renderpath and simplified picking costs.
  • Instances can no-longer be linked to or be part of framesets, use null_images instead.
  • 3D pipeline simplified to reflect camtag changes, still missing render-to-cubemap though.
  • 3D pipeline now supports infinite distance objects (e.g. skyboxes)
  • Math, added basic frustum tests and quat_matr -> view vector extraction
  • Renderbuffers vs Framebuffer confusion problems fixed.
  • FBO internal resdolution can now be set to higher than output display resolution.
  • Begun closing down traversal options (still possible in some places)
  • Framequeue decoding timing etc. reworked (again, doubt there's a good possible universal solution).
  • Framequeue cleanups (still horrible though).
  • Skewing pitch support dropped in audio (should have effect approach reworked anyhow).

Misc

  • Mouse- handling support script added (with mouse gestures etc.).
  • LUA interface mapping method switched, work on automated API documentation/test/example generation (see doc/*) begun, about 80% coverage.
  • Win32 got a new tool, ArcanLauncher which helps with setting launch arguments and DB scraping.
  • Build- system refactored into platform/*
  • out-of-tree building fixes
  • SQLite3 can now be built-in using the amalgamation (external/sqlite3)
  • LUA debug.debug gets patched to unlock mouse on trigger
  • Frameserver decode now encodes FFT in video channel for audio only playback.
  • Seeking added to frameserver decode.