playcanvas
Version:
PlayCanvas WebGL game engine
54 lines (52 loc) • 1.24 kB
JavaScript
var gsplatVS = `
varying mediump vec2 gaussianUV;
varying mediump vec4 gaussianColor;
varying float id;
mediump vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0);
varying float vLinearDepth;
void main(void) {
SplatSource source;
if (!initSource(source)) {
gl_Position = discardVec;
return;
}
vec3 modelCenter = readCenter(source);
SplatCenter center;
if (!initCenter(modelCenter, center)) {
gl_Position = discardVec;
return;
}
SplatCorner corner;
if (!initCorner(source, center, corner)) {
gl_Position = discardVec;
return;
}
vec4 clr = readColor(source);
clr.a *= corner.aaFactor;
vec3 dir = normalize(center.view * mat3(center.modelView));
vec3 sh[SH_COEFFS];
float scale;
readSHData(source, sh, scale);
clr.xyz += evalSH(sh, dir) * scale;
clipCorner(corner, clr.w);
gl_Position = center.proj + vec4(corner.offset, 0, 0);
gaussianUV = corner.uv;
gaussianColor = vec4(prepareOutputFromGamma(max(clr.xyz, 0.0)), clr.w);
id = float(source.id);
vLinearDepth = -center.view.z;
}
`;
export { gsplatVS as default };