Description
Nested structs supported in #32724 appear to work in rendering paths, but renderer.debug.getShaderAsync() fails at MemberNode.getMemberType, falling back to unrelated output.
Specifically, it throws the following error.
three.core.js:2035 THREE.TSL: TypeError: Cannot read properties of null (reading 'getMemberType') "MemberNode.getMemberType()"
Reproduction steps
- Call
renderer.debug.getShaderAsync() with a node material that outputs a member of a nested struct
- See the output and errors
Code
const Inner = struct({ x: 'vec3' }, 'Inner')
const Outer = struct({ inner: 'Inner' }, 'Outer')
const outer = Outer(Inner(vec3(1, 0, 0)))
const inner = outer.get('inner')
const node = inner.get('x')
const material = new NodeMaterial()
material.fragmentNode = node
void renderer.debug
.getShaderAsync(
new Scene(),
new Camera(),
new Mesh(new BufferGeometry(), material)
)
.then(({ fragmentShader }) => {
console.log(fragmentShader)
})
Live example
https://jsfiddle.net/shotamatsuda/24ebv5j9/
Screenshots
No response
Version
r183
Device
Desktop
Browser
Chrome
OS
MacOS
Description
Nested structs supported in #32724 appear to work in rendering paths, but
renderer.debug.getShaderAsync()fails atMemberNode.getMemberType, falling back to unrelated output.Specifically, it throws the following error.
Reproduction steps
renderer.debug.getShaderAsync()with a node material that outputs a member of a nested structCode
Live example
https://jsfiddle.net/shotamatsuda/24ebv5j9/
Screenshots
No response
Version
r183
Device
Desktop
Browser
Chrome
OS
MacOS