FWK Versions Save

💎 3D game framework in C.

2024.4

1 month ago

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

image

2023.12

4 months ago

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

image

2023.11

5 months ago

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

https://imgur.com/a/98J5woT https://imgur.com/a/1c2Wmst

image

2023.10

6 months ago

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

image

2023.9

7 months ago

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()

image

2023.7

9 months ago

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

99-bt

2023.4

11 months ago

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

image

2023.3

1 year ago

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

image

2023.2

1 year ago

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)

image

2023.1

1 year ago

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)

image