Skip to content

Commit ce7d94d

Browse files
authored
impr: Remove unnecessary nested blocks in seed functions (#2086)
1 parent fb1c36d commit ce7d94d

20 files changed

Lines changed: 60 additions & 121 deletions

apps/typegpu-docs/src/examples/threejs/compute-cloth/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,11 @@ export const controls = defineControls({
371371
},
372372
},
373373
'Sheen Color': {
374-
initial: d.vec3f(API.sheenColor),
374+
initial: d.vec3f(
375+
((API.sheenColor >> 16) & 0xff) / 255,
376+
((API.sheenColor >> 8) & 0xff) / 255,
377+
(API.sheenColor & 0xff) / 255,
378+
),
375379
onColorChange: (value) => {
376380
const color = new THREE.Color().fromArray(value);
377381
API.sheenColor = color.getHex();

packages/typegpu-noise/src/random.ts

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,42 +18,34 @@ import { randomGeneratorSlot } from './generator.ts';
1818
const TWO_PI = Math.PI * 2;
1919
const EPS = 1e-7; // don't ever get any lower than this
2020

21-
const seedNotEmpty = tgpu.comptime(
21+
const warnIfNotProvided = tgpu.comptime(
2222
(seedFnName: keyof typeof randomGeneratorSlot.$) => {
23-
if (randomGeneratorSlot.$[seedFnName]) {
24-
return true;
23+
if (!randomGeneratorSlot.$[seedFnName]) {
24+
console.warn(`Called \`randf.${seedFnName}\`, but it wasn't provided`);
2525
}
26-
console.warn(`Called \`randf.${seedFnName}\`, but it wasn't provided`);
27-
return false;
26+
27+
return undefined;
2828
},
2929
);
3030

3131
export const randSeed = tgpu.fn([d.f32])((seed) => {
32-
if (seedNotEmpty('seed')) {
33-
// @ts-expect-error trust me
34-
randomGeneratorSlot.$.seed(seed);
35-
}
32+
warnIfNotProvided('seed');
33+
randomGeneratorSlot.$.seed ? randomGeneratorSlot.$.seed(seed) : undefined;
3634
});
3735

3836
export const randSeed2 = tgpu.fn([d.vec2f])((seed) => {
39-
if (seedNotEmpty('seed2')) {
40-
// @ts-expect-error trust me
41-
randomGeneratorSlot.$.seed2(seed);
42-
}
37+
warnIfNotProvided('seed2');
38+
randomGeneratorSlot.$.seed2 ? randomGeneratorSlot.$.seed2(seed) : undefined;
4339
});
4440

4541
export const randSeed3 = tgpu.fn([d.vec3f])((seed) => {
46-
if (seedNotEmpty('seed3')) {
47-
// @ts-expect-error trust me
48-
randomGeneratorSlot.$.seed3(seed);
49-
}
42+
warnIfNotProvided('seed3');
43+
randomGeneratorSlot.$.seed3 ? randomGeneratorSlot.$.seed3(seed) : undefined;
5044
});
5145

5246
export const randSeed4 = tgpu.fn([d.vec4f])((seed) => {
53-
if (seedNotEmpty('seed4')) {
54-
// @ts-expect-error trust me
55-
randomGeneratorSlot.$.seed4(seed);
56-
}
47+
warnIfNotProvided('seed4');
48+
randomGeneratorSlot.$.seed4 ? randomGeneratorSlot.$.seed4(seed) : undefined;
5749
});
5850

5951
export const randFloat01: TgpuFn<() => d.F32> = tgpu

packages/typegpu/src/tgsl/wgslGenerator.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ function operatorToType<
158158

159159
const unaryOpCodeToCodegen = {
160160
'-': neg[$gpuCallable].call,
161-
'void': () => snip('', wgsl.Void, 'constant'),
161+
'void': () => snip(undefined, wgsl.Void, 'constant'),
162162
} satisfies Partial<
163163
Record<tinyest.UnaryOperator, (...args: never[]) => unknown>
164164
>;
@@ -196,6 +196,7 @@ class WgslGenerator implements ShaderGenerator {
196196
try {
197197
this.ctx.indent();
198198
const body = statements.map((statement) => this.statement(statement))
199+
.filter((statement) => statement.length > 0)
199200
.join('\n');
200201
this.ctx.dedent();
201202
return `{
@@ -264,6 +265,10 @@ ${this.ctx.pre}}`;
264265
if (!id) {
265266
throw new Error('Cannot resolve an empty identifier');
266267
}
268+
if (id === 'undefined') {
269+
return snip(undefined, wgsl.Void, 'constant');
270+
}
271+
267272
const res = this.ctx.getById(id);
268273

269274
if (!res) {
@@ -849,8 +854,9 @@ ${this.ctx.pre}}`;
849854
statement: tinyest.Statement,
850855
): string {
851856
if (typeof statement === 'string') {
852-
const resolved = this.ctx.resolve(this.identifier(statement).value).value;
853-
return resolved.length === 0 ? '' : `${this.ctx.pre}${resolved};`;
857+
const id = this.identifier(statement);
858+
const resolved = id.value && this.ctx.resolve(id.value).value;
859+
return resolved ? `${this.ctx.pre}${resolved};` : '';
854860
}
855861

856862
if (typeof statement === 'boolean') {
@@ -1123,8 +1129,9 @@ ${this.ctx.pre}else ${alternate}`;
11231129
return `${this.ctx.pre}break;`;
11241130
}
11251131

1126-
const resolved = this.ctx.resolve(this.expression(statement).value).value;
1127-
return resolved.length === 0 ? '' : `${this.ctx.pre}${resolved};`;
1132+
const expr = this.expression(statement);
1133+
const resolved = expr.value && this.ctx.resolve(expr.value).value;
1134+
return resolved ? `${this.ctx.pre}${resolved};` : '';
11281135
}
11291136
}
11301137

packages/typegpu/tests/computePipeline.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,6 @@ describe('TgpuComputePipeline', () => {
542542
{
543543
a[1i] = 1h;
544544
}
545-
546545
}"
547546
`);
548547
});

packages/typegpu/tests/declare.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ struct Output {
111111
"@group(0) @binding(0) var<uniform> val: f32;
112112
113113
fn main() -> f32 {
114-
115114
return 2f;
116115
}"
117116
`);

packages/typegpu/tests/examples/individual/3d-fish.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,7 @@ describe('3d fish example', () => {
3838
}
3939
4040
fn randSeed2(seed: vec2f) {
41-
{
42-
seed2(seed);
43-
}
41+
seed2(seed);
4442
}
4543
4644
fn sample() -> f32 {

packages/typegpu/tests/examples/individual/caustics.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@ describe('caustics example', () => {
5050
}
5151
5252
fn randSeed3(seed: vec3f) {
53-
{
54-
seed3(seed);
55-
}
53+
seed3(seed);
5654
}
5755
5856
fn sample_1() -> f32 {

packages/typegpu/tests/examples/individual/clouds.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@ describe('clouds example', () => {
5050
}
5151
5252
fn randSeed2(seed: vec2f) {
53-
{
54-
seed2(seed);
55-
}
53+
seed2(seed);
5654
}
5755
5856
@group(0) @binding(0) var<uniform> resolutionUniform: vec2f;

packages/typegpu/tests/examples/individual/fluid-double-buffering.test.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,7 @@ describe('fluid double buffering example', () => {
107107
}
108108
109109
fn randSeed2(seed: vec2f) {
110-
{
111-
seed2(seed);
112-
}
110+
seed2(seed);
113111
}
114112
115113
@group(0) @binding(2) var<storage, read> gridBetaBuffer: array<vec4f, 1048576>;
@@ -285,9 +283,7 @@ describe('fluid double buffering example', () => {
285283
}
286284
287285
fn randSeed2(seed: vec2f) {
288-
{
289-
seed2(seed);
290-
}
286+
seed2(seed);
291287
}
292288
293289
@group(0) @binding(2) var<storage, read> gridAlphaBuffer: array<vec4f, 1048576>;

packages/typegpu/tests/examples/individual/jelly-slider.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,7 @@ describe('jelly-slider example', () => {
7676
}
7777
7878
fn randSeed2(seed: vec2f) {
79-
{
80-
seed2(seed);
81-
}
79+
seed2(seed);
8280
}
8381
8482
struct Camera {

0 commit comments

Comments
 (0)