class MyMesh extends Component {
const { position, } = this.props;
render() {
return <mesh position={ position }>...</mesh>
}
}
Most (but not all) of my meshes go through this class. I wanted to try forcing a manual render order, so I added the renderOrder prop and passed it down:
Since three doesn't check for truthiness, it will sort only on equality difference. Normally, a mesh's render order is undefined. By simply adding the renderOrder={...} prop to my <mesh>, now anything using my component, even if doesn't pass renderOrder, will get null instead of the "default" undefined, which means my scene objects start sorting unexpectedly.
I have a custom mesh component, something like:
Most (but not all) of my meshes go through this class. I wanted to try forcing a manual render order, so I added the
renderOrder
prop and passed it down:I started getting some strange flickering in my scene, and tracked it down to an undefined behavior in threejs.
Here's how three.js sorts by
renderOrder
: https://github.com/mrdoob/three.js/blob/dev/src/renderers/webgl/WebGLRenderLists.js#L7Since three doesn't check for truthiness, it will sort only on equality difference. Normally, a mesh's render order is
undefined
. By simply adding therenderOrder={...}
prop to my<mesh>
, now anything using my component, even if doesn't passrenderOrder
, will getnull
instead of the "default"undefined
, which means my scene objects start sorting unexpectedly.Should the default property be
undefined
, notnull
? https://github.com/toxicFork/react-three-renderer/blob/master/src/lib/descriptors/THREEElementDescriptor.js#L40