UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

3 lines (2 loc) 2.48 kB
declare const _default: "\n#include \"gsplatCommonVS\"\n\nvarying mediump vec2 gaussianUV;\nvarying mediump vec4 gaussianColor;\n\n#ifndef DITHER_NONE\n varying float id;\n#endif\n\nmediump vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0);\n\n#ifdef PREPASS_PASS\n varying float vLinearDepth;\n#endif\n\n#ifdef GSPLAT_OVERDRAW\n uniform sampler2D colorRamp;\n uniform float colorRampIntensity;\n#endif\n\nvoid main(void) {\n // read gaussian details\n SplatSource source;\n if (!initSource(source)) {\n gl_Position = discardVec;\n return;\n }\n\n #ifdef GSPLAT_WORKBUFFER_DATA\n loadSplatTextures(source);\n #endif\n\n vec3 modelCenter = readCenter(source);\n\n SplatCenter center;\n center.modelCenterOriginal = modelCenter;\n \n modifyCenter(modelCenter);\n center.modelCenterModified = modelCenter;\n\n if (!initCenter(modelCenter, center)) {\n gl_Position = discardVec;\n return;\n }\n\n // project center to screen space\n SplatCorner corner;\n if (!initCorner(source, center, corner)) {\n gl_Position = discardVec;\n return;\n }\n\n // read color\n vec4 clr = readColor(source);\n\n #if GSPLAT_AA\n // apply AA compensation\n clr.a *= corner.aaFactor;\n #endif\n\n // evaluate spherical harmonics\n #if SH_BANDS > 0\n // calculate the model-space view direction\n vec3 dir = normalize(center.view * mat3(center.modelView));\n\n // read sh coefficients\n vec3 sh[SH_COEFFS];\n float scale;\n readSHData(source, sh, scale);\n\n // evaluate\n clr.xyz += evalSH(sh, dir) * scale;\n #endif\n\n modifyColor(modelCenter, clr);\n\n clipCorner(corner, clr.w);\n\n // write output\n gl_Position = center.proj + vec4(corner.offset, 0, 0);\n gaussianUV = corner.uv;\n\n #ifdef GSPLAT_OVERDRAW\n // Overdraw visualization mode: color by elevation\n float t = clamp(modelCenter.y / 20.0, 0.0, 1.0);\n vec3 rampColor = textureLod(colorRamp, vec2(t, 0.5), 0.0).rgb;\n clr.a *= (1.0 / 32.0) * colorRampIntensity;\n gaussianColor = vec4(rampColor, clr.a);\n #else\n gaussianColor = vec4(prepareOutputFromGamma(max(clr.xyz, 0.0)), clr.w);\n #endif\n\n #ifndef DITHER_NONE\n id = float(source.id);\n #endif\n\n #ifdef PREPASS_PASS\n vLinearDepth = -center.view.z;\n #endif\n}\n"; export default _default;