@@ -4,27 +4,95 @@ ChucK VERSIONS log
4
4
5
5
1.5.5.2 (July 2025)
6
6
=======
7
+ --> new ChuGL v0.2.6 (see ChuGL release notes below)
8
+ ~~~~~
9
+ ChucK 1.5.5.2
10
+ =============
7
11
(fixed) windows MIDI support (which was previously broken in 1.5.5.1)
8
- (fixed) examples/analysis/xsynth.ck (thanks to Celeste Betancur and Andrew Zhu Aday)
12
+ (fixed) examples/analysis/xsynth.ck (thanks Celeste Betancur & Andrew Zhu Aday)
9
13
* now performs a proper multi-band cross-synthesis using the magnitude
10
14
in each band of signl X to modulate the corresponding frequency bin
11
15
in signal Y to produce output Z
12
- (added) examples/analysis/xsynth.ck-stereo.ck is the above, with stereo delay added
13
- (added) examples/machine/platform.ck -- getting underlying OS name + system time
16
+ (added) examples/analysis/xsynth.ck-stereo.ck same as above + stereo delay
17
+ (added) examples/machine/platform.ck -- get underlying OS name + system time
14
18
(added) Machine methods
15
19
string Machine.os()
16
20
get the underlying operating system name; possible values include
17
21
"mac", "linux", "windows", "web", "ios", "android", "unknown"
18
22
float Machine.timeOfDay()
19
- returns the time in seconds since the Epoch 1970-01-01 00:00:00 +0000 (UTC).
23
+ returns the time in seconds since Epoch 1970-01-01 00:00:00 +0000 (UTC).
20
24
The returned time has microsecond resolution
21
25
vec2 Machine.timeOfDay2()
22
- identical to Machine.timeOfDay(), only the return value is a vec2 where
23
- x is time in seconds, and y is fractional time in microseconds.
24
- y is guaranteed to be between 0 and 1,000,000. x + y yields the total time.
25
- Useful for situations needing less than 64-bit precision e.g., floats in OSC are
26
- 32-bit and one must send the x and y values separately --
27
- otherwise a significant amount of timing resolution would be lost
26
+ identical to Machine.timeOfDay(), only the return value is a vec2
27
+ where x is time in seconds, and y is fractional time in microseconds.
28
+ y is guaranteed to be between 0 and 1,000,000. x + y yields the total
29
+ time. Useful for situations needing less than 64-bit precision e.g.,
30
+ floats in OSC are 32-bit and one must send the x and y values
31
+ separately -- otherwise a significant amount of timing resolution
32
+ would be lost
33
+ ============
34
+ ChuGL v0.2.6
35
+ ============
36
+ (added) Transparency!! (alpha-blended and sorted back to front)
37
+ - See examples/basic/transparency.ck
38
+ (added) Shadow Mapping (a basic first version)
39
+ - Implemented shadow mapping for GDirLight and GSpotLight
40
+ (GPointLight currently not supported)
41
+ - See examples/deep/shadows.ck
42
+ (reworked) Render graph API
43
+ - `RenderPass` is now the base class of `ScenePass` (which renderas a GScene
44
+ to a target texture, formerly this was called `RenderPass`) and
45
+ `ScreenPass` (which renders a full-screen quad, useful for post processing
46
+ effects)
47
+ - Added new `RenderPass` methods `.clear()`, `.scissor()`,
48
+ `.scissorNormalized()`, `.viewport()` and `.viewportNormalized()`
49
+ - Added `ScenePass.msaa(int)` which can be used to toggle MSAA antialiasing
50
+ - Add resolution, time, delta_time, frame_count, mouse state, and chuck VM
51
+ sample rate info to shader #FRAME_UNIFORMS. Simplifies writing generative
52
+ shaders in shadertoy-style.
53
+ (added) UI improvements:
54
+ - Add `UI.knob(...)` widgets
55
+ - Add `UI.image(...)` and `UI.imageButton(...)` methods, which allow adding
56
+ ChuGL Textures to UI.
57
+ (update) Textures
58
+ - Changed `TextureDesc.mips()` semantics. Set to `true` to generate a full
59
+ mip chain, set to `false` to not create any mips beyond level 0.
60
+ - Add `TextureDesc.resizable`, `TextureDesc.widthRatio` and
61
+ `TextureDesc.heightRatio` to create resizable textures, i.e. textures that
62
+ change in dimensions relative to window resolution. (helpful to make your
63
+ app robust against changing screen sizes)
64
+ - Add `Texture.write(int ptr)` which copies data from a pointer from a
65
+ separate ChuGin. Use with caution!
66
+ - change default surface texture to be non-srgb, add `OutputPass.gamma()` to
67
+ control whether or not to apply gamma correction. (this simplifies getting
68
+ accurate colors in basic 2D scenes without complex lighting.
69
+ (updated) various bug fixes
70
+ - fix `GGen.lookAt(vec3 pos)` bug when up vector and forward vectors were
71
+ collinear.
72
+ - added `GGen.lookAt(vec3 pos, vec3 up)` which takes a custom up vector.
73
+ - fix `GText.defaultFont()` not setting custom font path correctly
74
+ - fix segfault caused by sending large amount of data to `UI.plotLines()`
75
+ - setting `TextureLoadDesc.gen_mips` to false no longer erroneously
76
+ generates a mip chain
77
+ - fix `UI.beginChild(...)` not properly returning a value
78
+ - Add normal matrix to #DRAW_UNIFORMS shader include to enable correct
79
+ calculations of normal vectors for Meshes with non-uniform scale
80
+ (added) GText: Add antialias method `GText.antialias()`
81
+ (added) New Examples
82
+ - basic/transparency.ck
83
+ how to use transparent materials
84
+ - rendergraph/slime.ck
85
+ slime mold simulation using compute passes!
86
+ - deep/pokemon_cries.ck
87
+ Gameboy APU emulator that synthesis all Gen I pokemon cries!
88
+ - deep/shadows.ck
89
+ shadowmapping for directional and spot lights!
90
+ (updated) Under the Hood
91
+ - Large architecture refactor to use a rendergraph + gpu resource cache
92
+ + sorted drawcall structs to organize and dispatch GPU commands.
93
+ - Caching GPU resources (namely BindGroups and TextureViews) significantly
94
+ improves performance and increases the maximum number of draw calls that
95
+ can be issued each frame
28
96
29
97
30
98
1.5.5.1 (May 2025)
0 commit comments