Open
Description
Description
Unable to create TSL function that supports out / inout parameters.
Tested both with WebGPU and WebGL fallback.
Reproduction steps
See code.
Code
const setStuff = Fn(({ value }: { value: ShaderNodeObject<Node> }) => {
value.mulAssign(vec4(1, 0, 0, 1));
return value;
}).setLayout({
name: 'setStuff', type: 'vec4',
inputs: [{ name: 'value', type: 'vec4', qualifier: 'out' }],
});
...
const value = vec4(1, 1, 1, 1).toVar('value');
testMaterial.fragmentNode = value.bypass(setStuff({ value: value }));
Result
// Error while parsing WGSL: :27:2 error: cannot assign to parameter 'value'
fn setStuff ( value : vec4<f32> ) -> vec4<f32> {
value = ( value * vec4<f32>( 1.0, 0.0, 0.0, 1.0 ) );
return value;
}
vec4 setStuff ( vec4 value ) {
value = ( value * vec4( 1.0, 0.0, 0.0, 1.0 ) );
return value;
}
Live example
N/A
Screenshots
No response
Version
three 0.177.0
Device
No response
Browser
No response
OS
No response