playcanvas
Version:
PlayCanvas WebGL game engine
3 lines (2 loc) • 1.94 kB
TypeScript
declare const _default: "\n#include \"gsplatCommonVS\"\n\nvarying gaussianUV: vec2f;\nvarying gaussianColor: vec4f;\n\n#ifndef DITHER_NONE\n varying id: f32;\n#endif\n\nconst discardVec: vec4f = vec4f(0.0, 0.0, 2.0, 1.0);\n\n#ifdef PREPASS_PASS\n varying vLinearDepth: f32;\n#endif\n\n@vertex\nfn vertexMain(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n\n // read gaussian details\n var source: SplatSource;\n if (!initSource(&source)) {\n output.position = discardVec;\n return output;\n }\n\n let modelCenter: vec3f = readCenter(&source);\n\n var center: SplatCenter;\n if (!initCenter(modelCenter, ¢er)) {\n output.position = discardVec;\n return output;\n }\n\n // project center to screen space\n var corner: SplatCorner;\n if (!initCorner(&source, ¢er, &corner)) {\n output.position = discardVec;\n return output;\n }\n\n // read color\n var clr: vec4f = readColor(&source);\n\n #if GSPLAT_AA\n // apply AA compensation\n clr.a = clr.a * corner.aaFactor;\n #endif\n\n // evaluate spherical harmonics\n #if SH_BANDS > 0\n // calculate the model-space view direction\n let modelView3x3 = mat3x3f(center.modelView[0].xyz, center.modelView[1].xyz, center.modelView[2].xyz);\n let dir = normalize(modelView3x3 * center.view);\n clr = vec4f(clr.xyz + evalSH(&source, dir), clr.a);\n #endif\n\n clipCorner(&corner, clr.w);\n\n // write output\n output.position = center.proj + vec4f(corner.offset, 0.0, 0.0);\n output.gaussianUV = corner.uv;\n output.gaussianColor = vec4f(prepareOutputFromGamma(max(clr.xyz, vec3f(0.0))), clr.w);\n\n #ifndef DITHER_NONE\n output.id = f32(source.id);\n #endif\n\n #ifdef PREPASS_PASS\n output.vLinearDepth = -center.view.z;\n #endif\n\n return output;\n}\n";
export default _default;