This commit is contained in:
Andras Schmelczer 2026-05-21 07:43:10 +01:00
commit 6bc125be1c
104 changed files with 3084 additions and 2410 deletions

View file

@ -17,3 +17,32 @@ export const createBindGroupCache = <K1 extends object, K2 extends object>(
return bindGroup;
};
};
export const createBindGroupCache3 = <
K1 extends object,
K2 extends object,
K3 extends object,
>(
factory: (key1: K1, key2: K2, key3: K3) => GPUBindGroup
): ((key1: K1, key2: K2, key3: K3) => GPUBindGroup) => {
const outer = new WeakMap<K1, WeakMap<K2, WeakMap<K3, GPUBindGroup>>>();
return (key1, key2, key3) => {
let mid = outer.get(key1);
if (!mid) {
mid = new WeakMap();
outer.set(key1, mid);
}
let inner = mid.get(key2);
if (!inner) {
inner = new WeakMap();
mid.set(key2, inner);
}
const cached = inner.get(key3);
if (cached) {
return cached;
}
const bindGroup = factory(key1, key2, key3);
inner.set(key3, bindGroup);
return bindGroup;
};
};