playcanvas
Version:
PlayCanvas WebGL game engine
59 lines (57 loc) • 1.36 kB
JavaScript
var gsplatPS = `
varying id: f32;
uniform alphaClip: f32;
varying vLinearDepth: f32;
const EXP4 = exp(-4.0);
const INV_EXP4 = 1.0 / (1.0 - EXP4);
fn normExp(x: f32) -> f32 {
return (exp(x * -4.0) - EXP4) * INV_EXP4;
}
varying gaussianUV: vec2f;
varying gaussianColor: vec4f;
@fragment
fn fragmentMain(input: FragmentInput) -> FragmentOutput {
var output: FragmentOutput;
let A: f32 = dot(gaussianUV, gaussianUV);
if (A > 1.0) {
discard;
return output;
}
var alpha = normExp(A) * gaussianColor.a;
if (alpha < uniform.alphaClip) {
discard;
return output;
}
output.color = getPickOutput();
output.color = vec4f(0.0, 0.0, 0.0, 1.0);
output.color = float2vec4(vLinearDepth);
if (alpha < (1.0 / 255.0)) {
discard;
return output;
}
opacityDither(&alpha, id * 0.013);
output.color = vec4f(input.gaussianColor.xyz * alpha, alpha);
return output;
}`;
export { gsplatPS as default };