Skip to content

Variable: MESH_PICK_VERTEX ​

ts
const MESH_PICK_VERTEX: '\nprecision highp float;\nprecision highp int;\n\nuniform uint uPickBase;\nflat out uint vPickId;\n\nvoid main() {\n  vec4 p = vec4(position, 1.0);\n#ifdef USE_INSTANCING\n  p = instanceMatrix * p;\n#endif\n  gl_Position = projectionMatrix * modelViewMatrix * p;\n#if defined(PICK_VERTEX)\n  vPickId = uPickBase + uint(gl_VertexID);\n#elif defined(PICK_TRIANGLE)\n  // All three vertices of triangle t (non-indexed: vertex ids 3t..3t+2) agree, so the flat\n  // varying is the triangle index whichever vertex is provoking.\n  vPickId = uPickBase + uint(gl_VertexID) / 3u;\n#elif defined(PICK_INSTANCE)\n  vPickId = uPickBase + uint(gl_InstanceID);\n#else\n  vPickId = uPickBase;\n#endif\n}\n';

Experimental

Generic mesh pick vertex shader. Defines select the element id: PICK_VERTEX, PICK_TRIANGLE, PICK_INSTANCE, or none (object-level).

Released under the MIT License.