-
-
Notifications
You must be signed in to change notification settings - Fork 163
Expand file tree
/
Copy pathUpdateRayQueueParamsKernel.js
More file actions
39 lines (25 loc) · 855 Bytes
/
UpdateRayQueueParamsKernel.js
File metadata and controls
39 lines (25 loc) · 855 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { IndirectStorageBufferAttribute } from 'three/webgpu';
import { uniform, storage } from 'three/tsl';
import { ComputeKernel } from '../ComputeKernel.js';
import { wgslTagFn } from '../../lib/nodes/WGSLTagFnNode.js';
export class UpdateRayQueueParamsKernel extends ComputeKernel {
constructor() {
const params = {
processed: uniform( 0 ),
queueSizes: storage( new IndirectStorageBufferAttribute( 4, 1 ), 'u32' ),
};
const fn = wgslTagFn/* wgsl */`
fn compute( processed: u32 ) -> void {
let queueSizes = &${ params.queueSizes };
var queueSize = queueSizes[ 1 ] - queueSizes[ 0 ];
if ( processed > queueSize ) {
queueSizes[ 0 ] = queueSizes[ 1 ];
} else {
queueSizes[ 0 ] = queueSizes[ 0 ] + processed;
}
}
`;
super( fn( params ) );
this.defineUniformAccessors( params );
}
}