Stephen Gutekanst
329fe251ef
gfx: TextPipeline: fix ref counting
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-05-06 14:00:54 -07:00
Stephen Gutekanst
a065c79200
examples: glyphs: do not use event arguments
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-05-06 14:00:54 -07:00
Stephen Gutekanst
7ad38d6eff
Audio: do not use event arguments
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-05-06 14:00:54 -07:00
Ali Chraghi
e711f69fad
Audio: duplicate mono sounds to all channels
2024-05-06 14:00:36 -07:00
Stephen Gutekanst
9d95fcf0c2
Audio: always target 48000hz f32 audio
...
Resampling, which requires fairly involved (and certainly not free) filters,
is needed if the audio we are mixing does not match the sample rate of the
output device. Most OS audio APIs support resampling on their own, but have
preferred hardware formats. Most console hardware since Xbox/PS2/GC supposedly
prefers 48khz natively, but otherwise there seems to be no big preference
between 48khz or 44.1khz.
The important aspect is that we pick one, and encourage people to keep their
audio in one, so that runtime resampling is not required (both in mach itself,
and potentially without-our-knowledge in the OS audio system if we chose a
sample rate which the native hardware does not prefer.)
General guidance will be:
* `mach.Audio` module will always aim to select 48khz, f32 audio output from the
OS APIs. Let the OS APIs do resampling, or if they do not then we can do so.
* We will prefer 48khz, f32 audio samples everywhere internally in our basic audio
mixing etc. APIs.
* Tooling will aim to convert audio to Opus (or flac for lossless) format, with 48khz
and number of channels depending on audio type (e.g. 1ch for most sfx, any number of
channels for bgm, and maybe some exception for multi-channel sfx in the future.)
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-05-05 12:56:21 -07:00
Ali Chraghi
5bd6d0cf3d
add play-opus example
2024-05-05 21:10:07 +03:30
Stephen Gutekanst
cbf066ade5
{gfx,examples}: improve sysgpu compatibility with higher-level examples
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
15fd2c3a64
Core: use an explicit .start event sent by app to begin .tick events
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
8089d3356e
sysgpu: implement texture getWidth/getHeight
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
44f950a7f3
core: provide a default sysgpu interface implementation
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
fc0ff2fffd
all: rename local_events -> events
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
33bfdee520
{module,Audio}: ability to store event name and send it later
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
d690814b16
Core: fix potential printTitle leak
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
136c86e929
examples: fix/improve custom-renderer example
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
2c8ba82aa3
Core: use .app local init/deinit/tick events (avoid global events)
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
fb37f74d41
examples: rename main modules -> App
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
e0640cc948
TextPipeline: make .init and .deinit explicit
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
ed9137fe98
SpritePipeline: make .init and .deinit explicit
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
3504dfcab6
Audio: make deinit explicit
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
4a000c7995
{Core,examples}: add TODO markers for core APIs that require module exposure
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
03a089610b
Core: store framebuffer information as components
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
656b0202f2
Core: add .present_frame event replacing swapbuffers call
...
Note that on e.g. web platform, swapbuffers is not an explicit call.
We also need a signal that the frame has been submitted and finished,
and this is it.
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
431e0dbbe1
{gfx,examples}: use core.state().queue
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
68677b3448
{Core,examples}: set window title via component
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
79dccb4d73
{gfx,examples}: use core.state().device
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-29 20:17:26 -07:00
Stephen Gutekanst
bffc668005
{gfx,examples}: add labels to gpu objects
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 20:29:14 -07:00
Liam Swayne
2b8bfcaa3e
[math] simplify algorithm finding greatest vector
2024-04-21 17:34:15 -07:00
pfg
6a09787496
sysgpu: fix overflow trying to report an error
2024-04-21 17:33:57 -07:00
Ali Chraghi
7991053b37
spirv: sqrt instruction
2024-04-21 17:33:22 -07:00
Stephen Gutekanst
487beaabde
examples: rename sysaudio example -> piano
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 16:38:15 -07:00
Stephen Gutekanst
58ffa2c870
examples: sysaudio: provide better controls
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 16:34:46 -07:00
Stephen Gutekanst
c90dcb4275
build: update version
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 16:28:11 -07:00
Stephen Gutekanst
fc56f296e9
build: organize dependencies; remove currently-unused spirv deps
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 16:27:14 -07:00
Stephen Gutekanst
f078e8f3f9
build: update mach-glfw (fix linux build)
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 15:01:45 -07:00
Stephen Gutekanst
d04cd26c84
use lazyDependency to optimize freetype/font-assets dependency fetching
...
Helps hexops/mach#1197
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 15:01:45 -07:00
Stephen Gutekanst
38fb23e22a
build: fix core example imports
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 15:01:45 -07:00
Stephen Gutekanst
c26d9a40d1
build: use lazy dependencies
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 15:01:45 -07:00
Stephen Gutekanst
51f5721f8b
build: remove currently-unused basisu dependency
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 15:01:45 -07:00
Stephen Gutekanst
e8b95d5076
build: cleanup sysjs dependency utilization
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 15:01:45 -07:00
Stephen Gutekanst
a681a10170
build: use lazyDependency to only download required dependencies
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 15:01:45 -07:00
Stephen Gutekanst
2889468c6b
build: remove App (not CoreApp)
...
This removes the old `App` builder, leaving only `CoreApp` as something
to resolve/remove.
Helps hexops/mach#1186
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-21 15:01:45 -07:00
Stephen Gutekanst
7a1efdaa69
core: cleanup sysgpu feature flag logic
...
* `@import("mach").core.gpu` has been renamed to `@import("mach").gpu`
* `pub const SYSGPUInterface` now has a default value (i.e. you do not need to write it in your main.zig, if you were.)
* You can now check `if (comptime mach.use_sysgpu)` for any conditional code you might have that should only run with sysgpu.
This (old):
```
pub const mach_core_options = core.ComptimeOptions{
.use_wgpu = false,
.use_sysgpu = true,
};
```
Has been replaced by this:
```
pub const use_sysgpu = true;
```
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-19 20:48:33 -07:00
Stephen Gutekanst
6a2358baf8
build: fix WASM builds
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-19 19:34:40 -07:00
Stephen Gutekanst
07d9855f73
core: examples: update import path style
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-19 19:05:18 -07:00
Stephen Gutekanst
78edb10446
build: fix duplicate symbol machDawnGetProcTable
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-19 18:46:04 -07:00
Stephen Gutekanst
2bc17a33fb
module: correct alignment of dispatched arguments; move stack space to caller
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-19 18:05:17 -07:00
Stephen Gutekanst
09c01a79b0
build: fix test build
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-19 17:08:36 -07:00
Stephen Gutekanst
d2179e8f2c
gfx: correct some zls autofixes
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-18 21:04:43 -07:00
Stephen Gutekanst
87a7cd8ed8
engine: remove mach.Engine in favor of mach.Core for now
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-17 11:30:51 -07:00
Stephen Gutekanst
7011ad4848
audio: handle possible invalidated pointer after buffer growth
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-04-17 11:28:37 -07:00