playcanvas
Version:
PlayCanvas WebGL game engine
3 lines (2 loc) • 2.6 kB
TypeScript
declare const _default: "\n#include \"gsplatPackingPS\"\n\nvar means_l: texture_2d<f32>;\nvar means_u: texture_2d<f32>;\nvar quats: texture_2d<f32>;\nvar scales: texture_2d<f32>;\nvar sh0: texture_2d<f32>;\nvar sh_labels: texture_2d<f32>;\n\nuniform numSplats: u32;\n\n#ifdef REORDER_V1\n fn sigmoid(x: f32) -> f32 { return 1.0 / (1.0 + exp(-x)); }\n fn vmin(v: vec3f) -> vec3f { return vec3f(min(min(v.x, v.y), v.z)); }\n fn vmax(v: vec3f) -> vec3f { return vec3f(max(max(v.x, v.y), v.z)); }\n fn resolve(m: vec3f, M: vec3f, v: vec3f) -> vec3f { return (mix(m, M, v) - vmin(m)) / (vmax(M) - vmin(m)); }\n\n uniform scalesMins: vec3f;\n uniform scalesMaxs: vec3f;\n uniform sh0Mins: vec4f;\n uniform sh0Maxs: vec4f;\n#else\n uniform scales_codebook: array<vec4f, 64>;\n uniform sh0_codebook: array<vec4f, 64>;\n#endif\n\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n var output: FragmentOutput;\n\n let w: u32 = textureDimensions(means_l, 0).x;\n let uv: vec2<u32> = vec2<u32>(input.position.xy);\n if (uv.x + uv.y * w >= uniform.numSplats) {\n discard;\n return output;\n }\n\n // fetch the source index and calculate source uv\n let meansLSample: vec3<f32> = textureLoad(means_l, uv, 0).xyz;\n let meansUSample: vec3<f32> = textureLoad(means_u, uv, 0).xyz;\n let quatsSample: vec4<f32> = textureLoad(quats, uv, 0);\n let scalesSample: vec3<f32> = textureLoad(scales, uv, 0).xyz;\n let sh0Sample: vec4f = textureLoad(sh0, uv, 0);\n let shLabelsSample: vec2<f32> = textureLoad(sh_labels, uv, 0).xy;\n\n #ifdef REORDER_V1\n let scale = pack101010(resolve(uniform.scalesMins, uniform.scalesMaxs, scalesSample));\n let sh0 = pack111110(resolve(uniform.sh0Mins.xyz, uniform.sh0Maxs.xyz, sh0Sample.xyz));\n let alpha = sigmoid(mix(uniform.sh0Mins.w, uniform.sh0Maxs.w, sh0Sample.w));\n #else\n let scale = pack101010(resolveCodebook(scalesSample, &uniform.scales_codebook)); // resolve scale to 10,10,10 bits\n let sh0 = pack111110(resolveCodebook(sh0Sample.xyz, &uniform.sh0_codebook)); // resolve sh0 to 11,11,10 bits\n let alpha = sh0Sample.w;\n #endif\n\n let qmode = u32(quatsSample.w * 255.0) - 252u;\n\n output.color = vec4u(\n pack8888(vec4f(meansLSample, shLabelsSample.x)),\n pack8888(vec4f(meansUSample, shLabelsSample.y)),\n pack8888(vec4f(quatsSample.xyz, alpha)),\n (scale << 2u) | qmode\n );\n\n output.color1 = unpack8888(sh0);\n\n return output;\n}\n";
export default _default;