Releases: software-mansion/TypeGPU
typegpu v0.11.4, @typegpu/react (+more)
typegpu v0.11.4
🚀 Features
Low-level array buffer manipulation APIs
The functions previously used internally by buffer.write, buffer.patch and buffer.write APIs are now exposed, allowing you to read from and write into ArrayBuffers using TypeGPU schemas. More about this here.
const buffer = new ArrayBuffer(d.sizeOf(Boid));
// update entire buffer
writeToArrayBuffer(buffer, Boid, { pos: d.vec3f(1, 2, 3), vel: d.vec3f(0, 1, 0) });
// patch just the velocity
patchArrayBuffer(buffer, Boid, { vel: d.vec3f(0, 0, 1) });
// read
const boid = readFromArrayBuffer(buffer, Boid);- feat: Expose schema read-write APIs by @aleksanderkatan in #2411
Resolution errors now hint at solutions referring to original source code
There is JavaScript code that we restrict users from writing, and when we detect such a case, we throw a descriptive error of what was done incorrectly, and how to fix it. Up until now, those hints referred to the generated WGSL code, but that was sometimes hard to relate back to the original source code the user wrote.
In typegpu v0.11.4, hints are now surfaced in JavaScript, which should allow you to locate the errors much faster.
- feat: Better resolution error hints by @aleksanderkatan in #2404
withPerformanceCallback on guarded compute pipelines
const pipeline = root
.createGuardedComputePipeline(() => {
// ...
})
.withPerformanceCallback((start, end) => {
const durationNs = Number(end - start);
console.log(`Pipeline execution time: ${durationNs} ns`);
});- feat: withPerformanceCallback on guardedComputePipeline by @cieplypolar in #2424
🗿 Fixes / Stability
- fix: Struct fields not suggested by @aleksanderkatan in #2447
- fix: Keep internal accessor slot unnamed, even after code transforms by @iwoplaza in #2426
- fix: ArrayExpression - immediate index access by @iwoplaza in #2409
- fix: Error when resolving raw external array by @iwoplaza in #2408
📖 Docs
- docs: Just one "Triangle" example by @iwoplaza in #2458
- chore: Update links to logos in READMEs by @iwoplaza in #2468
- docs: New fundamentals by @reczkok and @aleksanderkatan in #2459
- docs: Update "React Native" guide by @iwoplaza in #2464
🔧 Internal / Refactors
- impr:
consoleandMathmethod reference checks by @aleksanderkatan in #2438
@typegpu/react v0.11.0 (first release 🚀)
This new package introduces hooks that make working with TypeGPU in React and React Native simple and straightforward.
For more info, head over to the Tutorial and Documentation.
unplugin-typegpu v0.11.3
Full Changelog: v0.11.3...v0.11.4
typegpu v0.11.3, @typegpu/radiance-cascades (+more)
This batch of releases includes improvements to TypeGPU 0.11, a Jump Flooding algorithm implementation in @typegpu/sdf, as well as a brand new package @typegpu/radiance-cascades by @reczkok: an efficient and customizable Radiance Cascades implementation.
New examples 🎉
🌊 Developer experience
- dx: Better error on JS array runtime access by @aleksanderkatan in #2407
- feat(eslint-plugin-typegpu): Lint rule for unsupported JS by @aleksanderkatan in #2299
🗿 Stability / Bug fixes
- fix: Better
std.rangeinternal variables type inference by @cieplypolar in #2384 - fix: Export half-precision vector instance types from 'typegpu/data' by @iwoplaza in #2387
- fix: Choose
f32when trying to find a type common withabstractFloatandi32(oru32) by @iwoplaza in #2396 - fix:
console.logimplicit pointers by @aleksanderkatan in #2398 - fix(unplugin-typegpu): Make unplugin-typegpu/babel work in the browser again by @iwoplaza in #2394
- fix: Improvement to argument usage tracking by @iwoplaza in #2359
📖 Docs
⚙️ Internal / Repository
Full Changelog: v0.11.0...v0.11.3
v0.11.0
New examples:
Blog post: https://docs.swmansion.com/TypeGPU/blog/typegpu-011/
Efficient write APIs
When writing to a buffer with an array of vectors, it's no longer required to create vector instances (e.g. d.vec3f()).
const positionsMutable = root.createMutable(d.arrayOf(d.vec3f, 3));
// before
positionsMutable.write([d.vec3f(0, 1, 2), d.vec3f(3, 4, 5), d.vec3f(6, 7, 8)]);
// now
positionsMutable.write([[0, 1, 2], [3, 4, 5], [6, 7, 8]]); // tuples
positionsMutable.write(new Float32Array([0, 1, 2, 0, 3, 4, 5, 0, 6, 7, 8, 0])); // typed arrays (mind the padding)
// and more...Each one is more efficient than the previous, so you can choose the appropriate API for your efficiency needs.
More about these new APIs here.
Lint Plugin
@aleksanderkatan has been working on behind the scenes on an ESLint/Oxlint plugin, capable of catching user errors that types cannot. This plugin is now available to install as:
npm install eslint-plugin-typegpuDocumentation: https://docs.swmansion.com/TypeGPU/tooling/eslint-plugin-typegpu/
Relevant PRs: #2235, #2374, #2302
Features
- feat: Bit operation on vectors by @cieplypolar in #2276
- impr: More capable and performant write API by @reczkok in #2279
- feat: Dedent comptime-known nested if/else by @aleksanderkatan in #2308
- feat: std.range() by @iwoplaza in #2314
- feat(@typegpu/color): hexToRgb, hexToRgba and hexToOklab utilities by @iwoplaza in #2284
- feat(eslint-plugin-typegpu): RuleEnhancer & unwrapped POJOs rule by @aleksanderkatan in #2127
- feat(eslint-plugin-typegpu): More lint rules by @aleksanderkatan in #2153
- feat: std.textureSampleGrad (+ docs: POM example) by @reczkok in #2366
- feat(typegpu): infer
tgpu.constarray length from value for partiald.arrayOf(...)by @Copilot in #2325 - impr: Add a
common.writeSoA(buffer, data)for compatible buffers and extend the initial data field for more flexibility by @reczkok in #2320, #2329 - impr: Do not pack entry-point variables by @reczkok in #2303
- feat: More convenient TgpuVertexFn.AutoIn and TgpuVertexFn.AutoOut types by @iwoplaza in #2282
- feat: Stabilize samplers and textures by @iwoplaza in #2347
- feat: A type alias for no-custom auto inputs by @iwoplaza in #2344
- impr: Deprecate the
partialWriteAPI and addpatchAPI that better matches thewritefeatures by @reczkok in #2355 - impr: Short-circuit evaluation for operators
&&and||by @cieplypolar in #2361 - feat: Support for
PrimitiveOffsetInfoin render pipeline draw...Indirect methods by @cieplypolar in #2337 - feat: unary operator
!support andstd.notby @cieplypolar in #2346
Fixes / Stability
- fix: Allow guarded pipeline with encoder by @reczkok in #2273
- refactor: Unplugin 3 by @iwoplaza in #2294
- fix: Lift limitation on passing tgpu.const references as arguments by @iwoplaza in #2286
- fix: Deref implicit pointers in shell-less entry function output by @iwoplaza in #2285
- refactor: Single component props in Vec4 are in a weird order by @iwoplaza in #2296
- Add unroll coverage for
tgpu.constfixed-size array access by @Copilot in #2323 - fix: Inconsistent whitespace in WGSL functions by @iwoplaza in #2338
- fix: Make d.Infer assignable to d.InferInput by @iwoplaza in #2335
- impr: Better
withPerformanceCallbackAPI by @reczkok in #2309 - fix: Use InferGPU in function shell types by @iwoplaza in #2295
Internal DX
- chore: Tweaks for working with worktrees by @iwoplaza in #2271
- ci: Skip treeshaking in fork PRs by @aleksanderkatan in #2289
- chore: Sort treeshake-test results by impact in GitHub comments by @iwoplaza in #2268
- chore: Move individual example tests to
apps/typegpu-docsby @iwoplaza in #2291 - chore: A way to skip checks before publishing, if we know tests already pass by @iwoplaza in #2281
- chore: Skip attest by default by @iwoplaza in #2316
- chore: Benchmark resolution time of procedurally generated functions by @cieplypolar in #2233
- chore: Bump oxlint and oxlint-tsgolint by @aleksanderkatan in #2317
- chore: Transform overloads before test:types by @iwoplaza in #2280
- chore: Migrate to Vitest 4 by @iwoplaza in #2330
- fix: Enable
erasableSyntaxOnlyandverbatimModuleSyntaxTypeScript options by @iwoplaza in #2332 - fix(docs): Bump vite to 8.0.5 to fix minifier issue by @iwoplaza in #2353
- chore: Manual publish workflow by @iwoplaza in #2368
- feat: Resolution time benchmark github action by @cieplypolar in #2239
Docs
- docs: Accessors by @iwoplaza in #2267
- docs: Custom monaco build by @aleksanderkatan in #2297
- fix(docs): Vector slider controls by @aleksanderkatan in #2247
- docs: Cleanup examples by @aleksanderkatan in #2265
- fix(docs): Clear timeout in 3D Fish example by @iwoplaza in #2311
- fix(docs): Make tsover-runtime importable in the translator app by @iwoplaza in #2310
- chore: Update to Astro 6 by @iwoplaza in #2292
- docs: Use Vite v8 for lower memory consumption by @iwoplaza in #2315
- fix(docs): Fix diagnostics on release by @iwoplaza in #2333
- fix(docs): Color picker lagging when switching between Jelly examples by @aleksanderkatan in #2340
- docs: Comprehensive
tgpu.unrolldocs by @cieplypolar in #2334 - docs: Add lose state to suika game and do a small refactor by @reczkok in #2350
- fix(docs): Add missing cool factor and remove explicit experimental tags by @reczkok in #2377
- impr: Improve orbit camera to better behave on mouse scroll-wheel by @mvanhorn in #2304
Experimental
- feat(@typegpu/gl): Type instantiation deferred to shader generator by @iwoplaza in #2278
- feat: Add
@typegpu/sortscaffolding with simple bitonic sort implementation by @reczkok in #2142 - @typegpu/geometry Simplify variable width lines implementation by @deluksic in #1935
New Contributors
Full Changelog: v0.10.2...v0.11.0
typegpu v0.10.2, unplugin-typegpu v0.10.1 (tinyest-for-wgsl v0.3.1), @typegpu/three v0.10.1
This release improves the build output of the typegpu package, dramatically improving tree-shaking and reducing the package size by 60%! It also fixes a few paper cuts introduced along with new shell-less render pipelines (and a few others).
For WebGPU interop enthusiasts, TypeGPU pipelines can now be executed as part of an existing command encoder, render pass, or render bundle encoder! (docs coming soon)
🪄 New examples
- "Suika SDF" game by @reczkok in #2231
🚀 Features
🗿 Bug fixes / Stability
- fix: Allow TgpuGenericFn to be resolved by @iwoplaza in #2245
- fix: Improve typegpu package build output by @iwoplaza in #2249
- fix: Fill missing slots in shellless entry functions by @aleksanderkatan in #2255
- fix: Shellless attribs by @iwoplaza in #2241
- fix: Properly infer layout .$ using InferGPU by @iwoplaza in #2258
- fix: Add missing
textureLoadoverloads and fix wrong types by @reczkok in #2261 - fix: TSNonNullExpression node support by @cieplypolar in #2264
- refactor: Migrate @typegpu/* libs to use tsover by @iwoplaza in #2217
- impr(@typegpu/three): simplified variable name resolution by @cieplypolar in #2213
📖 Docs / DX
- docs: Soft overhaul of the example page look by @reczkok in #2243
- chore: Add .nvmrc to ensure consistency across setups by @iwoplaza in #2224
- chore: Improve linting performance by @iwoplaza in #2220
- dx: Oxlint warns for unused ignores by @aleksanderkatan in #2229
- refactor(docs): Migrate more examples to use tsover by @iwoplaza in #2199
- chore: Migrate to oxfmt by @iwoplaza in #2221
- docs: Remove "experimental" tag from examples that no longer use unstable APIs by @iwoplaza in #2232
- fix:
SuikaSDFassets path by @cieplypolar in #2238 - chore: Suggest workspace TS version when opening the project in VSCode by @iwoplaza in #2242
- docs: Make sidebar and code editor disabled by default by @reczkok in #2240
- chore: Test treeshaking on built output, instead of source code by @iwoplaza in #2248
- chore: Remove deno.json files by @iwoplaza in #2252
- docs: Update @typegpu/three guide banner by @iwoplaza in #2262
New Contributors
Full Changelog: v0.10.0...v0.10.2
v0.10.1
This version makes operator overloading function correctly outside of our codebase (tsdown was stripping type defs that it shouldn't have)
What's Changed
- fix: Allow arguments in rhs of compound assignment by @iwoplaza in #2219
- fix: Adjust 'typegpu' package import in our Example monaco instance by @iwoplaza in #2218
- fix: Operator overloading types were erased during build by @iwoplaza in #2225
Full Changelog: v0.10.0...v0.10.1
v0.10.0
TypeGPU v0.10 take ergonomics to the next level, including but not limited to:
- Operator overloading for vectors and matrices (thanks to "tsover")
- Shell-less pipelines, with better defaults
- Compile time ternary operator support
- for ... of loop support, as well as loop unrolling
- .rgba swizzles
- Indirect compute
- Stabilized tgpu.comptime, tgpu.accessor, tgpu.lazy, pipelines and entry functions
And many more! Check for more details below.
🪄 New examples
- "Ripple cube" by @reczkok in #2151
- "Smoky Triangle" by @iwoplaza in #2091
- "Game of Life (REBORN)" by @reczkok in #2100
- "Jump Flood (Voronoi)" by @reczkok in #1952
- "Jump Flood (Distance)"by @reczkok in #1967
🚀 Features
- feat: Overload operators for vectors by @iwoplaza in #2176
- feat: Add
primitive_index,subgroup_idandnum_subgroupsbuiltins by @iwoplaza in #2028 - feat: More autonaming by @aleksanderkatan in #2012
- feat: More capable accessors by @iwoplaza in #2010
- feat: Embed TypeGPU version in globals, detect multiple versions of TypeGPU by @iwoplaza in #1726
- feat: Deprecate .value and .bound by @iwoplaza in #2040
- feat: Stabilize tgpu.comptime by @iwoplaza in #2051
- feat: Ternary operator by @aleksanderkatan in #2069
- feat(@typegpu/noise): Optional seeds by @cieplypolar in #1665
- impr: Expose size on TgpuTextureView by @reczkok in #2056
- feat: Rename
derivedtolazyand stabilize by @iwoplaza in #2083 - feat: Dollarless de-ref by @iwoplaza in #2119
- feat:
root.configureContextby @aleksanderkatan in #2116 - feat: Export the Withable type by @iwoplaza in #2129
- impr: More shellless autonaming by @aleksanderkatan in #2107
- feat: Shell-less entry functions, createComputePipeline, createRenderPipeline by @iwoplaza in #1835
- feat: Handle compatible Math functions in TypeGPU functions by @aleksanderkatan in #2152
- feat:
for ... of ...loop support by @cieplypolar in #1976 - impr: Add
componentCountfield to vector schemas by @reczkok in #2161 - feat: tgpu.fn(callback) for providing slots and accessors by @lursz in #2029
- feat: Add .rgba swizzles to vectors by @iwoplaza in #2166
- feat: Stabilize tgpu.accessor and tgpu.mutableAccessor by @iwoplaza in #2167
- feat: Stabilize pipelines and entry functions by @iwoplaza in #2168
- feat: Defaults for targets in
.createRenderPipelineand.withColorAttachmentsby @iwoplaza in #2196 - feat: Add
Indirectbuffer usage and support.dispatchWorkgroupsIndirectAPI by @reczkok in #2105 - feat: vecBase and matBase by @iwoplaza in #2206
- feat: loop unrolling support by @cieplypolar in #2178
🗿 Bug fixes / Stability
- fix: Collisions with builtins by @aleksanderkatan in #2002
- chore: Remove the deprecated
asUsageapi by @aleksanderkatan in #1999 - test: Interpolate an array of elements, generic over the size of the array. by @iwoplaza in #2011
- fix: correct indentation of nested code blocks in wgslGenerator by @Copilot in #2025
- fix(@typegpu/three): Let Three.js infer type of new THREE.Color() passed into t3.uniform() by @iwoplaza in #2035
- bump: @typegpu/three 0.9.1 by @iwoplaza in #2036
- fix: Better error message when assigning to a value defined outside TGSL by @aleksanderkatan in #1981
- fix: Remove unnecessary
anyin @typegpu/three internals by @iwoplaza in #2045 - fix: Remove redundant .with slot calls & chore: Cleanup ItemStateStack by @aleksanderkatan in #1853
- impr: Name on a bound fn by @aleksanderkatan in #2070
- fix/feat: Fix type in
textureSampleCompareand addtextureSampleCompareLevelby @reczkok in #2006 - feat: Variance annotation overrides to achieve better type behavior by @iwoplaza in #2073
- fix: More tree-shakeable and convenient exports by @iwoplaza in #2068
- feat: More predictable dual-impl behavior by @iwoplaza in #2085
- fix: Improve perlin noise internals and API with accessors by @iwoplaza in #2065
- refactor: Double down on BaseData by @iwoplaza in #2092
- impr: Ignore console.logs in vertex shaders by @aleksanderkatan in #1985
- fix: Proper type coersion for vector & scalar operations by @iwoplaza in #2106
- feat: Better errors for illegal arguments in shellless by @aleksanderkatan in #2124
- fix: Better no color attachment handling by @reczkok in #2148
- impr: Refine std function and conversion handling by @reczkok in #2126
- feat: Limit overflow suggestions by @aleksanderkatan in #2146
- fix: intermediate representation of array expression by @cieplypolar in #2021
- impr: Remove unnecessary nested blocks in seed functions by @cieplypolar in #2086
- impr: Make clouds use the
texture.write()API and move fromrgba8unormtor8unormsince only one channel was used by @reczkok in #2157 - fix: Disallow missing varyings in shell-less fragment input by @iwoplaza in #2165
- chore: Make swizzles tiny by @iwoplaza in #2171
- refactor: Remove unused generateSwizzleFunctions.ts script by @iwoplaza in #2207
- feat: Rename
d.getOffsetInfoAttod.memoryLayoutOfby @iwoplaza in #2205 - impr: block scopes in the
nameRegistryby @cieplypolar in #2177 - impr: block externals by @cieplypolar in #2188
- fix: Alter entry points to support older TypeScript versions, maintain deprecated JSDocs in stabilized ['~unstable'] APIs by @iwoplaza in #2212
📖 Docs / DX
- fix: The resizable canvas in examples uses a property that does not exist in safari by @reczkok in #2003
- fix: Keyboard popping up in docs on mobile by @aleksanderkatan in #1996
- chore: Measure tree-shakeability in CI by @piaccho in #1775
- docs: Improve tgpu.comptime example by @iwoplaza in #2037
- fix: Jelly Switch onCleanup Fix by @lursz in #2049
- chore: Analyse the typegpu entry points by @aleksanderkatan in #2042
- docs: Simplify the Three.js Attractors example by @iwoplaza in #2039
- docs: Don't use unnecessary comptime in Three.js Attractors example by @iwoplaza in #2053
- docs: Small @typegpu/three tutorial by @iwoplaza in #2050
- fix: Add missing newline in treeshake report by @aleksanderkatan in https://github.com/so...
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