From 58174102a432645d9b7e654267632bb165263d29 Mon Sep 17 00:00:00 2001 From: Sun Xia Date: Thu, 20 Feb 2025 10:56:35 +0800 Subject: [PATCH] avoid shader type error of integer kernal2DSize --- src/splatmesh/SplatMaterial3D.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/splatmesh/SplatMaterial3D.js b/src/splatmesh/SplatMaterial3D.js index 2f4ead38..5bf6800f 100644 --- a/src/splatmesh/SplatMaterial3D.js +++ b/src/splatmesh/SplatMaterial3D.js @@ -134,19 +134,22 @@ export class SplatMaterial3D { mat3 cov2Dm = transpose(T) * Vrk * T; `; + // avoid assigning integer types to float shader variables. + const kernel2DSizeStr = Number.isInteger(kernel2DSize) ? kernel2DSize.toFixed(1) : kernel2DSize.toString(); + if (antialiased) { vertexShaderSource += ` float detOrig = cov2Dm[0][0] * cov2Dm[1][1] - cov2Dm[0][1] * cov2Dm[0][1]; - cov2Dm[0][0] += ${kernel2DSize}; - cov2Dm[1][1] += ${kernel2DSize}; + cov2Dm[0][0] += ${kernel2DSizeStr}; + cov2Dm[1][1] += ${kernel2DSizeStr}; float detBlur = cov2Dm[0][0] * cov2Dm[1][1] - cov2Dm[0][1] * cov2Dm[0][1]; vColor.a *= sqrt(max(detOrig / detBlur, 0.0)); if (vColor.a < minAlpha) return; `; } else { vertexShaderSource += ` - cov2Dm[0][0] += ${kernel2DSize}; - cov2Dm[1][1] += ${kernel2DSize}; + cov2Dm[0][0] += ${kernel2DSizeStr}; + cov2Dm[1][1] += ${kernel2DSizeStr}; `; }