playcanvas
Version:
PlayCanvas WebGL game engine
3 lines (2 loc) • 2.25 kB
TypeScript
declare const _default: "\n#include \"gsplatPackingPS\"\n\nuniform highp sampler2D means_l;\nuniform highp sampler2D means_u;\nuniform highp sampler2D quats;\nuniform highp sampler2D scales;\nuniform highp sampler2D sh0;\nuniform highp sampler2D sh_labels;\n\nuniform highp uint numSplats;\n\n#ifdef REORDER_V1\n float sigmoid(float x) { return 1.0 / (1.0 + exp(-x)); }\n vec3 vmin(vec3 v) { return vec3(min(min(v.x, v.y), v.z)); }\n vec3 vmax(vec3 v) { return vec3(max(max(v.x, v.y), v.z)); }\n vec3 resolve(vec3 m, vec3 M, vec3 v) { return (mix(m, M, v) - vmin(m)) / (vmax(M) - vmin(m)); }\n \n uniform vec3 scalesMins;\n uniform vec3 scalesMaxs;\n uniform vec4 sh0Mins;\n uniform vec4 sh0Maxs;\n#else\n uniform vec4 scales_codebook[64];\n uniform vec4 sh0_codebook[64];\n#endif\n\nvoid main(void) {\n int w = int(textureSize(means_l, 0).x);\n ivec2 uv = ivec2(gl_FragCoord.xy);\n if (uint(uv.x + uv.y * w) >= numSplats) {\n discard;\n }\n\n vec3 meansLSample = texelFetch(means_l, uv, 0).xyz;\n vec3 meansUSample = texelFetch(means_u, uv, 0).xyz;\n vec4 quatsSample = texelFetch(quats, uv, 0);\n vec3 scalesSample = texelFetch(scales, uv, 0).xyz;\n vec4 sh0Sample = texelFetch(sh0, uv, 0);\n vec2 shLabelsSample = texelFetch(sh_labels, uv, 0).xy;\n\n #ifdef REORDER_V1\n uint scale = pack101010(resolve(scalesMins, scalesMaxs, scalesSample));\n uint sh0 = pack111110(resolve(sh0Mins.xyz, sh0Maxs.xyz, sh0Sample.xyz));\n float alpha = sigmoid(mix(sh0Mins.w, sh0Maxs.w, sh0Sample.w));\n #else\n uint scale = pack101010(resolveCodebook(scalesSample, scales_codebook)); // resolve scale to 10,10,10 bits\n uint sh0 = pack111110(resolveCodebook(sh0Sample.xyz, sh0_codebook)); // resolve sh0 to 11,11,10 bits\n float alpha = sh0Sample.w;\n #endif\n\n uint qmode = uint(quatsSample.w * 255.0) - 252u;\n\n pcFragColor0 = uvec4(\n pack8888(vec4(meansLSample, shLabelsSample.x)),\n pack8888(vec4(meansUSample, shLabelsSample.y)),\n pack8888(vec4(quatsSample.xyz, alpha)),\n (scale << 2u) | qmode\n );\n pcFragColor1 = unpack8888(sh0);\n}\n";
export default _default;