Skip to content

Commit e5e4442

Browse files
committed
Use object args for march function
1 parent 0edc8a0 commit e5e4442

File tree

3 files changed

+55
-58
lines changed

3 files changed

+55
-58
lines changed

apps/phoure-www/src/lib-ray-marching/coneTracer.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ import {
1616
vec2u,
1717
} from 'typegpu/data';
1818

19-
import { roundUp } from '../mathUtils';
20-
import { constructRayDir, constructRayPos } from './camera';
21-
import { MarchResult } from './marchSdf';
22-
import worldSdf, { FAR, ShapeContext } from './worldSdf';
19+
import { roundUp } from '../mathUtils.ts';
20+
import { constructRayDir, constructRayPos } from './camera.ts';
21+
import { MarchResult } from './marchSdf.ts';
22+
import worldSdf, { FAR, ShapeContext } from './worldSdf.ts';
2323

2424
const BlockSize = 8;
2525

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export { ShapeContext } from './types';
2-
export { estimateNormal } from './estimateNormal';
3-
export { march, MarchParams, MarchResult } from './marchSdf';
1+
export { ShapeContext } from './types.ts';
2+
export { estimateNormal } from './estimateNormal.ts';
3+
export { march, MarchParams, MarchResult } from './marchSdf.ts';

apps/phoure-www/src/lib-ray-marching/marchSdf.ts

Lines changed: 48 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -27,59 +27,56 @@ export const MarchResult = d.struct({
2727
position: d.vec3f,
2828
});
2929

30-
export const march = tgpu['~unstable']
31-
.fn([
32-
d.ptrFn(ShapeContext),
33-
d.u32,
34-
d.ptrFn(MarchResult),
35-
])(`(ctx: ptr<function, ShapeContext>, limit: u32, out: ptr<function, MarchResult>) {
36-
var pos = (*ctx).rayPos;
37-
var prev_dist = -1.;
38-
var min_dist: f32 = MarchParams.farPlane;
39-
40-
var step = 0u;
41-
var progress = 0.;
42-
43-
for (; step <= limit; step++) {
44-
pos = (*ctx).rayPos + (*ctx).rayDir * progress;
45-
min_dist = MarchParams.sampleSdf(pos);
46-
47-
// Inside volume?
48-
if (min_dist <= 0.) {
49-
// No need to check more objects.
50-
break;
51-
}
52-
53-
if (min_dist < MarchParams.getSurfaceThreshold(*ctx) && min_dist < prev_dist) {
54-
// No need to check more objects.
55-
break;
56-
}
57-
58-
// march forward safely
59-
progress += min_dist;
60-
(*ctx).rayDistance += min_dist;
61-
62-
if (progress > MarchParams.farPlane) {
63-
// Stop checking.
64-
break;
65-
}
66-
67-
prev_dist = min_dist;
30+
export const march = tgpu['~unstable'].fn({
31+
ctx: d.ptrFn(ShapeContext),
32+
limit: d.u32,
33+
out: d.ptrFn(MarchResult),
34+
})`{
35+
var pos = (*ctx).rayPos;
36+
var prev_dist = -1.;
37+
var min_dist: f32 = MarchParams.farPlane;
38+
39+
var step = 0u;
40+
var progress = 0.;
41+
42+
for (; step <= limit; step++) {
43+
pos = (*ctx).rayPos + (*ctx).rayDir * progress;
44+
min_dist = MarchParams.sampleSdf(pos);
45+
46+
// Inside volume?
47+
if (min_dist <= 0.) {
48+
// No need to check more objects.
49+
break;
6850
}
6951
70-
(*out).position = pos;
52+
if (min_dist < MarchParams.getSurfaceThreshold(*ctx) && min_dist < prev_dist) {
53+
// No need to check more objects.
54+
break;
55+
}
56+
57+
// march forward safely
58+
progress += min_dist;
59+
(*ctx).rayDistance += min_dist;
7160
72-
// Not near surface or distance rising?
73-
if (min_dist > MarchParams.getSurfaceThreshold(*ctx) * 2. || min_dist > prev_dist) {
74-
// Sky
75-
(*out).steps = MarchParams.maxSteps + 1u;
76-
return;
61+
if (progress > MarchParams.farPlane) {
62+
// Stop checking.
63+
break;
7764
}
7865
79-
(*out).steps = step;
80-
}`)
81-
.$uses({
82-
ShapeContext,
83-
MarchResult,
84-
MarchParams,
85-
});
66+
prev_dist = min_dist;
67+
}
68+
69+
(*out).position = pos;
70+
71+
// Not near surface or distance rising?
72+
if (min_dist > MarchParams.getSurfaceThreshold(*ctx) * 2. || min_dist > prev_dist) {
73+
// Sky
74+
(*out).steps = MarchParams.maxSteps + 1u;
75+
return;
76+
}
77+
78+
(*out).steps = step;
79+
}
80+
`.$uses({
81+
MarchParams,
82+
});

0 commit comments

Comments
 (0)