update docs

main
Dominik Madarász 2023-09-08 14:33:36 +02:00
parent 4bd94d7824
commit f77e03123b
4 changed files with 44 additions and 320 deletions

View File

@ -463,7 +463,7 @@ if "%1"=="web" (
if "%1"=="vps" ( if "%1"=="vps" (
call make.bat git call make.bat git
tools\pscp -4 -batch -agent -P 22 -l app engine\v4k.html 128.140.14.212:/home/app/microblog/app/static/v4k/index.html tools\pscp -4 -batch -agent -P 22 -l app engine\v4k.html 128.140.14.212:/home/app/microblog/app/static/v4k/index.html
tools\pscp -4 -batch -agent -P 22 -l app engine\joint\v4k.h 128.140.14.212:/home/app/microblog/app/static/v4k/v4k.h rem tools\pscp -4 -batch -agent -P 22 -l app engine\joint\v4k.h 128.140.14.212:/home/app/microblog/app/static/v4k/v4k.h
exit /b exit /b
) )

149
README.md
View File

@ -3,17 +3,9 @@
3D multimedia workbench in C, with Luajit and Python bindings.<br/> 3D multimedia workbench in C, with Luajit and Python bindings.<br/>
</p> </p>
## Download ## Features
- [v4k.h](https://v4k.dev/v4k.h)
- ~~workbench.exe~~
## Goals
- [x] ~~Full featured~~, ~~Fast~~, ~~Modern C++~~. Small, Naive, Simple C.
- [x] ~~Rich build system~~, ~~Royaltie fee~~. Single file, Freely unlicensed.
## Features ᕦ(ᐛ)ᕤ
- [x] Pipeline: configurable and integrated [asset pipeline](tools/cook.ini). - [x] Pipeline: configurable and integrated [asset pipeline](tools/cook.ini).
- [x] Embedded: [single-file header](engine/joint/fwk.h), all dependencies included. - [x] Embedded: single-file header, all dependencies included.
- [x] Compiler: MSVC, MINGW64, TCC, GCC, clang, clang-cl and emscripten. - [x] Compiler: MSVC, MINGW64, TCC, GCC, clang, clang-cl and emscripten.
- [x] Linkage: Both static linkage and dynamic .dll/.so/.dylib support. - [x] Linkage: Both static linkage and dynamic .dll/.so/.dylib support.
- [x] Platform: Windows, Linux and OSX. Partial HTML5/Web support. - [x] Platform: Windows, Linux and OSX. Partial HTML5/Web support.
@ -24,6 +16,7 @@
- [x] Input: keyboard, mouse and gamepads. - [x] Input: keyboard, mouse and gamepads.
- [x] Script: Lua scripting, Luajit bindings. - [x] Script: Lua scripting, Luajit bindings.
- [x] Network: downloads (HTTPS) and sockets (TCP/UDP). <!-- [*] Object, GameObject, W/ECS --> - [x] Network: downloads (HTTPS) and sockets (TCP/UDP). <!-- [*] Object, GameObject, W/ECS -->
- [x] Network: Game sync module
- [x] AI: Swarm/Boids. - [x] AI: Swarm/Boids.
- [x] UI: button, list, slider, toggle, checkbox, editbox, dialog, color, image, menu, window, notify... - [x] UI: button, list, slider, toggle, checkbox, editbox, dialog, color, image, menu, window, notify...
- [x] Font: TTF, OTF and TTC. Basic syntax highlighter. Glyph ranges. Atlasing. - [x] Font: TTF, OTF and TTC. Basic syntax highlighter. Glyph ranges. Atlasing.
@ -42,6 +35,7 @@
- [x] Render: 2D Sprites, spritesheets, AA zooming and batching. - [x] Render: 2D Sprites, spritesheets, AA zooming and batching.
- [x] Render: 2D Tilemaps and tilesets: TMX, TSX. - [x] Render: 2D Tilemaps and tilesets: TMX, TSX.
- [x] Render: Compute shaders and SSBO support. - [x] Render: Compute shaders and SSBO support.
- [x] Render: Geometry shaders.
- [x] Compression: DEFLATE, LZMA, LZ4, ULZ, BALZ, BCM, CRUSH, LZW3, LZSS and PPP. - [x] Compression: DEFLATE, LZMA, LZ4, ULZ, BALZ, BCM, CRUSH, LZW3, LZSS and PPP.
- [x] Virtual filesystem: ZIP, PAK, TAR and DIR. - [x] Virtual filesystem: ZIP, PAK, TAR and DIR.
- [x] Level data: JSON, JSON5, SJSON, XML, INI. - [x] Level data: JSON, JSON5, SJSON, XML, INI.
@ -51,135 +45,6 @@
- [x] [Editor (wip)](https://user-images.githubusercontent.com/35402248/174457347-f787a6a2-aac8-404c-a5da-f44310c3d432.mp4). - [x] [Editor (wip)](https://user-images.githubusercontent.com/35402248/174457347-f787a6a2-aac8-404c-a5da-f44310c3d432.mp4).
- [x] [Documentation (wip)](https://bit.ly/v4k2023). - [x] [Documentation (wip)](https://bit.ly/v4k2023).
## Roadmap ᕕ(ᐛ)ᕗ (in order of arrival; ✱: partial support)
- [ ] AI pass: actors, waypoints, pathfinding, behavior trees (h/fsm,goap), and navmesh generation.
- [ ] Network/VM pass: Entity/component/systems and worlds. <!-- W/ECS, gameobj, serialization:load/save/merge, diff/patch ;; dead reckoning, interpolation, extrapolation, bandwidth budgets -->
- [ ] Core pass: struct serialization.
- [ ] Message pipeline and replication. <!-- manual/replication channels, node sharding/clustering. -->
- [ ] Digital signals, message buffering and event polling.
- [ ] World streaming and level loading.
- [ ] Scenegraphs and spatial partioning. BVH, PVS, occluders, frustum culling.
- [ ] Server/client architecture. Hybrid P2P.
- [ ] NAT traversal. Socketless API, message API and pub/sub wrappers (enet/websocket).
- [ ] Editor pass = netbased + offline rendering + virtual input.
- [ ] Basic: Gizmos✱, scene tree, property editor✱, load/save✱, undo/redo✱, copy/paste, on/off (vis,tick,ddraw,log), vcs.
- [ ] Scenenode: node singleton display, node console, node labels, node outlines✱.<!-- node == gameobj ? -->
- [ ] Debug: toggles on/off (billboards✱, materials, un/lit, cast shadows, wireframe, skybox✱/mie✱, fog/atmosphere, collide✱, physics).
- [ ] Level: volumes, triggers, platforms, level streaming.
- [ ] Sub-editor: timeline and data tracks, node graphs. <!-- worthy: will be reused into materials, animgraphs and blueprints -->
- [ ] Sub-editor: Procedural content, brushes, noise and CSG.
- [ ] Sub-editor: blendshapes, additive anims, head/foot/hand IKs.
- [ ] Script pass: DLL✱ (module->plugin/sys), Lua✱, Luajit✱, Teal✱ and TypeScript.
- [ ] Render pass: reverse-Z, automatic LODs, impostors, decals.
- [ ] Materials: (colors✱, textures✱, matcaps✱, videos✱, shadertoys✱). Shadertoys as post-fx✱. <!--materials as postfx, as they have an update() method -->
- [ ] Lighting: Hard/soft shadow mapping (VSM,CCSM). Baked lightmaps. Refl probes. Integrated PBR.
- [ ] Tools pass
- [ ] Extend shaders + bindings. Per-platform✱, per-type✱, per-asset options. GIF, PKM.
- [ ] Extend atlas (sprite/lightmaps). Fit packing (sprites).
- [ ] Extend bindings and messaging: parse C headers during cooking stage. <!-- msgs,docs,refl,meta,lua -- (*.c, *.h) as .proto/.pbc maybe, free reflection+automatic bindings -->
- [ ] API pass
- [ ] Extend math: quat2, bezier, catmull.
- [ ] Discuss API and freeze it.
- [ ] Document everything.
<!--
Nice to have/extend (engine dependant):
- Animation pass: playlists, additive, blend/shapes, ik/bones, animgraph/controllers.
// 6) anims, I (playlist: ~~forward/backwards/loop/rewind)~~, II (~~blend~~/shapes), III (ik/bone), IV (graph/controller)
// ~~blend anims~~, animtracks+animevents, additive anims,
// v4k_data: quantization: ~~half, quant, microfloat~~.
// anim; ~~keyframes[] { frame+delay,frame+delay,... }, anim duration, anim flip,~~
// anim tracks / anim events
- Audio pass: 3D audio, HRTF, FFT, filtering and sound occlusion.
- Design pass: Dialogue, quests and inventory.
- Design pass: Input gestures and combos.
- Design pass: Integrated cinematics QTE.
- Design pass: Scripting, bindings and game modules.
- Design pass: Scripting: DLL (module->plugin/sys), Lua, Luajit, Teal and TypeScript.
- FX pass: Particles, billboards, emitters, trails and paths.
- Tools pass: Asset journaling.
// expose uniforms as ui options, also model_uniform();
// Pipeline: Extend asset pipeline (shaders, bindings, xml). Asset options.
// cook: slang: hlsl2glsl (XShaderCompiler), hlsl2spirv (dxc), spirv2many (spirv-cross), glsl2many (sokol-shdc)
// cook: tlfx22json
- Render pass: Frustum culling.
- Render pass: FX: particles and emitters (TLFX2), kawaii physics, clothes, breakables.
- Render pass: Lighting: hard/soft shadow mapping, spotlights (VSM), omnilights (VSMCube), CSM and baked lightmaps.
// lightmaps: https://blackpawn.com/texts/lightmaps/default.html
// https://github.com/jpcy/xatlas
- Render pass: Material: colors, textures, matcaps, videos, shadertoys. Shadertoys as post-fx.
- Render pass: Render: LODs, object instancing, billboards, impostors, decals, reflection probes.
// lod: https://github.com/songrun/SeamAwareDecimater
- Render pass: Skydomes.
- Render pass: Voxels
- Render pass: VR.
- Script pass: Refl/Meta binding tool (during cook stage).
- System pass: Buffer encryption.
- System pass: Mobile iOS/Android, HTML5✱, Web/WASM, RaspberryPi.
- Social pass: Achievements, Scores, Rankings, Friends, Invites, Steam/Itchio 1st-party store integrations, etc.
- UI pass: HUD, UI Widgets, touch input, touch gestures.
- UI pass: Font text layout and shaping, underlining, soft/hard shadows, outlines.
// font: M/SDF https://github.com/WilliamBundy/wiggle https://github.com/Chlumsky/msdf-atlas-gen
- UI pass: Game flow and game UI.
- UI pass: Localization, subtitles and unicode.
Engine types:
- 2DY Pong (70)
- 2DXY Platformer (80) (dizzy, rick dangerous) screens
- 2DXY+ Platformer (80) (megaman) scroll
- 2DXY Arcade (80) (snowbros, bomberman) screens
- 2DXZ Racing (outrun)
- 2DXYZ Isometric adventure (knight lore, diablo)
- AGI (maniac)
- First person shooter (80-90) (wolf3d > doom > hl1)
- First person adventure (bloodwych)
- Text adventure (z)
Nice to have:
- [ ] fix leaks and todos
- [ ] v4k_app: cpu usage, orientation
- [ ] v4k_input: mouse clip, mouse wrap,
- [ ] zip0 seek-vfs optimization. zip_append_file is suboptimal, and requires tons of contiguous memory for giant files.
Almost done:
- [x] shadertoy textures
- [*] billboards (follow sprite API? state instead? ie, billboard(true); before rendering?)
- Docs pass: API, functions, samples, examples, pipeline.
// plan:
//[ ] cam: friction, projections (dimetric, isometric, ...)
//[ ] Render: Materials (textures, matcaps, videos, shadertoys).
// material: fixed color, texture or script that returns color
// animated textures (shadertoys, videos)
// 8) vm/ecs core + engines: custom frontends & backends
// vm: ram, workqueues, threading, priorities, load/save
// service protocols: websocket bqqbarbhg/bq_websocket, https, handshake
// databases, services, quotas, black/whitelists, etc
// 7) network replication & messaging
// network: replication, dead reckoning, interpolation, extrapolation, bandwidth
// network: messaging: un/reliable, fragmentation, priority, etc
// network: topologies: bus, star, p2p, pubsub, etc
// network: filesystem
// int send_game_state(void *ptr, int len, int flags); PROTOCOL_V1|QUANTIZE|COMPRESS|RLE
// int recv_game_state(); compensate, extrapolate, intrapolate(); lerp();
// 9) render+
// 2d: billboards
// IBL/materials (from Foxotron+sgorsten) + shading models
// lightmapping/xatlas (demos), reflection probes
// renderbuckets
// tessellation
// 2d: particles (tlfx2)
// reverse-z {
// fbo attach format D16_UNORM -> D32_SFLOAT
// pipeline depth compare LEQUAL -> GEQUAL
// pipeline depth clear 1.0 -> 0.0
// proj matrix: float a = zfar / (zfar - znear); -> float a = -znear / (zfar - znear);
// proj matrix: float b = (-znear * zfar) / (zfar - znear); -> float b = (znear * zfar) / (zfar - znear);
// }
-->
## Hello V4K ## Hello V4K
```C ```C
#include "v4k.h" // Minimal C sample #include "v4k.h" // Minimal C sample
@ -237,7 +102,7 @@ echo osx && cc -ObjC hello.c -framework cocoa -framework iokit -fr
<!-- - Note: Windows: Assimp.dll may need [this package installed](https://www.microsoft.com/en-us/download/confirmation.aspx?id=30679).--> <!-- - Note: Windows: Assimp.dll may need [this package installed](https://www.microsoft.com/en-us/download/confirmation.aspx?id=30679).-->
## Credits ## Credits
**Original** Big big thanks to [r-lyeh](https://github.com/r-lyeh/fwk) for the amazing FWK base! **Original** Big big thanks to [r-lyeh](https://github.com/r-lyeh/fwk) for the amazing FWK base!<br/>
**Artwork** **Artwork**
[Dean Evans, Raijin](https://youtu.be/RRvYkrrpMKo?t=147 "for the Map song (c)"), [Dean Evans, Raijin](https://youtu.be/RRvYkrrpMKo?t=147 "for the Map song (c)"),
[FMS_Cat](https://gist.github.com/FMS-Cat/a1ccea3ce866c34706084e3526204f4f "for nicest VHS/VCR shader around (MIT)"), [FMS_Cat](https://gist.github.com/FMS-Cat/a1ccea3ce866c34706084e3526204f4f "for nicest VHS/VCR shader around (MIT)"),
@ -317,5 +182,5 @@ echo osx && cc -ObjC hello.c -framework cocoa -framework iokit -fr
- [Rxi](https://github.com/rxi/autobatch "for lovely sprites & cats demo (MIT)") - [Rxi](https://github.com/rxi/autobatch "for lovely sprites & cats demo (MIT)")
--> -->
## Unlicense ## License
This software is released into the [public domain](https://unlicense.org/). Also dual-licensed as [0-BSD](https://opensource.org/licenses/0BSD) or [MIT (No Attribution)](https://github.com/aws/mit-0) for those countries where public domain is a concern (sigh). Any contribution to this repository is implicitly subjected to the same release conditions aforementioned. All Rights Reserved. Access provided with written permission. Internal use only.

View File

@ -596,14 +596,17 @@ details > summary::-webkit-details-marker {
|Version: | 2023.9 | |Version: | 2023.9 |
|:--------------|:------------| |:--------------|:------------|
|Branch: | main | |Branch: | main |
|Commit: | 72 | |Commit: | 73 |
<!--| Documentation last modified | { {LAST_MODIFIED} } |--> <!--| Documentation last modified | { {LAST_MODIFIED} } |-->
# [V·4·K 2023.9 ](https://dev.v4.games/zaklaus/v4k) # [V·4·K 2023.9 ](https://v4k.dev)
## a b o u t ## a b o u t
- https://dev.v4.games/zaklaus/v4k is a multimedia workbench for prototyping and planning ideas. - V4K is a multimedia workbench for prototyping and planning ideas.
- Internal use only.
- Original repo at [FWK](https://github.com/r-lyeh/FWK). Huge thanks for the amazing base provided!
<br/>
<details><summary>Code style</summary> <details><summary>Code style</summary>
```C linenumbers ```C linenumbers
/// ## Markdown comments when documenting (3 slashes) /// ## Markdown comments when documenting (3 slashes)
@ -639,27 +642,11 @@ void assert_positive( int my_int ) { // lowercase snake_case everywhere
</details> </details>
<details><summary>Download</summary> <details><summary>Features</summary>
- [v4k.h](https://v4k.dev/v4k.h)
- ~~workbench.exe~~
</details>
<details><summary>Goals</summary>
- [x] ~~Full featured~~, ~~Fast~~, ~~Modern C++~~. Small, Naive, Simple C.
- [x] ~~Rich build system~~, ~~Royaltie fee~~. Single file, Freely unlicensed.
</details>
<details><summary>Features ᕦ(ᐛ)ᕤ</summary>
- [x] Pipeline: configurable and integrated [asset pipeline](tools/cook.ini). - [x] Pipeline: configurable and integrated [asset pipeline](tools/cook.ini).
- [x] Embedded: [single-file header](engine/joint/fwk.h), all dependencies included. - [x] Embedded: single-file header, all dependencies included.
- [x] Compiler: MSVC, MINGW64, TCC, GCC, clang, clang-cl and emscripten. - [x] Compiler: MSVC, MINGW64, TCC, GCC, clang, clang-cl and emscripten.
- [x] Linkage: Both static linkage and dynamic .dll/.so/.dylib support. - [x] Linkage: Both static linkage and dynamic .dll/.so/.dylib support.
- [x] Platform: Windows, Linux and OSX. Partial HTML5/Web support. - [x] Platform: Windows, Linux and OSX. Partial HTML5/Web support.
@ -670,6 +657,7 @@ void assert_positive( int my_int ) { // lowercase snake_case everywhere
- [x] Input: keyboard, mouse and gamepads. - [x] Input: keyboard, mouse and gamepads.
- [x] Script: Lua scripting, Luajit bindings. - [x] Script: Lua scripting, Luajit bindings.
- [x] Network: downloads (HTTPS) and sockets (TCP/UDP). <!-- [*] Object, GameObject, W/ECS --> - [x] Network: downloads (HTTPS) and sockets (TCP/UDP). <!-- [*] Object, GameObject, W/ECS -->
- [x] Network: Game sync module
- [x] AI: Swarm/Boids. - [x] AI: Swarm/Boids.
- [x] UI: button, list, slider, toggle, checkbox, editbox, dialog, color, image, menu, window, notify... - [x] UI: button, list, slider, toggle, checkbox, editbox, dialog, color, image, menu, window, notify...
- [x] Font: TTF, OTF and TTC. Basic syntax highlighter. Glyph ranges. Atlasing. - [x] Font: TTF, OTF and TTC. Basic syntax highlighter. Glyph ranges. Atlasing.
@ -688,6 +676,7 @@ void assert_positive( int my_int ) { // lowercase snake_case everywhere
- [x] Render: 2D Sprites, spritesheets, AA zooming and batching. - [x] Render: 2D Sprites, spritesheets, AA zooming and batching.
- [x] Render: 2D Tilemaps and tilesets: TMX, TSX. - [x] Render: 2D Tilemaps and tilesets: TMX, TSX.
- [x] Render: Compute shaders and SSBO support. - [x] Render: Compute shaders and SSBO support.
- [x] Render: Geometry shaders.
- [x] Compression: DEFLATE, LZMA, LZ4, ULZ, BALZ, BCM, CRUSH, LZW3, LZSS and PPP. - [x] Compression: DEFLATE, LZMA, LZ4, ULZ, BALZ, BCM, CRUSH, LZW3, LZSS and PPP.
- [x] Virtual filesystem: ZIP, PAK, TAR and DIR. - [x] Virtual filesystem: ZIP, PAK, TAR and DIR.
- [x] Level data: JSON, JSON5, SJSON, XML, INI. - [x] Level data: JSON, JSON5, SJSON, XML, INI.
@ -699,139 +688,6 @@ void assert_positive( int my_int ) { // lowercase snake_case everywhere
</details> </details>
<details><summary>Roadmap ᕕ(ᐛ)ᕗ (in order of arrival; ✱: partial support)</summary>
- [ ] AI pass: actors, waypoints, pathfinding, behavior trees (h/fsm,goap), and navmesh generation.
- [ ] Network/VM pass: Entity/component/systems and worlds. <!-- W/ECS, gameobj, serialization:load/save/merge, diff/patch ;; dead reckoning, interpolation, extrapolation, bandwidth budgets -->
- [ ] Core pass: struct serialization.
- [ ] Message pipeline and replication. <!-- manual/replication channels, node sharding/clustering. -->
- [ ] Digital signals, message buffering and event polling.
- [ ] World streaming and level loading.
- [ ] Scenegraphs and spatial partioning. BVH, PVS, occluders, frustum culling.
- [ ] Server/client architecture. Hybrid P2P.
- [ ] NAT traversal. Socketless API, message API and pub/sub wrappers (enet/websocket).
- [ ] Editor pass = netbased + offline rendering + virtual input.
- [ ] Basic: Gizmos✱, scene tree, property editor✱, load/save✱, undo/redo✱, copy/paste, on/off (vis,tick,ddraw,log), vcs.
- [ ] Scenenode: node singleton display, node console, node labels, node outlines✱.<!-- node == gameobj ? -->
- [ ] Debug: toggles on/off (billboards✱, materials, un/lit, cast shadows, wireframe, skybox✱/mie✱, fog/atmosphere, collide✱, physics).
- [ ] Level: volumes, triggers, platforms, level streaming.
- [ ] Sub-editor: timeline and data tracks, node graphs. <!-- worthy: will be reused into materials, animgraphs and blueprints -->
- [ ] Sub-editor: Procedural content, brushes, noise and CSG.
- [ ] Sub-editor: blendshapes, additive anims, head/foot/hand IKs.
- [ ] Script pass: DLL✱ (module->plugin/sys), Lua✱, Luajit✱, Teal✱ and TypeScript.
- [ ] Render pass: reverse-Z, automatic LODs, impostors, decals.
- [ ] Materials: (colors✱, textures✱, matcaps✱, videos✱, shadertoys✱). Shadertoys as post-fx✱. <!--materials as postfx, as they have an update() method -->
- [ ] Lighting: Hard/soft shadow mapping (VSM,CCSM). Baked lightmaps. Refl probes. Integrated PBR.
- [ ] Tools pass
- [ ] Extend shaders + bindings. Per-platform✱, per-type✱, per-asset options. GIF, PKM.
- [ ] Extend atlas (sprite/lightmaps). Fit packing (sprites).
- [ ] Extend bindings and messaging: parse C headers during cooking stage. <!-- msgs,docs,refl,meta,lua -- (*.c, *.h) as .proto/.pbc maybe, free reflection+automatic bindings -->
- [ ] API pass
- [ ] Extend math: quat2, bezier, catmull.
- [ ] Discuss API and freeze it.
- [ ] Document everything.
<!--
Nice to have/extend (engine dependant):
- Animation pass: playlists, additive, blend/shapes, ik/bones, animgraph/controllers.
// 6) anims, I (playlist: ~~forward/backwards/loop/rewind)~~, II (~~blend~~/shapes), III (ik/bone), IV (graph/controller)
// ~~blend anims~~, animtracks+animevents, additive anims,
// v4k_data: quantization: ~~half, quant, microfloat~~.
// anim; ~~keyframes[] { frame+delay,frame+delay,... }, anim duration, anim flip,~~
// anim tracks / anim events
- Audio pass: 3D audio, HRTF, FFT, filtering and sound occlusion.
- Design pass: Dialogue, quests and inventory.
- Design pass: Input gestures and combos.
- Design pass: Integrated cinematics QTE.
- Design pass: Scripting, bindings and game modules.
- Design pass: Scripting: DLL (module->plugin/sys), Lua, Luajit, Teal and TypeScript.
- FX pass: Particles, billboards, emitters, trails and paths.
- Tools pass: Asset journaling.
// expose uniforms as ui options, also model_uniform();
// Pipeline: Extend asset pipeline (shaders, bindings, xml). Asset options.
// cook: slang: hlsl2glsl (XShaderCompiler), hlsl2spirv (dxc), spirv2many (spirv-cross), glsl2many (sokol-shdc)
// cook: tlfx22json
- Render pass: Frustum culling.
- Render pass: FX: particles and emitters (TLFX2), kawaii physics, clothes, breakables.
- Render pass: Lighting: hard/soft shadow mapping, spotlights (VSM), omnilights (VSMCube), CSM and baked lightmaps.
// lightmaps: https://blackpawn.com/texts/lightmaps/default.html
// https://github.com/jpcy/xatlas
- Render pass: Material: colors, textures, matcaps, videos, shadertoys. Shadertoys as post-fx.
- Render pass: Render: LODs, object instancing, billboards, impostors, decals, reflection probes.
// lod: https://github.com/songrun/SeamAwareDecimater
- Render pass: Skydomes.
- Render pass: Voxels
- Render pass: VR.
- Script pass: Refl/Meta binding tool (during cook stage).
- System pass: Buffer encryption.
- System pass: Mobile iOS/Android, HTML5✱, Web/WASM, RaspberryPi.
- Social pass: Achievements, Scores, Rankings, Friends, Invites, Steam/Itchio 1st-party store integrations, etc.
- UI pass: HUD, UI Widgets, touch input, touch gestures.
- UI pass: Font text layout and shaping, underlining, soft/hard shadows, outlines.
// font: M/SDF https://github.com/WilliamBundy/wiggle https://github.com/Chlumsky/msdf-atlas-gen
- UI pass: Game flow and game UI.
- UI pass: Localization, subtitles and unicode.
Engine types:
- 2DY Pong (70)
- 2DXY Platformer (80) (dizzy, rick dangerous) screens
- 2DXY+ Platformer (80) (megaman) scroll
- 2DXY Arcade (80) (snowbros, bomberman) screens
- 2DXZ Racing (outrun)
- 2DXYZ Isometric adventure (knight lore, diablo)
- AGI (maniac)
- First person shooter (80-90) (wolf3d > doom > hl1)
- First person adventure (bloodwych)
- Text adventure (z)
Nice to have:
- [ ] fix leaks and todos
- [ ] v4k_app: cpu usage, orientation
- [ ] v4k_input: mouse clip, mouse wrap,
- [ ] zip0 seek-vfs optimization. zip_append_file is suboptimal, and requires tons of contiguous memory for giant files.
Almost done:
- [x] shadertoy textures
- [*] billboards (follow sprite API? state instead? ie, billboard(true); before rendering?)
- Docs pass: API, functions, samples, examples, pipeline.
// plan:
//[ ] cam: friction, projections (dimetric, isometric, ...)
//[ ] Render: Materials (textures, matcaps, videos, shadertoys).
// material: fixed color, texture or script that returns color
// animated textures (shadertoys, videos)
// 8) vm/ecs core + engines: custom frontends & backends
// vm: ram, workqueues, threading, priorities, load/save
// service protocols: websocket bqqbarbhg/bq_websocket, https, handshake
// databases, services, quotas, black/whitelists, etc
// 7) network replication & messaging
// network: replication, dead reckoning, interpolation, extrapolation, bandwidth
// network: messaging: un/reliable, fragmentation, priority, etc
// network: topologies: bus, star, p2p, pubsub, etc
// network: filesystem
// int send_game_state(void *ptr, int len, int flags); PROTOCOL_V1|QUANTIZE|COMPRESS|RLE
// int recv_game_state(); compensate, extrapolate, intrapolate(); lerp();
// 9) render+
// 2d: billboards
// IBL/materials (from Foxotron+sgorsten) + shading models
// lightmapping/xatlas (demos), reflection probes
// renderbuckets
// tessellation
// 2d: particles (tlfx2)
// reverse-z {
// fbo attach format D16_UNORM -> D32_SFLOAT
// pipeline depth compare LEQUAL -> GEQUAL
// pipeline depth clear 1.0 -> 0.0
// proj matrix: float a = zfar / (zfar - znear); -> float a = -znear / (zfar - znear);
// proj matrix: float b = (-znear * zfar) / (zfar - znear); -> float b = (znear * zfar) / (zfar - znear);
// }
-->
</details>
<details><summary>Hello V4K</summary> <details><summary>Hello V4K</summary>
@ -907,7 +763,7 @@ echo osx && cc -ObjC hello.c -framework cocoa -framework iokit -fr
<details><summary>Credits</summary> <details><summary>Credits</summary>
**Original** Big big thanks to [r-lyeh](https://github.com/r-lyeh/fwk) for the amazing FWK base! **Original** Big big thanks to [r-lyeh](https://github.com/r-lyeh/fwk) for the amazing FWK base!<br/>
**Artwork** **Artwork**
[Dean Evans, Raijin](https://youtu.be/RRvYkrrpMKo?t=147 "for the Map song (c)"), [Dean Evans, Raijin](https://youtu.be/RRvYkrrpMKo?t=147 "for the Map song (c)"),
[FMS_Cat](https://gist.github.com/FMS-Cat/a1ccea3ce866c34706084e3526204f4f "for nicest VHS/VCR shader around (MIT)"), [FMS_Cat](https://gist.github.com/FMS-Cat/a1ccea3ce866c34706084e3526204f4f "for nicest VHS/VCR shader around (MIT)"),
@ -989,10 +845,10 @@ echo osx && cc -ObjC hello.c -framework cocoa -framework iokit -fr
</details> </details>
<details><summary>Unlicense</summary> <details><summary>License</summary>
This software is released into the [public domain](https://unlicense.org/). Also dual-licensed as [0-BSD](https://opensource.org/licenses/0BSD) or [MIT (No Attribution)](https://github.com/aws/mit-0) for those countries where public domain is a concern (sigh). Any contribution to this repository is implicitly subjected to the same release conditions aforementioned. All Rights Reserved. Access provided with written permission. Internal use only.
</details> </details>
## config ## config
@ -8848,7 +8704,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
## shaders ## shaders
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const fs_0_0_shadowmap_lit;</code></summary> <details><summary><code lang=C> extern const char* const fs_0_0_shadowmap_lit;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8857,7 +8713,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const fs_0_0_shadowmap_unlit;</code></summary> <details><summary><code lang=C> extern const char* const fs_0_0_shadowmap_unlit;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8866,7 +8722,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const fs_24_4_sprite;</code></summary> <details><summary><code lang=C> extern const char* const fs_24_4_sprite;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8875,7 +8731,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const fs_2_4_preamble;</code></summary> <details><summary><code lang=C> extern const char* const fs_2_4_preamble;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8884,7 +8740,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const fs_2_4_texel_inv_gamma;</code></summary> <details><summary><code lang=C> extern const char* const fs_2_4_texel_inv_gamma;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8893,7 +8749,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const fs_2_4_texel_ycbr_gamma_saturation;</code></summary> <details><summary><code lang=C> extern const char* const fs_2_4_texel_ycbr_gamma_saturation;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8902,7 +8758,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const fs_32_4_model;</code></summary> <details><summary><code lang=C> extern const char* const fs_32_4_model;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8911,7 +8767,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const fs_32_4_model_basic;</code></summary> <details><summary><code lang=C> extern const char* const fs_32_4_model_basic;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8920,7 +8776,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const fs_3_4_skybox;</code></summary> <details><summary><code lang=C> extern const char* const fs_3_4_skybox;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8929,7 +8785,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const fs_3_4_skybox_rayleigh;</code></summary> <details><summary><code lang=C> extern const char* const fs_3_4_skybox_rayleigh;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8938,7 +8794,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const fs_main_shadertoy;</code></summary> <details><summary><code lang=C> extern const char* const fs_main_shadertoy;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8947,7 +8803,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const vs_0_2_fullscreen_quad_A;</code></summary> <details><summary><code lang=C> extern const char* const vs_0_2_fullscreen_quad_A;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8956,7 +8812,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const vs_0_2_fullscreen_quad_B;</code></summary> <details><summary><code lang=C> extern const char* const vs_0_2_fullscreen_quad_B;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8965,7 +8821,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const vs_0_2_fullscreen_quad_B_flipped;</code></summary> <details><summary><code lang=C> extern const char* const vs_0_2_fullscreen_quad_B_flipped;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8974,7 +8830,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const vs_323444143_16_332_model;</code></summary> <details><summary><code lang=C> extern const char* const vs_323444143_16_332_model;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8983,7 +8839,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const vs_324_24_sprite;</code></summary> <details><summary><code lang=C> extern const char* const vs_324_24_sprite;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -8992,7 +8848,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const vs_332_32;</code></summary> <details><summary><code lang=C> extern const char* const vs_332_32;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.
@ -9001,7 +8857,7 @@ Other documentation examples: [dll](#dll), [strsplit](#strsplit), [strjoin](#str
</details> </details>
<a name=""></a> <a name=",TEXTURE_BGR"></a>
<details><summary><code lang=C> extern const char* const vs_3_3_skybox;</code></summary> <details><summary><code lang=C> extern const char* const vs_3_3_skybox;</code></summary>
Under construction. Yet to be documented. Under construction. Yet to be documented.

View File

@ -4,11 +4,14 @@
|Commit: | {{GIT_REVISION}} | |Commit: | {{GIT_REVISION}} |
<!--| Documentation last modified | { {LAST_MODIFIED} } |--> <!--| Documentation last modified | { {LAST_MODIFIED} } |-->
# [V·4·K {{VERSION}}](https://dev.v4.games/zaklaus/v4k) # [V·4·K {{VERSION}}](https://v4k.dev)
## a b o u t ## a b o u t
- https://dev.v4.games/zaklaus/v4k is a multimedia workbench for prototyping and planning ideas. - V4K is a multimedia workbench for prototyping and planning ideas.
- Internal use only.
- Original repo at [FWK](https://github.com/r-lyeh/FWK). Huge thanks for the amazing base provided!
<br/>
<details><summary>Code style</summary> <details><summary>Code style</summary>
```C linenumbers ```C linenumbers
/// ## Markdown comments when documenting (3 slashes) /// ## Markdown comments when documenting (3 slashes)