Releases: software-mansion/TypeGPU
v0.9.0
typegpu 0.9.0, tinyest 0.2.0, tinyest-for-wgsl 0.2.0, @typegpu/* 0.9.0
TypeGPU 0.9.0 brings improvements to compile-time capabilities of JS-shaders, as well as an exciting new integration with Three.js, where any TSL node in a material can be granularly replaced with a TypeGPU function.
🪄 New examples
- "Jelly Switch"
- "Jump Flood - Distance"
- "Jump Flood - Voronoi"
- "Background Segmentation"
- "Clouds"
- "Point Light Shadow"
- "Stencil"
- "Three.js - tsl / compute / attractors / particles"
- "Three.js - compute / cloth"
- "Three.js - compute / geometry"
- "Three.js - compute / particles / snow"
- "Three.js - compute / particles"
- "Three.js - Simple"
🚀 Features
- feat: Add @typegpu/three package and Three.js integration examples by @reczkok, @iwoplaza, @lursz, @aleksanderkatan and @cieplypolar in #1453
- feat: Ref/Value behavior tracking by @iwoplaza in #1755
- feat: Simpler resolve API by @aleksanderkatan in #1897
- feat: Use strict names by default and fallback to item by @aleksanderkatan in #1916
- impr: Namespaces use strict naming scheme by default by @cieplypolar in #1969
- feat: Accept multiple arguments in min and max by @aleksanderkatan in #1924
- feat: tgpu.comptime, tgpu.rawCodeSnippet and
thisallowed in TypeGPU shader functions by @iwoplaza in #1917, #1957 - feat: More autonaming by @aleksanderkatan in #1953
- feat: Add support for setting stencil reference for pipeline and add a simple stencil example by @reczkok in #1979
- feat: Inspect vector type in shader function by @iwoplaza in #1895
📖 Docs / DX
- docs: "Jelly Switch" example by @iwoplaza in #1902, #1907
- docs: Binary image segmentation example by @aleksanderkatan in #1795
- docs: Add point light shadow example by @reczkok in #1937
- docs: Jump flood algorithm example by @reczkok in #1952
- docs: Split the jump flood algorithm example into two and improve the distance painting by @reczkok in #1967
- docs: Clouds example by @lursz in #1655
- docs: Background segmentation by @lursz in #1951
- docs: Updates to docs related to TypeGPU functions by @iwoplaza in #1882
- docs: @typegpu/sdf docs by @aleksanderkatan in #1977
- docs: TypeGPU Academy signup form tweaks by @iwoplaza in #1889
- chore: Jelly-slider wgsl resolution test by @cieplypolar in #1884
- fix(docs): Remove use of deprecated root.flush() API by @iwoplaza in #1896
- fix(docs): Added missing 'Test Resolution' button in disco example by @cieplypolar in #1928
- fix(docs): Phong reflection WGSL resolution test by @cieplypolar in #1929
- build(deps): bump typescript from 5.8.3 to 5.9.3 by @dependabot[bot] in #1860
- fix(docs): Deleted unnecessary braces in disco example by @cieplypolar in #1941
- fix(docs): Jelly switch WGSL resolution test by @cieplypolar in #1934
- fix(docs): Cleanup of Jelly examples by @lursz in #1959
- docs: Optimize 3d slime mold example by @reczkok in #1900
🗿 Bug fixes / Stability
- fix: Indexing constants with runtime indices should properly adjust by @iwoplaza in #1922
- fix: Disallow references in arrays by @aleksanderkatan in #1990
- fix: Fix errors and types around textures by @reczkok in #1950
- fix: Accessor of static value has unknown type by @lursz in #1964
- fix: Giving local declarations unique names if they clash with global declarations, and vice-versa + 'strict' the default naming scheme in pipelines by @iwoplaza in #2000
- chore: Remove 'createDualImpl' by @iwoplaza in #1961
- test(unplugin-typegpu): Add tests for 'use gpu' marked object method by @cieplypolar in #1894
- chore: Remove does from entrypoints by @aleksanderkatan in #1997
🧪 Experimental / WIP
Full Changelog: v0.8.2...v0.9.0
v0.8.2
v0.8.1
🗿 Fixes/Stability
- impr: Always flushing by @iwoplaza in #1822
- impr: Error messages for invalid array and
tgpu.constusage by @aleksanderkatan in #1856 - impr: Typed texture views can be passed into .withColorAttachment by @lursz in #1847
- fix: Always resolve with strict types by @iwoplaza in #1880
📖 Docs/DX
- fix(docs): Use a more widely supported image source in Jelly Slider number atlas by @reczkok in #1878
- docs: Soft shadows & bounce lighting in the "Jelly Slider" example by @iwoplaza in #1881
Full Changelog: v0.8.0...v0.8.1
v0.8.0
We're excited to release TypeGPU 0.8! Here are the main highlights:
console.logon the GPU, a familiar way to debug code execution brought to shaders- Simpler and more flexible TypeGPU shader functions (just ‘use gpu’ at the beginning of a function)
- Overhauled texture APIs (e.g. automatic mip-maps)
You can now install new versions of these packages:
- typegpu v0.8.0
- @typegpu/color v0.8.0
- @typegpu/noise v0.8.0
- @typegpu/sdf v0.8.0
- unplugin-typegpu v0.8.0
Migration guide
If you have any uses of the 'kernel'; directive placed at beginning of some functions, you can change it to the 'use gpu'; directive. It functions the same, just with a clearer name.
🚀 Features
- feat:
console.logon the GPU by @aleksanderkatan in #1657, #1855, #1708, #1732, #1771 - feat: Automatic constant folding 🪄 by @iwoplaza in #1609
- feat: Shell-less functions by @iwoplaza in #1718, #1754, #1798
- feat: Texture API overhaul by @reczkok in #1652, #1773, #1819
- feat: Add support for ** operator by @aleksanderkatan in #1644
- feat/docs: Allow pipelines to work in no color mode and add a shadow example by @reczkok in #1624
- feat:
root.createGuardedComputePipelineby @aleksanderkatan in #1630, #1838, #1728, #1794, #1828 - feat: Add subgroup std functions, allow for feature based pruning by @reczkok in #986
- feat: Bitcasts by @lursz in #1671
- feat: tgpu.namespace by @iwoplaza in #1692
- feat(@typegpu/noise): Distributions from uniform [0, 1) by @cieplypolar in https://github.com//pull/1605
- feat: Stabilize constants and variables by @aleksanderkatan in #1745
- feat: Add a function to deep-compare schemas by @piaccho in #1724
- feat(unplugin-typegpu): Autoname functions in unplugin by @aleksanderkatan in #1746
- feat: Simplify pipelines
withmethod by @aleksanderkatan in #1767 - feat: Common
fullScreenTrianglevertex function by @iwoplaza in #1831
🗿 Bug fixes / Stability
- feat: GPU recursion error by @cieplypolar in #1585
- fix: More robust definition of snippet types, and resolving numeric literals by @iwoplaza in #1606
- fix: Warn when external was omitted by @aleksanderkatan in #1602
- fix: Warn when external was omitted (postmortem) by @aleksanderkatan in #1613
- fix: Allow for immediately invoked schemas by @iwoplaza in #1586
- fix: Pointers for reference types by @aleksanderkatan in #1591
- fix: Better regex that includes potential query parameters by @reczkok in #1642
- fix: Throw error when accessing matrix elements directly by @aleksanderkatan in #1625
- fix: Wider abstractInt range by @reczkok in #1635
- fix: Export sampler types by @iwoplaza in #1866
- refactor: Common ShaderGenerator interface by @lursz in #1628
- fix: Narrow types in std by @aleksanderkatan in #1683
- fix: Add missing validation types to the public API by @reczkok in #1706
- fix: Change visibility of mutable resources in bindGroupLayout by @cieplypolar in #1669
- fix: Better numeric schema names by @iwoplaza in #1672
- fix: Fix nested compiled writers and enable them for initial data by @reczkok in #1670
- fix: Accessor type inference by @iwoplaza in #1695
- fix: WGSL keywords among identifiers by @aleksanderkatan in #1607
- fix:
dualImplthrows with missingcpuImplby @aleksanderkatan in #1752 - fix: not filtering builtin outputs out of the fragment shader by @lursz in #1779
- fix: Don't track buffers and textures just to dispose of them by @iwoplaza in #1769
- fix: Big int handling by @aleksanderkatan in #1758
📖 Docs/DX
- docs: "Jelly Slider" example by @reczkok in #1791, #1871
- docs: "2d Slime Mold" simulation by @reczkok in #1776
- docs: "3d Slime Mold" simulation by @reczkok in #1774
- docs: "Disco" example by @collectioneur and @lursz in #1656, #1715, #1722, #1765, #1716
- docs: "Liquid Glass" example by @reczkok in #1643
- docs: "Phong reflection mode" example by @aleksanderkatan in #1781
- docs: Rework examples that use video input and publish them again on iOS safari by @reczkok in #1555
- docs: Index buffers by @lursz in #1496
- test: Create tests for code produced by examples by @reczkok in #1631
- docs: Textures and Samplers by @reczkok in #1868
- docs: TypeGPU functions by @iwoplaza in #1793
- docs: Utilize subgroups in MNIST Inference when possible and rewrite in JS by @reczkok in #986
- docs: Lazy load thumbnails to improve load time by @reczkok in #1857
- chore: Single node version in CI by @iwoplaza in #1679
- docs: DEV-only examples (for drafts & tests) by @iwoplaza in #1685
- docs: Using shell-less functions in examples by @iwoplaza in #1719
- docs: Merge increment examples, and simplify by @iwoplaza in #1720
- chore: Simplify tests using inline snapshots by @iwoplaza in #1756
- docs: Fixed buffers by @aleksanderkatan in #1780
- fix(docs): Missing
onCleanup, updategravitytest by @cieplypolar in #1821 - docs: ShaderHunt waiting list sign-up form by @iwoplaza in #1823, #1832
- docs: Using rolldown in translator app by @iwoplaza in #1611
Full Changelog: v0.7.1...v0.8.0
typegpu v0.7.1, @typegpu/color v0.7.0, @typegpu/noise v0.7.0, @typegpu/sdf v0.7.0
- bump: typegpu 0.7.1, @typegpu/color 0.7.0, @typegpu/noise 0.7.0, @typegpu/sdf 0.7.0 by @iwoplaza in #1596
🚀 Features
- feat: Add all numeric and derivative std (some with no cpu implementation) by @reczkok in #1567
- feat: Callable unstructs and disarrays by @aleksanderkatan in #1584
- feat: Array partial schemas by @cieplypolar in #1581
🗿 Fixes / Stability
- fix: More accurate inference for slots & derived by @iwoplaza in #1575
- fix: Coercing externals to proper types by @iwoplaza in #1577
- fix: Resolving in dualImpl by @iwoplaza in #1588
- fix: Unify operand types in arithmetic operators by @reczkok in #1603
📖 Docs / DX
- docs: Better loading state for examples page by @iwoplaza in #1539
- docs: Update Data Schemas page, remove Data Schema Cheatsheet by @aleksanderkatan in #1512
- docs: Vaporrave example by @cieplypolar in #1548
- docs: @typegpu/noise by @iwoplaza in #1391
- docs: Add struct copy example by @aleksanderkatan in #1595
- build(deps): bump lucide-react from 0.525.0 to 0.536.0 by @dependabot[bot] in #1565
Full Changelog: v0.7.0...v0.7.1
typegpu v0.7.0, unplugin-typegpu v0.2.2
TypeGPU 0.7.0 is full of quality-of-life features that we're excited for you to try out!
Default constructors for schemas
Ever had to construct an initial (zero'ed out) value that matches your custom schema? It's just become extremely simple! You can now call any schema, and in return, you'll receive a zero-initialized value.
const Boid = d.struct({
pos: d.vec3f,
vel: d.vec3f,
});
const BoidArray = d.arrayOf(Boid, 4);
const boids = BoidArray(); // ✨
console.log(boids.length); // prints 4
console.log(boids[0].pos.x); // prints 0🧪 Fluent interface (or infix operators*)
Up until 0.7, adding two vectors together in TGSL was only possible with the std.add function, but now, vectors and matrices have operator methods on them! This way, you can chain operations in a way that's more readable.
// before 0.7.0
std.add(std.mul(v1, 2), v2);
// 0.7.0
v1.mul(2).add(v2);🧪 Simulating GPU behavior
An experimental API for simulating GPU-behavior on the CPU has been introduced, called "tgpu.simulate". It's useful for unit-testing your shaders, precomputing parts of your pipeline, etc.
import { perlin2d } from '@typegpu/noise';
const { result } = tgpu.simulate(() => {
// Executed on the CPU, behaves like it's on the GPU
return perlin2d.sample(d.vec2f(1.1, 2.2));
});New Online Tool: "Shader Translator"
Curious what optimizations are performed on your shader code before it gets executed? How does TGSL look like when compiled into WGSL? @reczkok has been hard at work on a new tool just for that! Check it out here: https://typegpu.com/translator
Changelog
🚀 Features
- feat: Struct default constructor by @aleksanderkatan in #1480
- feat: Make array schemas callable by @aleksanderkatan in #1499
- feat: Vector and matrix infix operators by @aleksanderkatan in #1486
- feat: invariant attribute by @iwoplaza in #1478
- feat: std.mod by @lursz in #1513
- feat: std.smoothstep by @lursz in #1450
- feat: tgpu.resolve supports config by @lursz in #1536
- feat: Bun plugin by @iwoplaza in #1561
🗿 Bug fixes / Stability
- fix: Proper type for .value and .$ in TypeGPU variables by @iwoplaza in #1482
- fix: Export
TgpuQuerySetby @reczkok in #1552 - fix: Add support for packed vertex formats in compiled writer and improve the writer selection logic by @reczkok in #1560
- fix: Rework how schemas propagate usage validity by @iwoplaza in #1547
- fix(unplugin-typegpu): Create proper AST for TypeGPU metadata by @reczkok in #1498
- fix(unplugin-typegpu): TypeGPU functions using TGSL dependencies declaration order by @aleksanderkatan in #1522
- fix(unplugin-typegpu): Plugin should parse files with TS syntax support by @iwoplaza in #1516
- chore: Clarifying purpose of execution modes by @iwoplaza in #1468
📖 Docs / DX
- docs: Create a shader compilation tool by @reczkok in #1466
- docs: Refactor the translator and add TGSL mode by @reczkok in #1529
- docs: Stable tgpu.fn guide by @iwoplaza in #1409
- docs: Explain slots by @iwoplaza in #1451
- docs:
resolveWithContextin resolve docs by @aleksanderkatan in #1477 - docs: Add new dependency catalogs to pnpmWorkspaceYaml schema by @reczkok in #1473
- docs: Add @typegpu/sdf package to StackBlitz dependencies by @reczkok in #1475
- docs: Fix function visualizer resize by @aleksanderkatan in #1487
- docs: Pipelines guide by @mhawryluk in #1405
- docs: Publishing API Reference in their current state by @iwoplaza in #1515
- docs: Complete "Functions" in roadmap by @iwoplaza in #1537
- fix(docs): Use the same base URL when importing from esm.sh by @iwoplaza in #1507
- fix(docs): TypeScript support for Babel.transform() in translateTGSL() by @GCyganek in #1553
- build(deps): bump astro from 5.9.3 to 5.11.1 by @dependabot[bot] in #1488
- build(deps): bump glob from 11.0.2 to 11.0.3 by @dependabot[bot] in #1492
- chore(docs): Update dependencies by @iwoplaza in #1533
🧪 Experimental APIs
- feat: API for simulating variable and buffer access on the CPU by @iwoplaza in #1511
- fix: Struct clone constructors on WGSL side by @aleksanderkatan in #1470
- feat: Expected type stack in WgslGenerator by @aleksanderkatan in #1532
- fix: division operator resolution by @lursz in #1446
- fix: Simplify division logic in
wgslGeneratorby @reczkok in #1530 - fix: Fix pointer value assignment type conversion by @reczkok in #1526
- fix: div operator by @lursz in #1520
- impr: Improve whitespace in code generation when resolving by @reczkok in #1538
- feat: Add second argument to vertex/fragment shader signatures by @reczkok in #1549
- fix: concretize abstract types when performing division by @cieplypolar in #1557
New Contributors
- @GCyganek made their first contribution in #1553
- @cieplypolar made their first contribution in #1557
Full Changelog: v0.6.0...v0.7.0
v0.6.0
🚀 Features
- feat: Stabilize tgpu.fn & remove deprecated .does API by @iwoplaza in #1411
- feat: Stabilize slots by @iwoplaza in #1424
- feat: First-class buffer shorthands by @iwoplaza in #1404
- feat: Better TgpuFn type (0.6.0) by @iwoplaza in #1386
- feat: Introduce Index buffers and improve buffer UX by @reczkok in #1340
- feat:
tgpu.resolveWithContextby @mhawryluk in #1410 - feat: Automatically assign names to resources in Unplugin by @aleksanderkatan in #1344
- feat: @typegpu/sdf package by @iwoplaza in #1428
- feat: Perlin Noise derivatives by @iwoplaza in #1457
- feat: Cast elements to correct type when creating vectors by @aleksanderkatan in #1311
- feat: Autoname unstruct definitions by @iwoplaza in #1413
- feat: Autoname assignment expressions and properties by @aleksanderkatan in #1415
🗿 Bug fixes / Stability
- fix: "Experimantal" typo by @iwoplaza in #1381
- feat: Hide more internal functionality under symbols by @iwoplaza in #1387
- fix: createBindGroup with wide layout type should accept wide resource types by @iwoplaza in #1427
- fix: Use bool for builtin.frontFacing by @deluksic in #1456
- fix: Perf measure nits by @iwoplaza in #1454
📖 Docs / DX
- docs: Add ASCII (not really) camera filter example by @reczkok in #1376
- docs: Port of XorDev's "Centrifuge 2" example by @iwoplaza in #1388
- docs: Experimental examples "on" by default by @iwoplaza in #1422
- chore: Simplify tsconfig.json by @iwoplaza in #1385
- refactor: Remove name method calls from examples and tests by @aleksanderkatan in #1407
- fix: Add "experimental" tag to ASCII filter example by @reczkok in #1420
- style: Ignore .svg files during formatting checks by @aleksanderkatan in #1443
- docs: Table of content emoji by @aleksanderkatan in #1449
- docs: Fix license link by @aleksanderkatan in #1448
- build(deps): bump @radix-ui/react-slider from 1.3.2 to 1.3.5 by @dependabot in #1397
- build(deps-dev): bump yaml from 2.7.0 to 2.8.0 by @dependabot in #1432
- build(deps): bump @astrojs/sitemap from 3.4.0 to 3.4.1 by @dependabot in #1433
- build(deps): bump @astrojs/react from 4.2.7 to 4.3.0 by @dependabot in #1398
- build(deps): bump motion from 12.9.2 to 12.20.1 by @dependabot in #1431
- build(deps): bump @webgpu/types from 0.1.54 to 0.1.63 by @dependabot in #1435
🧪 Unstable features
- feat: Measure performance of resolution and shader compilation by @iwoplaza in #1441
- feat: Apply copy semantics to function calls in JS by @aleksanderkatan in #1421
- feat: Match up vertex and fragment locations in render pipeline by @mhawryluk in #1377
- feat: Update "kernel" and "kernel & js" directives by @aleksanderkatan in #1442
- fix: Add explicit type annotation to constant declarations by @reczkok in #1382
- fix: Prevent autocasting lhs of assignment expressions by @reczkok in #1461
- feat: Pipelines
.pipeby @mhawryluk in #1414 - chore: Remove JIT transpiler by @iwoplaza in #1419
Full Changelog: v0.5.9...v0.6.0
v0.5.9
🚀 Features
- feat: Added std.identity4 & std.translate4 by @lursz, @aleksanderkatan in #1285
- feat: Add matrix rotate and scale by @aleksanderkatan in #1319
- feat: std.tanh by @reczkok in #1314
- feat: implement std.cosh, std.acosh, std.exp2 by @lursz in #1317
- feat: std.log and std.log2 by @lursz in #1359
- feat: Add support for timestamp queries in pipelines and introduce TgpuQuerySet by @reczkok in #1352
🗿 Fixes/Stability improvements
- fix: Allow for memory identity in bind group layouts by @reczkok in #1329
- fix: Remove redundant InferReturn by @iwoplaza in #1338
- fix: Replace unplugin hoisting error with a warning by @mhawryluk in #1366
📖 Docs/DX
- docs: Focus example search input on cmd/ctrl + k by @mhawryluk in #1364
- docs: Image Tuning Example by @bielok in #1316
- docs: Create WGSL resolution example by @mhawryluk in #1330
- docs: A port of XorDev's "Runner" to TypeGPU by @iwoplaza in #1365
- docs: "Caustics" example by @iwoplaza in #1373
- docs: Rework example selection UI and add searching utilities. by @reczkok in #1230
- impr: Better dev scripts by @aleksanderkatan in #1315
- docs: Fix control panel height on mobile by @mhawryluk in #1327
- impr: Add a way to select sharpening function in perlin noise example by @reczkok in #1314
- docs: Add mobile controls to function visualiser and 3d fish by @aleksanderkatan in #1332
- docs: Improve Edit on Stackblitz button styling by @mhawryluk in #1308
- fix(docs): Attempt to fix perlin noise example on mobile by @reczkok in #1331
- fix(docs): Page scroll on touch events in examples by @mhawryluk in #1339
- docs: Improve "Example not found" UI by @mhawryluk in #1342
- fix(docs): Small thumbnails not appearing by @aleksanderkatan in #1335
- fix(docs): 3D Fish and Gravity improper rendering by @aleksanderkatan in #1343
- docs: Make function visualizer canvas fit to container by @aleksanderkatan in #1361
- fix(docs): Perlin noise dynamic cache on Safari by @mhawryluk in #1362
- chore: Script for detecting changes by @iwoplaza in #1379
- build(deps): bump tsup from 8.4.0 to 8.5.0 by @dependabot in #1320
- build(deps): bump @radix-ui/react-select from 2.1.6 to 2.2.5 by @dependabot in #1323
- build(deps): bump execa from 9.5.2 to 9.6.0 by @dependabot in #1321
- build(deps): bump astro from 5.7.12 to 5.9.3 by @dependabot in #1367
- build(deps-dev): bump autoprefixer from 10.4.20 to 10.4.21 by @dependabot in #1346
- build(deps): bump arktype from 2.1.19 to 2.1.20 by @dependabot in #1348
🧪 Experimental APIs
- feat: Migrate unplugin from using
tgpu.__assignAsttoglobalThisby @aleksanderkatan in #1258 - feat: Allow omitting types in wgsl header by @aleksanderkatan in #1306
- feat: Explicit name for dualImpl by @lursz in #1334
- chore: Investigate casts in
createVertexFnandcreateComputeFnby @aleksanderkatan in #1374
New Contributors
Full Changelog: v0.5.8...v0.5.9
v0.5.8
🚀 Features
- feat: Better add, sub, mul, div interface by @aleksanderkatan in #1283
- feat: improved std.arrayLength by @lursz in #1261
- feat: More strict matrix interface by @aleksanderkatan in #1289
- feat(typegpu/noise): 2D/3D Perlin Noise by @iwoplaza in #1292
🗿 Stability/Fixes
- fix: Remove experimental object args API from tgpu-gen by @aleksanderkatan in #1256
📖 Docs/DX
- docs: Better initial configuration of 3D Fish by @lursz in #1279
- docs: TGSL guide by @mhawryluk in #1231
- docs: Update tgpu.fn API by @iwoplaza in #1247
- fix(docs): Use a more compatible texture format for stable-fluids example and add touch controls by @reczkok in #1251
- docs: Make Camera Thresholding example more responsive by @mhawryluk in #1232
- docs: bump to Tailwind 4 by @lursz in #1239
- docs: Small cleanup to "Fluid double buffering" by @iwoplaza in #1275
- docs: Add link to documentation from blog site by @mhawryluk in #1295
- docs: Add spinner to the Camera Thresholding example by @mhawryluk in #1309
- fix(docs): Starlight theme overrides by @mhawryluk in #1260
- fix: Flakey biome lints in CI by @iwoplaza in #1244
- build(deps): bump glob from 11.0.1 to 11.0.2 by @dependabot in #1265
- fix: Race condition in CI by @iwoplaza in #1268
- fix: Remove Git LFS by @iwoplaza in #1272
- fix(benchmarks): "Cannot determine size" error in Benchmarks by @aleksanderkatan in #1281
- chore: Biome useSortedClasses for consistency and better compression by @deluksic in #1287
- fix(typegpu-docs): Make sliders controllable with touch in Examples by @deluksic in #1286
- build(deps-dev): bump @babel/template from 7.26.9 to 7.27.2 by @dependabot in #1300
- build(deps): bump sharp from 0.32.6 to 0.34.2 by @dependabot in #1299
- build(deps-dev): bump wesl from 0.6.0-rc4 to 0.6.7 by @dependabot in #1297
- build(deps-dev): bump tailwindcss from 4.1.6 to 4.1.7 by @dependabot in #1298
- bump: typegpu v0.5.8 (and pretty much everything else) by @iwoplaza in #1310
🧪 Experimental APIs
- feat: Add
ExtractTypeLabeltype by @aleksanderkatan in #1253 - feat: Function to extract argument information from a wgsl function code string by @aleksanderkatan in #1233
- impr:
extractArgschanges by @aleksanderkatan in #1277
fix: Remove experimental object args API by @iwoplaza in #1246 - feat: Export tinyest format version by @iwoplaza in #1280
- impr: Add proper restrictions for Vertex stage builtins by @mhawryluk in #1259
- feat: Allow destructuring arguments in TGSL function implementations by @mhawryluk in #1257
- feat: Branded snippets by @iwoplaza in #1294
Full Changelog: v0.5.7...v0.5.8
v0.5.7
What's Changed
🚀 Features
- feat(typegpu): std.sign by @iwoplaza in #1205
- feat(typegpu): std.textureLoad, std.textureStore, std.textureDimensions, std.textureSampleLevel by @reczkok in #1181
- feat(typegpu): std.sqrt, std.div by @reczkok in #1189
- feat: Allow for...of statement to work with vectors and matrices by @mhawryluk in #1226
- feat(typegpu/color): Add Oklab color space by @deluksic in #1194
- feat(typegpu/color): Use accessor for OKLab alpha by @iwoplaza in #1228
- feat: More partial InferPartial, publicize InferGPU & InferPartial by @iwoplaza in #1215
🗿 Stability/Internals
- refactor: Using $internal symbol for storing internals in plain sight by @iwoplaza in #1182
- fix: std.select type signature should accept scalar values by @iwoplaza in #1203
- refactor: Reuse sign and sqrt in
@typegpu/noiseby @deluksic in #1212 - feat: Store labels of objects on
globalThisby @aleksanderkatan in #1221
📖 Docs/DX
- docs: React Native setup guide by @mhawryluk in #1185
- docs: unplugin-typegpu guide by @mhawryluk in #1191
- docs: Update repo structure in README by @iwoplaza in #1195
- docs: ColorPicker example controls by @mhawryluk in #1214
- docs: Persist ControlPanel toggles state in local storage by @mhawryluk in #1222
- docs: Add Gravity example & ops: Use git lfs for large files by @aleksanderkatan in #1149
- docs: Add fluid simulation based image distortion example by @reczkok in #1181
- refactor: Use Deno for formatting by @iwoplaza in #1213
- test: Replace all occurrences of
toEqualwithtoStrictEqualby @aleksanderkatan in #1211 - test: Testing vectors for structural differences by @iwoplaza in #1208
- build(deps): bump astro from 5.6.1 to 5.7.4 by @dependabot in #1174
- build(deps-dev): bump @babel/parser from 7.26.10 to 7.27.0 by @dependabot in #1155
- build(deps): bump @astrojs/react from 4.2.3 to 4.2.4 by @dependabot in #1172
- build(deps): bump @radix-ui/react-slider from 1.2.3 to 1.3.2 by @dependabot in #1175
- build(deps-dev): bump @ark/attest from 0.45.10 to 0.46.0 by @dependabot in #1173
- build(deps): bump vitest from 3.1.1 to 3.1.2 by @dependabot in #1196
- build(deps): bump typescript from 5.8.2 to 5.8.3 by @dependabot in #1197
- build(deps): bump motion from 12.6.3 to 12.9.2 by @dependabot in #1200
🧪 Unstable APIs
- feat: Texture std expansion and generator adjustments by @reczkok in #1189
- fix: Handle single-line statements in TGSL if/for/while by @mhawryluk in #1224
- impr: Throw error when trying to define tgpu.derived during resolution by @mhawryluk in #1223
- impr: Add automatic type conversions when possible by @reczkok in #1136
- fix: Revert object args fn API in examples (+cleanup), fix boolean literals assigned to variable declarations in TGSL by @iwoplaza in #1229
- feat(unplugin-typegpu): Support TS
asandsatisfiesin TGSL by @mhawryluk in #1240
Full Changelog: v0.5.6...v0.5.7