Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
26a1bf9
audio: implement procedural music, audio module, and physical frictio…
damacaa Aug 30, 2026
9b0230f
audio: fix collision noise popping by interpolating gain across chunk…
damacaa Aug 30, 2026
a280ea0
audio: implement shape-driven procedural music engine, physics audio,…
damacaa Sep 6, 2026
7429c26
Merge branch 'main' into feature/procedural-music
damacaa Sep 7, 2026
f50c0ad
scene: add collapsible settings with music, friction, and continuous …
damacaa Sep 7, 2026
d2dacb3
renderer: fix achromatic background causing NaN ambient shadow tint a…
damacaa Sep 9, 2026
32110da
math: unify SDF point sampling and coordinate evaluation
damacaa Sep 9, 2026
543ce8b
audio: enhance procedural music engine with motion levels and fill ra…
damacaa Sep 9, 2026
3bd26ab
tools: add interactive SDF node editor tool
damacaa Sep 9, 2026
e2e99ec
renderer: move neutral gray ImGui theme to SDLInitializer
damacaa Sep 9, 2026
d51d35f
audio: expose audio volume as global SDF variable and unreserve var7
damacaa Sep 9, 2026
c01f86b
audio: evaluate raw unscaled shape in SdfMusicEngine to prevent volum…
damacaa Sep 9, 2026
bf40cdb
tools: add documentation for SDF node editor
damacaa Sep 10, 2026
8813413
tools: update sdf node editor UI, add recent files tracking, and simp…
damacaa Sep 10, 2026
f23d384
renderer: derive instrument rack and synthesis parameters from AST to…
damacaa Sep 10, 2026
7e9c9ac
tools: refactor sdf-node-editor architecture, add parameter renaming,…
damacaa Sep 11, 2026
134b04c
audio: nicer lead wave
damacaa Sep 11, 2026
2700e29
audio: modernize DSP engine, add sequential track death, tactile UI c…
damacaa Sep 11, 2026
a437834
audio: decouple collision impact surge from songs and lengthen UI cli…
damacaa Sep 11, 2026
12b458d
audio: extract weird-audio module from weird-renderer and refactor en…
damacaa Sep 11, 2026
e71890b
audio: add master DC blocker and fix lead overdrive DC bias
damacaa Sep 11, 2026
9b98e82
audio: update audio inspector tab, clean obsolete hooks, add beat syn…
damacaa Sep 12, 2026
4f96d04
profiler: keep 'Others' scope visible after it first exceeds the thre…
damacaa Sep 12, 2026
0bbda5d
audio: add surface complexity metric driving tension independently of…
damacaa Sep 12, 2026
b256c2e
audio: make song visualization opt-in via SongVisualizationMode
damacaa Sep 12, 2026
c95cb38
audio: smooth duck/surge attack and fade lead voices instead of trunc…
damacaa Sep 12, 2026
559f95c
audio: replace lead melody with pentatonic SDF tracing, slow motion a…
damacaa Sep 12, 2026
98f1dac
web: share HTML shell via cmake template and add SDF editor web file …
damacaa Sep 13, 2026
6f333bc
physics: default-initialize shape collision events and add gravity/da…
damacaa Sep 13, 2026
f8c17b7
audio: spatial multi-voice friction pool, collision mix normalization…
damacaa Sep 13, 2026
1219b8c
examples: spatialize ServiceShowcase collision sounds and skip END ev…
damacaa Sep 13, 2026
2803312
audio: remove unused vendored miniaudio library
damacaa Sep 13, 2026
2237d70
tools: fixed falling balls in sdf editor preview
damacaa Sep 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ There are no tests. CI runs `ctest` but no test targets are defined.
- **Engine is a static library** (`libWeirdEngine.a`) built from `src/` + `include/`.
- Three engine modules (all under one target):
- `weird-engine/` — core: ECS, scenes, input, logging, serialization
- `weird-renderer/` — OpenGL ES SDF ray-marching renderer, audio (miniaudio), shaders, fonts
- `weird-renderer/` — OpenGL ES SDF ray-marching renderer, audio (SDL3 stream), shaders, fonts
- `weird-physics/` — Position-Based Dynamics with SDF collision
- **Examples are separate executables** that `add_subdirectory` the engine root and link `WeirdEngine`. Each has its own `src/`, `include/`, `assets/`.
- `sample-scenes` → `WeirdSamples` (main demo)
Expand All @@ -52,7 +52,7 @@ There are no tests. CI runs `ctest` but no test targets are defined.
## Dependencies

- **Git submodules**: SDL3, imgui (init with `git submodule update --init --recursive`; CMake also runs this automatically).
- **Vendored in `third-party/`**: glad, glm, stb, miniaudio, nlohmann/json, KHR.
- **Vendored in `third-party/`**: glad, glm, stb, nlohmann/json, KHR.

## Style

Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ cmake --build build
For detailed guides, refer to:
- [Scene and ECS Architecture Guide](docs/SCENE_AND_ECS.md)
- [Defining Shapes with SDFs Guide](docs/SDF_SHAPES.md)
- [Procedural Audio & Music Guide](docs/AUDIO.md)

### Creating a Scene

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>Weird3D</title>
<title>@WEIRD_WEB_TITLE@</title>
<style>
html, body {
margin: 0;
Expand Down
423 changes: 423 additions & 0 deletions docs/AUDIO.md

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions docs/MATH.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,9 @@ It supports vector addition, subtraction, scalar multiplication, and scalar divi
```cpp
inline Expr var(int index);
inline Expr time();
inline Vec2Expr worldPoint();
inline Vec2Expr uiPoint();
inline Expr audioVolume();
inline Vec2Expr point();
inline Vec2Expr samplePoint();
```

The parameter convention is:
Expand All @@ -125,10 +126,9 @@ The parameter convention is:
|---|---|
| `var0` through `var7` | Shape-specific parameters. |
| `var8` | Time. |
| `var9` | World X. |
| `var10` | World Y. |
| `var11` | UI X. |
| `var12` | UI Y. |
| `var9` | Sample Point X. |
| `var10` | Sample Point Y. |
| `var11` | Audio Volume. |

### 2D SDF Functions

Expand Down Expand Up @@ -293,7 +293,7 @@ It constructs a star SDF from:
- `var4`: points
- `var5`: speed

The expression is built using `SDF::translate`, `SDF::worldPoint`, and `SDF::sdStar`.
The expression is built using `SDF::translate`, `SDF::point`, and `SDF::sdStar`.

## Compiled Math Expressions

Expand Down
4 changes: 2 additions & 2 deletions docs/SDF_SHAPES.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ Include `#include "weird-engine/math/SDF.h"`.

- **Variables & Points**:
- `var(index)`: Accesses entity parameter float at `index` (`0` to `7`).
- `worldPoint()`: Returns the 2D evaluation coordinate (`worldPoint().x`, `worldPoint().y`).
- `point()`: Returns the 2D evaluation coordinate (`point().x`, `point().y`).
- `time()`: Returns the current scene elapsed time.
- **SDF Primitives**:
- `sdCircle(p, radius)`
Expand Down Expand Up @@ -116,7 +116,7 @@ The following example builds a ring by subtracting an inner circle from an outer
using namespace WeirdEngine::SDF;

// Translate evaluation point by entity position: var(0) = X, var(1) = Y
auto p = translate(worldPoint(), {var(0), var(1)});
auto p = translate(point(), {var(0), var(1)});

// Subtract inner circle (radius = var(3)) from outer circle (radius = var(2))
Expr ring = sdfSubtract(sdCircle(p, var(2)), sdCircle(p, var(3)));
Expand Down
Loading
Loading