playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
3 lines (2 loc) • 990 B
TypeScript
declare const _default: "\nvec4 encodePickOutput(uint id) {\n const vec4 inv = vec4(1.0 / 255.0);\n const uvec4 shifts = uvec4(16, 8, 0, 24);\n uvec4 col = (uvec4(id) >> shifts) & uvec4(0xff);\n return vec4(col) * inv;\n}\n\n#ifndef PICK_CUSTOM_ID\n uniform uint meshInstanceId;\n\n vec4 getPickOutput() {\n return encodePickOutput(meshInstanceId);\n }\n#endif\n\n#ifdef DEPTH_PICK_PASS\n #include \"floatAsUintPS\"\n #ifndef CAMERAPLANES\n #define CAMERAPLANES\n uniform vec4 camera_params; // x: 1/far, y: far, z: near, w: isOrtho\n #endif\n vec4 getPickDepth() {\n float linearDepth;\n if (camera_params.w > 0.5) {\n linearDepth = gl_FragCoord.z;\n } else {\n float viewDist = 1.0 / gl_FragCoord.w;\n linearDepth = (viewDist - camera_params.z) / (camera_params.y - camera_params.z);\n }\n return float2uint(linearDepth);\n }\n#endif\n";
export default _default;