💎 3D game framework in C.
new: integrated PBR renderer (@zpl-zak)
new: --nocook (@zpl-zak)
new: 3rd_luaffi.h
new: add shadertoy material in demos (@zpl-zak)
new: add update command (PLUG.bat)
new: added skybox_pbr()
method to load IBL maps (@zpl-zak)
new: animlist() (@zpl-zak)
new: camera_fps2() (@zpl-zak)
new: font_wrap(), font_clip(), font_scale(), FONT_JUSTIFY (@zpl-zak)
new: fx_order() support (@zpl-zak)
new: implemented shader uniform caching (@zpl-zak)
new: object_anim() (@zpl-zak)
new: TEXTURE_ANISOTROPY, MODEL_NO_FILTERING flags (@zpl-zak)
new: window_has_debug() + window_debug() to show/hide debug UI (@zpl-zak)
chg: add @filelists support (PLUG.bat) chg: compute brdf lut (@zpl-zak) chg: COOK_DISABLED > ENABLE_COOK chg: COOK_INI_PATHFILE chg: do not use openmp in retail builds chg: improved shader preprocessing logic (@zpl-zak) chg: made --cook-on-demand=1 by default chg: move PLUG.bat into plugins/ folder chg: move tonemap shaders to engine art/ dir (@zpl-zak) chg: moved font shaders to art/ folder (@zpl-zak) chg: promoted allocate_texture_unit() to public texture_unit() method (@zpl-zak) chg: remove iqm macros (@zpl-zak) chg: renderers are renderstate_t driven now (@zpl-zak) chg: script push/pop methods chg: update gamecontrollerdb.txt chg: update roadmap chg: updated docs chg: upgrade enet (@zpl-zak) chg: upgrade font demo (@zpl-zak)
fix: expired discord invite link (@rubenrookd) fix: fix compilation error in demos/physics/ samples fix: fixed broken luajit+python bindings since objv2 api fix: font align adjustments (@zpl-zak) fix: handled restartappifneeded steam case (@zpl-zak) fix: linux compilation (_alloca symbol) fix: set viewport while rendering shadertoys on a texture (@zpl-zak) fix: steam init ordering (demos/99-steam.c) (@zpl-zak) fix: texture units are now cycled each bind (prevents texture unit exhaustion) (@zpl-zak) fix: tweak sphere_to_polar() shader function (@zpl-zak) fix: ubuntu16+gcc compilation error fix: updated glfw3 swap buffer and interval funcs to match upstream (improves pacing) (@zpl-zak) fix: win32 guards within Steam code (@zpl-zak) fix: win32 timing in fps_timing_thread by replacing Sleep() call with sleep_ns() (uses WaitableTimer instead) (@zpl-zak) fix: wrong normals when rendering instanced models (@zpl-zak)
lab: PLUG manager
Maintenance release:
new: steam api, demos\99-steam.c new: lightmap api, demos\99-lmap.c (@zpl-zak) new: audio_loop(), audio_playing() (@zpl-zak) new: gui labels + sliders (@zpl-zak) new: font_metrics() (@zpl-zak) new: ui_font() (@zpl-zak) new: ease_zero(), ease_one() new: tools/glslcc new: MAKE run
chg: expose vfs_reload() (@zpl-zak) chg: gui_getskincolor() (via slice color) (@zpl-zak) chg: optimized internal font cache tables for codepoints chg: rebuilt tools (ass2iqe, iqe2iqm) (win, lin) chg: updated 01-font.c demo (@zpl-zak) chg: updated docs
fix: crash when indexing out of bound vectors (iqe2iqm) fix: editor using font faces 8,9,10 now fix: large embedded textures were truncated (iqe2iqm) fix: more accurate font_rect() bounding boxes (@zpl-zak) fix: no repeating flags applied in embedded textures fix: regression: invalid shift in 4-byte codepoints (string32)
brk: different font sizes within same line no longer supported brk: x10 font faces, x6 font colors now
new: game ui api (@zpl-zak) new: 3D sprites + ASE loader new: orthographic cameras new: curve api new: argvadd() new: game ui demo (@zpl-zak) new: integrated lite text editor new: lua scripts can load zipped lua modules now new: ui_unsigned2/3() new: rgbatoa(), atorgba() new: obj_menu(), obj_aabb() interfaces new: window_clipboard() / window_setclipboard() new: codepoint_to_utf8() new: tools/ase2ini new: --cook-stats new: FONT_EM emoji/symbols range new: SPRITE_FLAGS new: WINDOW_BORDERLESS chg: improved cook times chg: ase2ini: 9-slices support (@zpl-zak) chg: autocomplete, autoreload and some other plugins (editor_text) chg: add userdata field in texture_t chg: added scale Y support into sprite_rect() chg: adjusted horizontal spacing (-DUI_LESSER_SPACING) chg: adjusted oversampling & pixel snaps (-DUI_SMALL_FONTS) chg: allowed dll api to add the required extensions per platform chg: append cook commands into cook recipe: avoids global lock (fwk_cook) chg: avoid potential system() call global lock in osx builds with cook on demand enabled chg: built tools/ark, tools/ase2ini (linux, osx) chg: cleaned up curve api (thanks @zpl-zak!) chg: cleaned up dll api chg: cook optimizations chg: cosmetics tweaks in color pickers (fwk_ui) chg: do not batch transparent sprite_rect()s or without scale chg: editor: added extra icons on menu bar chg: ffmpeg will use a single thread now chg: generate csv cooking stats (MAKE cook) chg: increase va() buffer to 512 KiB per thread chg: integrate fwk_editor chg: lua 5.4.4 -> 5.4.6 chg: made larger pngs, faster writing (ase2ini, 3rd_atlas) chg: made xml_string to return empty strings on invalid nodes (@zpl-zak) chg: merged files id > obj, bt > ai, buffer > pack, dll+script > extend, tween > time chg: move tools/3rd -> engine/split/ chg: multi-cursors in lite editor chg: profiler disabled only in retail builds chg: rebuilt linux+osx binaries (ase2ini, ark, cook) chg: rebuilt tools/cook (win,linux) chg: reduce stack when calculating crc32 (zip) chg: remove extra allocation when compressing (ulz) chg: simplified ui_disable() theme logic (fwk_ui) chg: smoother progress bar animations at cook time chg: ui_keyboard() displaying FN keys chg: update docs chg: update roadmap chg: updated nothings' 3rd libs (vorbis 1.19->1.22, image 2.26->2.28, image_write 1.15->1.16) brk: app_exec() not returning popen() log anymore brk: app_spawn() return codes brk: changed signature ui_color3/4() brk: changed sprite_rect() signature brk: changed ui_tileset/ui_tiled/ui_spine signatures brk: CURSOR_SHAPE enums reordered brk: renamed some KEY identifiers so they match their eval() counterparts brk: sort_64() > less_64_ptr(), sort_int() > less_int_ptr() brk: sprite api signatures brk: ui_debug() > ui_engine() fix: app_beep(), app_open_folder(), app_open_file() framerate stalls fix: app_spawn() not launching background sub-processes fix: ase2ini: heap dealloc crash fix: billboards (@zpl-zak) fix: changed default editor hz to monitor rate (@zpl-zak) fix: color3/4f() no longer clamp components in LDR range [0..255] fix: crash in font module when loading MDI font fix: cuttlefish was never intended to convert images into png files fix: do intern some previously temporary fields (fwk_reflect) fix: do not inscribe members twice (fwk_reflect) fix: do not process mouse input when mouse is hidden (3rd_nuklear_glfw3) fix: do not recurse structs indefinitely (fwk_reflect) fix: editor: rect selections could happen while fps cam was active fix: file_list("**/file") not returning existing entries fix: fixed font_face_from_mem() to use vfs api when loading shaders fix: fixed regression that would open terminal windows in retail builds (@zpl-zak) fix: fixed window_cursor()/window_has_cursor() when using CURSOR_SW_AUTO shape fix: fx_load() not returning existing postfxs in cook-on-demand builds fix: ini() not reading vfs files fix: internal base64 decoder not expanding to correct sizes fix: invalid casting in some recently introduced datatypes fix: memory stomp during cook (strsplit) fix: mutexes in obj_meta()/obj_setmeta() fix: normalize b64 de/encoders to use url safe variant fix: normalize fread/fwrite calls fix: osx compilation errors (spline, ase2ini) fix: png,jpg images were being compressed even if explicitly told cook to not doing so fix: regression: --cook-on-demand fix: regression: input boxes not working since lite was integrated fix: regression: invalid script generated when shell commands were present (thanks @zpl-zak!) fix: regression: ui_colors() not being dimmed when ui was disabled fix: silicon apple m1 fixes (@zpl-zak) fix: sprite_rect() not scaling X properly fix: string32() not decoding 4-byte utf8 codepoints fix: timer() api will retrieve epoch/freq at least once per thread now fix: unify RGB3/RGB4 macros to use RGBA colors everywhere: ddraw, palette, tty, fonts, window fix: windows overlapping menubars created with internal menu v2 api fix: wrong terminal font size lab: editor: setmouse() lab: editor: toolbar icons lab: integrate 99-nodes into editor lab: integrated rpmalloc lab: removed cook progress messages, which were using a global lock lab: script v2 api
new: object v2 API new: reflection API new: tween API (@zpl-zak) new: tests API, --test, --test-break=NUM new: ID + quarks + semver APIs, time sortable GUIDs new: support for fused binaries (exe + zipfiles) new: -DENABLE_RETAIL to disable printfs, asserts, stdout/stderr, tests, cook and titlebar stats (@zpl-zak) new: allow search filtering in most ui widgets ^F (fwk_ui, 3rd_nuklear_filebrowser) new: display menu on MAKE.bat when double-clicked (win) new: ALLOCA() new: APP_SINGLETON_GUID new: AUTORUN snippets new: MAKE fuse new: VA_COUNT(), VA_SPLIT(), VA_FIRST(), VA_REST(), TODO(), FIXME() new: app_beep(), app_hang(), app_crash(), app_singleton(), app_open() new: atof1()/ftoa1(), itoa2/3/4(), ftoa2/3/4() (with expression evaluators) new: audio_mute(), audio_muted() new: byte2/3/4, int2/3/4, uint2/3/4, float2/3/4, double2/3/4 storage types new: crc64(), arc4(), entropy(), cobs, base92, ddelta de/encoders new: print2i(), print3i() new: ease_enum(), ease_enums(), ease_pong() new: have_tools() new: input_eval(), input_enum() new: ui_audio() new: unique() macro new: window_has_icon(), window_dpi() (@zpl-zak) new: vle,int,float,half packers new: tools/ark new: ability open zip files by handles given at any seek address (3rd_archive) new: added BUILD_VERSION, that gets printed at boot time and at window title new: added benchmark_ms {} new: added fxColorMapVis new: added material design icons webfont fork into editor assets new: allow file_list() to specify multiple dirs, semi-colon separated new: support for material-icons-webfont
chg: --debug-font-atlas > --font-debug chg: --test-only > --test chg: added frame weight into benchmark() chg: added support for AUTORUN on clang-cl chg: allowed multiple AUTORUNs within same line chg: allowed tools/timer to be used as a pipe too chg: allowed ui_buffer(), ui_string(), ui_label2 to use null labels chg: allowed multiple STATIC_ASSERT() to be used within same line chg: allowed reflection module to process const, union and struct types chg: centered properties chg: changed NDEBUG to match the compiler optimization levels chg: changed font module to use RGBA textures chg: disable .ico icon support chg: eval() extended to use & | ! operators, _ in symbols (3rd_eval.h) chg: eval() extended to use many input constants and some input functions (3rd_eval.h) chg: failed autorun tests will stop game from launching chg: file_list reimplemented chg: hide all system folders by default (file_list) chg: improve reflection printers chg: increase max size per obj instance (up to 1KiB) chg: larger ui_contextual() popup chg: made annotations optional in all reflection macros chg: made arguments optional in both panic and printf macros chg: made file browser to fit better within the parent space (3rd_nuklear_filebrowser) chg: made optional annotations in reflection macros (ENUM,STRUCT,FUNCTION) chg: made quarks caching more mem friendly chg: made split/join commands to regenerate single-header distribution too (MAKE.bat) chg: made tcc the default compiler on windows. vc will only be used when specified, or when instanced within a VS terminal chg: made test() failures reddish chg: minor ui styling chg: obj_make() will return an empty obj type before failing chg: obj_name() as meta chg: optimize number of extra bits in obj header (4->19) chg: optimized cook time by redistributing workload much better into existing cookjobs (higher bits of FNV hashes were too stable) chg: potentially exclude .dSYM and .o files from cook chg: promoted time api to their own fwk_time file chg: quarks up to 64 chars each and 64M addressing by default chg: re-enable icon mounting from vfs volumes (@zpl-zak) chg: rebuilt tools/cook (win) chg: reduce some ms at quit time (win) chg: reduced severity in shader errors chg: renamed 3rd_font_md.h > 3rd_icon_md.h chg: reordered endianness utils chg: retail builds (MAKE retail) chg: stylized 99-nodes.c demo chg: ui_notify() beeps now chg: unrolled different ui_beep() implementations chg: updated 3rd_icon_mdi.h chg: updated docs chg: upgraded miniaudio to latest
fix: --cook-debug not working when using multiple jobs fix: 4-byte unicodes not being printed (3rd_nuklear) fix: AUTORUN macro being executed in reverse order (gcc,clang,clang-cl,mingw...) fix: adjusted spacing webfont fix: allowed ///- document tags to be included anywhere within a line fix: app_beep() not working in retail builds fix: benchmark() not reporting while executed within first ms fix: cc_t compilation error on emscripten fix: detached from parent before deleting (obj_free) fix: detached objects no longer create holes within children array (obj_detach) fix: each_objchild() fix: editor compilation error on osx fix: fix profiler being rendered while filtering is on fix: fixed canvas scaling artifacts (html5) @zpl-zak fix: fixed display of long string names when doing vfs lookups fix: fixed editor_pick() (@zpl-zak) fix: fixed potential argument in each_substring() evaluated twice fix: fixed utterly broken shader params after the atof1/2/3/4() upgrade fix: font demo broken after opening debug panel fix: font shader modulates color by alpha now (@zpl-zak) fix: format warnings (gcc+linux) fix: fused executables not being mounted while launched from a different work directory fix: handled SEH exceptions (trap_install) fix: include objname as member in debug builds (obj) fix: initial cwd in python runs fix: initialize ui in mono thread. could prevent stack corruption in MT fix: invalid tar files not being marked as such (3rd_archive) fix: leaks in 3rd_archive.h while compressing fix: lua demo fix: made alert() visible always fix: made cache api MT safe fix: made cache_lookup() threadsafe fix: made compile-time cc4,cc8 macros fix: mingw compilation fix fix: mingw warnings fix: miniaudio not working on latest osx fix: missing folders in filebrowser since file_list() upgrade (3rd_nuklear_filebrowser) fix: mouse in shadertoys fix: obj stack not working properly fix: obj_make() clears payload now fix: opengl scissor issue when window is minimized (3rd_nuklear_glfw3.h) fix: pixel aligned combo arrows fix: popups outside window client (3rd_nuklear) fix: popups snapping to the left border (3rd_nuklear) fix: popups with vertical scrollbars (3rd_nuklear) fix: potential crash unless rounded up to 8-byte boundaries (obj_malloc) fix: python demo fix: redudant each_array(), each_array_ptr() calls when T was a function call fix: removed all audio spamming messages on webaudio (html5) @zpl-zak fix: reverted webaudio initialization (html5) fix: symbol visiblity in quark api fix: using filelocks for zip (should hopefully match OSX behavior from now) fix: video recordings from debug panel included a stamped ui_notify() on them fix: visual studio solutions were broken fix: vsmcube ifdefs on osx fix: wrong BRDF texture in 99-pbr + retail builds fix: wrong app_path() in linux/osx fix: wrong boids nearby check fix: wrong mouse cursors when resizing panels/windows (3rd_nuklear) fix: wrong pointer cast (each_objchild) fix: wrong program assignment in model rendering (@zpl-zak) fix: wrong rgba() endianness (@zpl-zak) fix: zip_open_handle closing file handles after an error
brk: KEY_(R)ALT,KEY_(R)CTRL,KEY_(R)SHIFT to check both L+R keys brk: added argument to request a contextual close in ui_contextual_end() brk: array_erase() split into array_erase_slow() (preserves order) and array_erase_fast() (alters order) (@zpl-zak) brk: breakpoint() changed signature brk: changed behavior nk_selectable_text() brk: deprecated obj api in favor of upcoming objv2 api brk: dialog_load() > app_loadfile(), dialog_save() > app_savefile() brk: ease_ping_pong(), ease_pong_ping() signatures brk: file_list() and vfs_list() signatures brk: reflected_t -> reflect_t brk: signals api renamed to trap api
lab: editor v3, bindings, console and selection (^A,^D,^I,^LMB) lab: editor_send() lab: tween sub-editor lab: old editor api > engine api lab: interleave(), netstring() lab: internal do_threadlock() lab: made va() allowed to grow on demand lab: msgpack api
new: added --transparent, --mute and --delay=MS flags
new: added built-in debug panel with lots of internals exposed (camera, keyboard, mouse, gamepads, shaders, fxs, etc)
new: added camera damping settings
new: added compute shaders api (zpl-zak)
new: added support to specify 1:N outputs in cook (in addition to 1:1 outputs)
new: added vfs_load() >> file_load() fallback when no tools are present
new: added AUDIO_32KHZ flag (zpl-zak)
new: added VIDEO_LOOP, app_spawn(), ui_dims(), ui_get_dims() (zpl-zak)
new: added WINDOW_TRANSPARENT, --transparent flags, window_transparent(), window_maximize()
new: added analytical light step with limited Phong shading for Directional+Point lights (zpl-zak)
new: added art browser into debug panel
new: added compute shader demos (99-geom, 99-compute) (zpl-zak)
new: ddraw_camera()
new: extracted embedded shaders as transpilable files (zpl-zak)
new: fullscreen_quad_rgb_flipped(), fullscreen_quad_ycbcr_flipped() (zpl-zak)
new: hash_str(), hash_bin()
new: initial filtering on debug panel (ctrl-f)
new: integrated animlist format support into ass2iqe (zpl-zak)
new: made transparent apps to hide some ui panels by default: profiler, shaders, fxs.
new: made transparent apps to not display the cook progress bar
new: made transparent apps to shutdown whenever last ui_window() is closed
new: make compilation faster by caching precompiled fwk sources (win)
new: map/set_isempty(), atof2/3/4(), ftoa2/3/4(), swapf2/3/4(), clamp2/3/4()
new: mesh_bounds()
new: mesh_render_prim() (zpl-zak)
new: netsync code refactor (zpl-zak)
new: new light API, scene api additions to push lights (zpl-zak)
new: new shader reflection API
new: new shader reflection parameters get applied automatically when shader is compiled
new: rim lighting in anims demo (zpl-zak)
new: RPCs being reported by network_sync events (zpl-zak)
new: shader reflection parameters (bool,int,vec2/3/4,color3/4), set/min/max/tooltips
new: shader_apply_param(), shader_apply_params(), ui_shaders(), ui_fxs()
new: skybox_sh_add_light() (zpl-zak)
new: tty_detach()
new: ui_enabled(), ui_keyboard(), ui_mouse(), ui_gamepad(), ui_gamepads(), ui_camera()...
new: window_resize() (ems) (zpl-zak)
chg: generate bindings in engine/ folder
chg: instantiate web server only if content is not being served (html5)
chg: reduced overall repository weight
chg: MSG_INIT part of negotiation process now (zpl-zak)
chg: allow file_list() to retrieve most hidden files
chg: changed file browser to use ctrl+wheel when zooming in/out
chg: changed netsync event format (zpl-zak)
chg: deprecate vis command (MAKE.bat)
chg: expose animations api (zpl-zak)
chg: expose pathfind api (zpl-zak)
chg: flags for enet reliability and ordering control (zpl-zak)
chg: increased MAX_CACHED_FILES to 32
chg: made faster make.bat initalization in subsequent runs (win)
chg: made RGB3() to return alpha(255)
chg: made animations parser to loop idle anims by default
chg: made thinner style on UI labels
chg: print opengl version on boot
chg: recompile ass2iqe (win,lin,osx)
chg: relocate lua/python demos folder
chg: replicate previous project tree layout
chg: silenced mingw64 warnings in 3rd_enet.h
chg: switched to a faster mount logic during boot time
chg: switched to b612 font (sharper, increases num font faces, reduces repo size)
chg: updated docs
chg: upgrade 3rd_icon_md.h + teal + tlse + gamecontrollerdb to latest
lab: wip node editor demo (demos/99-nodes.c)
lab: wip NETWORK_BUF_CLEAR_ON_JOIN (zpl-zak)
lab: wip behavior tree demo (demos/99-bt.c)
fix: flipped shadertoys when used as texture (fwk_render)
fix: added pthreads support (html5) (zpl-zak)
fix: added RPC signature for void(char*) (zpl-zak)
fix: allowed coi requests in localhost served contents (html5) (zpl-zak)
fix: avoided crash in animations() when plain text animfile is provided
fix: fixed crash when no cooked fonts were available (ui_notify)
fix: fixed download() api on tcc+win32
fix: fixed enet/swrap sockets on tcc+win32 (zpl-zak)
fix: fixed issue when mounting empty zipfiles (likely to happen in computers with many cpu cores) (thanks zpl-zak!)
fix: fixed unsafe format strings in xml_int() and xml_float()
fix: fixed dll linkage in mingw+FWK_IMPLEMENTATION builds (MAKE.bat)
fix: fixed incorrect fbx files being loaded as @animlist files
fix: fixed void(*rpc)() call in netsyce code (zpl-zak)
fix: improve ui readablity (ie, decrease transparency) on overlapped windows
fix: issue in cookbook where groups would not match a single extension
fix: made letterbox fx to work on any aspect ratio
fix: optimized out heap allocations in netsync code (zpl-zak)
fix: peer ranks are recycled now (zpl-zak)
fix: postfxs on transparent windows
fix: restored executable permissions (osx,lin)
fix: reverted leak (3rd_https)
fix: supported SH coeffs when using mie scattering skybox (zpl-zak)
brk: added extra shader() argument to specify #defines in shaders (zpl-zak)
brk: camera_move() > camera_moveby()
brk: changed ui_enable() signature; renamed clamp2/3/4->clamp2f/3f/4f
brk: deprecate --camera-smooth
brk: deprecate input_demo()
brk: deprecate ui_const_string()
brk: deprecated viewport_color() in favor of window_color()
brk: file_stamp_epoch > file_stamp, file_stamp > file_stamp10
brk: input_frames() > input_string()
brk: profile_enable() > profiler_enable()
brk: renamed WITH_
> ENABLE_
directives
brk: split blur fx out in two different h/v passes
brk: ui_bits8/16() -> ui_bitmask8/16()
brk: ui_const_bool() > ui_label2_bool(), ui_const_float() > ui_label2_float()
Maintenance release:
new: bt demo
new: mesh_bounds()
new: tty_detach()
new: forked milestone in https://github.com/r-lyeh/FWK.2022
chg: reduced project size
chg: reduced project cook time
chg: html5: instantiate web server only if content is not being served
chg: added tools/editor/plugins/ stub folder
chg: upgrade teal + gamecontrollerdb + tlse
chg: updated docs
fix: fixed issue when mounting empty zipfiles (likely to happen in computers with many cpu cores) (thanks @zpl-zak!)
fix: flipped shadertoys when used as texture (fwk_render)
fix: html5: added pthreads support (@zpl-zak)
fix: html5: allowed coi requests in localhost served contents (@zpl-zak)
fix: fixed leak (3rd_https)
fix: fixed ui_notify crash when no cooked fonts were available
brk: renamed WITH_
> ENABLE_
directives
new: added camera_fov() new: added file checksums (file_crc32, file_md5, file_sha1) new: added ui_enable() / ui_disable() (fwk_ui) new: added window_color() (fwk_window) new: added waypoints in demo/04-actor.c for upcoming AI pass new: added navmesh test files from mikko mononen for upcoming NAV pass brk: camera_teleport() signature brk: deprecated mesh_create(), renamed mesh_upgrade() > mesh_update() (fwk_render) brk: renamed fourcc > cc4; added cc8 brk: renamed FWK_C > FWK_IMPLEMENTATION directive brk: renamed os_exec > app_exec, cpu_cores > app_cores, battery > app_battery, signals_install > signal_hooks chg: reduced hello.c size (/) chg: tweaked font sizes H1..H6 (fwk_font) chg: updated roadmap fix: added missing EASE_FLAGS for ease() fix: fixed 04-actor.c not being compiled on tcc+linux fix: fixed hello.c not being compiled as objc file (osx, MAKE.bat) fix: normalized zero-length vectors (norm2/3/4) fix: prevented profiler panel from overlapping other panels with PANEL_OPEN flag (fwk_profile) fix: removed extra arg in array_pop_front() fix: updated docs fix: updated doom/anarch makefiles lab: added 04-lod demo, 3rd_polychop.h (demos/) lab: added experimental python bindings (demo_python.py, fwk.py) lab: added behavior tree for upcoming demo
new: Tiled API
new: Swarm/Boids API
new: Shadertoy API
new: Threads API
new: Spine API (wip)
new: 00-ui demo (supersedes 00-hello,00-video)
new: 01-sprite demo (supersedes 00-audio,00-font,00-spine,00-sprite,00-tiled,00-tilemap,00-demo)
new: 02-ddraw demo (supersedes 00-collide)
new: 03-anims demo (supersedes 00-anims,00-instanced)
new: 04-actor demo
new: 04-controller demo
new: 07-network demo (supersedes 00-socket,00-script,00-demo)
new: Added animation blending support
new: Added build support for files that use single-header (MAKE.bat hello.c)
new: Added errorlevels (MAKE.bat+win)
new: Added maximize/restore buttons to ui_window() (3rd_nuklear.h)
new: Added PANEL_OPEN flag to allow ui panels to be initially open (fwk_ui)
new: Added partial atomics support (tcc+linux)
new: Added premake5+ninja binaries (win,lin,osx)
new: Added premake5 support: vs,xcode,ninja,gmake solutions (MAKE.bat sln)
new: Added UI theme flag --ui-hue=0.XX
(fwk_ui)
new: Added UI_FONT_LARGE,UI_FONT_SMALL,UI_ICONS_SMALL,UI_LESSER_SPACING directives (fwk_ui)
new: Added zooming to filebrowser (3rd_nuklear_filebrowser.h)
new: Enabled profiler+memory poisoning on debug/devel builds by default
new: Tweaked UI hue palette so colors combine better with default dark theme
add: Added ddraw_ring()
add: Added file_base() (fwk_file)
add: Added fx_find(), fx_load_from_mem()
add: Added input_mappings() (fwk_input)
add: Added model_animate_blends()
add: Added skybox_render()
brk: Changed WITH_LEAK_DETECTOR > WITH_MEMORY_LEAKS
brk: Renamed Data API > JSON API
brk: Deprecated vfs_find() and renamed it: vfs_find() > vfs_extract()
brk: Merged os_exec_output() into os_exec()
brk: Simplified ui_label2_toolbar() signature (fwk_ui.c)
chg: Added editor2 to makefile (MAKE.bat)
chg: Added is_resolution_independant arg to sprite_sheet() (fwk_render)
chg: Added loop/frame anim controls (demos/03-anims)
chg: Added parallel init mode that shaves some millisecs during fwk_init() boot time (msvc)
chg: Added support in ui sections to display any leading icon (fwk_ui.c)
chg: Added support for globbing files (fx_load)
chg: Added symbols to MSVC release builds (MAKE.bat)
chg: Added toggle view button in ui_browse() (fwk_ui)
chg: Added UI to sockets demo (demos/07-network)
chg: Added window demos to ui_demo()
chg: Bumped up versions (3rd_thread.h)
chg: Changed windowed/inlined ui_browse() calls to use grid/list view modes by default (fwk_ui)
chg: Made apps to abort execution on cancelled cooks
chg: Made optional argument in breakpoint()
chg: Made smoother blend on transparent pixels (sprite)
chg: Made UI most widgets to fit 100% of horizontal space when not specifying label (fwk_ui)
chg: Moved old demos into demos/old/
chg: Optimized cook-on-demand by cooking extra files on same batch (fwk_cook)
chg: Optimized cook-on-demand by verifying that files do exist before actually invoking tools/cook (fwk_cook)
chg: Rebuilt tools/cook (win,lin,osx) (tools/cook)
chg: Removed extra malloc when decoding mp1 files (fwk_audio)
chg: Removed extra compilation step when invoking make cook (MAKE.bat)
chg: Renamed demos/00-demo.c as /hello.c
chg: Renamed ui_string() > ui_buffer(), ui_stringf() > ui_string()
chg: Reworked ui_console() (not working yet) (fwk_ui)
chg: Renamed tools/split > engine/split, tools/fwk** > engine/fwk**
chg: Updated docs
chg: Updated Luajit bindings
fix: Buffer overruns in audio_queue() (AUDIO_FLOAT, AUDIO_1CH cases) (fwk_audio.c)
fix: Do not write tempfiles on filesystem (removed all vfs_find accesses)
fix: Exhausted audio buffers in audio_queue() (fwk_audio.c)
fix: Fixed incorrect estimation for width browser while being instanced inside a ui_panel()
fix: Fixed argc()/argv()/flag() on tcc+linux (fwk_system)
fix: Fixed crash on cook-on-demand + demos/00-shadertoy combo
fix: Fixed incorrect ART_SKIP_ROOT estimation, which was truncating PRETTY symbol on some edge cases (fwk_cook)
fix: Fixed incorrect hovering after resetting window layouts (fwk_ui)
fix: Fixed invalid texture width in ui_colormap()
fix: Fixed multithreaded accesses (vfs_load)
fix: Fixed postfx shaders not being mounted on vfs (fx_load)
fix: Fixed reset layout not working on maximized panels/windows (fwk_ui)
fix: Fixed small typo in FREE() that was suboptimal, perf wise (fwk_memory)
fix: Improved pattern matching on supplied wildcards (tools/cook)
fix: Removed 64 panels/windows max limit (fwk_ui)
fix: Removed alpha component from ui_color3() widget (fwk_ui)
fix: Silenced const warning (each_array_ptr)
fix: UB when no voices were available in audio_queue() (fwk_audio.c)
del: Deprecated UI_THEME_MONOCHROME directive (fwk_ui)
lab: Resumed editor2 work
Stability release:
new: Ability to cook assets on demand. Via -DCOOK_ON_DEMAND
directive or --cook-on-demand
flag (cook limited to 1 thread for now, though)
new: SF3 soundfont support (3rd_tsf.h)
new: FUR audio modules support
new: clang-cl compiler support (MAKE clang-cl
)
new: MIDI API (no linux, no mingw)
new: Timer API
new: Cursors API
new: Signal traps API
new: DOOM game port (demos/ports/doom)
new: Anarch game port (no mouse) (demos/ports/anarch)
new: Capture software mouse when recording videos
new: Install signal handlers on debug builds automatically (signals_install)
new: Tweak tcc batch files to emit 64-bit binaries always (win)
new: Switch to a much better quality soundfont (midi2wav)
new: Do not memory poison on release builds (fwk_memory)
new: Allow makefile to compile demos individually: MAKE.bat demos/00-sprite.c
(MAKE.bat)
new: New makefile flags: nofwk
,nodemos
,noeditor
to prevent from building extra stuff (MAKE.bat)
new: New cook flags: --cook-ini
, --cook-debug
, --cook-additive
, --cook-jobs=N
, --cook-compressor=type
, COOK_DEBUGLOG
new: ui_menu_editbox()
, ui_stringf()
, ui_double()
, ui_unsigned()
new: is(32)
, is(64)
, is(debug)
, is(release)
new: profile_setstat()
new: app_cmdline()
new: ini_destroy()
new: tty_attach()
new: AUDIO_8KHZ
, AUDIO_11KHZ
new: ASSERT_ONCE()
brk: vfs() API handles cooked assets now: use file() API for raw file processing
brk: cooker()
API > cook()
API
brk: FWK_INI > COOK_INI
, fwk.ini > tools/cook.ini
brk: --with-wine > --cook-wine
brk: new signatures for cook_config()
, cook_start()
brk: fullscreen_rgb_quad() > fullscreen_quad_rgb()
, fullscreen_ycbcr_quad() > fullscreen_quad_ycbcr()
brk: download() > download_file()
, ui_context/end() > ui_contextual/end()
brk: --with-camera-smooth > --camera-smooth
, --with-vsync > --vsync
, --with-vsync-adaptive > --vsync-adaptive
brk: split/ > tools/split/
brk: threadlocal > __thread
brk: WITH_XREALLOC_POISON > WITH_MEMORY_POISON
, WITH_PROFILE > WITH_PROFILER
chg: Simplify project structure again
chg: Allow tcc builds to display the progress bar screen as well (cook)
chg: Bump up tcc(win), (HEAD b4df681-mod, pre-0.9.28), 3rd_tsf.h (0.8 > 0.9), 3rd_miniaudio.h (0.11.8 > 0.11.11), tlse version (TLS13)
chg: Decrease framerate rendering on progress bar screen (cook)
chg: Generate dev builds by default now (MAKE.bat)
chg: Generate symbols on dbg or dev targets now (MAKE.bat)
chg: Increase thread priority for cook thread #0 (cook)
chg: Print cmdline args into window title as well (window)
chg: Unify infos for all existing profiler markers
chg: Remove ui_section()
separator
fix: All existing bugs in tcc -m64 builds (win)
fix: Use ASAN on debug targets when possible (MAKE.bat)
fix: Allow .ini values to contain ~
char on them (ini)
fix: Audio queue API can consume mono samples now (audio_queue)
fix: Crash on audio decoding
fix: Division by zero (stbtt)
fix: Downloads on dll builds (download() + fwk.dll
combo on win+cl,gcc,clang-cl)
fix: Improve input logic/response rate (fwk_input)
fix: Memory stomp (file_pathabs)
fix: Panels and windows incorrectly resizing to a minimum area (tcc+linux only) (fwk_ui)
fix: Process malformed cooked assets only once (optimization)
fix: Fix libm ABI issues (tcc64+win)
fix: nk_dtoa()
not parsing UINT_MAX (3rd_nuklear.h)
fix: Allow up to 256 cooks
fix: Bug preventing to use --cook-on-demand
flag on lua demos
fix: Clang warnings (osx)
fix: Do not assert when invalid args are provided (cache_insert)
fix: Optimized cook times (~2s)
fix: Optimized window creation time
fix: Incorrect vfs paths when mounting ./
virtual folders (vfs_load)
fix: Missing profiler tab when cook_on_demand was enabled (profile_render)
fix: Multiple ui_string()
calls not blurring widget focus when editing was done (enter key)
fix: Promote 64 mib static allocation to heap (3rd_https.h)
fix: Rebuilt mid2wav
(win,lin,osx)
fix: Rebuilt tools/cook
(win,lin,osx)
fix: Reenable old implementation for each_substring()
which is more recursive friendly
fix: Silence jo_mp1, 3rd_compress, fwk_string warnings (gcc+clang,ubuntu16)
fix: Silence warnings (clang-cl)
fix: Ubuntu16 linking flags (MAKE.bat)
fix: Update docs
fix: Update roadmap
fix: Use a more robust base64 decoder (fwk_data)
del: Simplify directives: removed OPTIMIZE
, O_FLAG
, RELEASE
, WITH_DLL
, FINAL
flags
lab: Start new editor iteration
lab: Experimental zig-cc
compiler support
lab: Draft for a fair hybrid p2p model paper (editor/labs.vm/hybrid-p2p.md)
new: XML API (fwk_data.c)
new: Compression API (fwk_data.c)
new: Tilemap + Tileset APIs (fwk_render.c)
new: Tiled demo (00-tiled.c)
new: Tilemap demo (00-tilemap.c)
new: Pinned windows are movable now (fwk_ui.c)
new: Pipeline allows specification of multiple ART dirs now (fwk.ini)
new: Logos from midjourney (editor/logos)
new: fractf()
(fwk_math.c)
new: array_shuffle()
(fwk_ds.h)
new: sprite_rect()
(fwk_render.c)
new: ddraw_push2d()/ddraw_pop2d()
(fwk_renderdd.c)
new: ui_label2_toolbar()
, ui_texture()/ui_subtexture()/ui_subimage()
(fwk_ui.c)
new: audio_stop()
, AUDIO_SINGLE_INSTANCE/AUDIO_MULTIPLE_INSTANCES
flags (fwk_audio.c)
chg: demo_model.c
> demo_anims.c
chg: Better anim controls (demos/demo_model.c)
fix: Allow json ints to be parsed as floats as well (data_float)
fix: Allow json maps to be accessed by index as well (fwk_data.c)
fix: Allow json nulls to be parsed as empty strings as well (data_string)
fix: Expose ICON_MD symbols when generating single-header distribution (MAKE.bat)
fix: Fixed couple of minor gcc/clang warnings (linux)
fix: Improve anim controller on small deltas + anim boundaries edge cases (model_animate_clip)
fix: Initial frame after kicking new animation (demo_anims.c)
fix: Support cross 32/64-bits builds mingw64 -m32
(x64->x86), tcc -m64
(x86->x64) (win)
fix: tcc can produce/consume artwork from/to vc/gcc/clang cooks now
fix: tcc -run
flag
fix: Rebuilt tools/cook
(win,osx,lin)
fix: Ubuntu16 fixes (MAKE.bat, mod2wav.linux)
fix: Set random seed during boot (fwk_main.c)
fix: Simplified animlist.txt spec format (animlist.txt+demo_anims.c)
fix: Reworked pipeline tutorial so it's hopefully easier to follow (fwk.ini)
fix: ui_subimage()
variants can accept null captions now (fwk_ui.c)
fix: Update docs
fix: Update make checkmem
(MAKE.bat)
brk: tile() > sprite()
, sprite() > sprite_sheet()
brk: Deprecate rng()
(fwk_math.c)
brk: Remove xml2json
tools (tools/)
lab: Incomplete Spine loader demo (00-spine.c)