@xeokit/xeokit-sdk
Version:
3D BIM IFC Viewer SDK for AEC engineering applications. Open Source JavaScript Toolkit based on pure WebGL for top performance, real-world coordinates and full double precision
22 lines (20 loc) • 819 B
JavaScript
import {math} from "../../math/math.js";
const tmpVec4 = math.vec4();
export const PickMeshShaderSource = function(meshHash, programVariables) {
const pickColor = programVariables.createUniform("vec4", "pickColor", (set, state) => {
var pickID = state.meshPickID; // Mesh-indexed color
tmpVec4[0] = pickID & 0xFF;
tmpVec4[1] = pickID >> 8 & 0xFF;
tmpVec4[2] = pickID >> 16 & 0xFF;
tmpVec4[3] = pickID >> 24 & 0xFF;
math.mulVec4Scalar(tmpVec4, 1 / 255, tmpVec4);
set(tmpVec4);
});
const outColor = programVariables.createOutput("vec4", "outColor");
return {
getHash: () => [ meshHash ],
programName: "PickMesh",
isPick: true,
appendFragmentOutputs: (src) => src.push(`${outColor} = ${pickColor};`)
};
};