diff --git a/src/scene/gsplat/gsplat-data.js b/src/scene/gsplat/gsplat-data.js index a35d6766559..a8b77f32b5a 100644 --- a/src/scene/gsplat/gsplat-data.js +++ b/src/scene/gsplat/gsplat-data.js @@ -261,7 +261,7 @@ class GSplatData { /** * @param {Vec3} result - The result. - * @param {Function} pred - Predicate given index for skipping. + * @param {Function} [pred] - Predicate given index for skipping. */ calcFocalPoint(result, pred) { const x = this.getProp('x'); diff --git a/src/scene/gsplat/gsplat-material.js b/src/scene/gsplat/gsplat-material.js index 2cec76d23f5..0381aa2e537 100644 --- a/src/scene/gsplat/gsplat-material.js +++ b/src/scene/gsplat/gsplat-material.js @@ -1,5 +1,5 @@ import { CULLFACE_NONE, SEMANTIC_ATTR13, SEMANTIC_POSITION } from '../../platform/graphics/constants.js'; -import { BLEND_NONE, BLEND_NORMAL, DITHER_NONE } from '../constants.js'; +import { BLEND_NONE, BLEND_PREMULTIPLIED, DITHER_NONE } from '../constants.js'; import { ShaderMaterial } from '../materials/shader-material.js'; import { shaderChunks } from '../shader-lib/chunks/chunks.js'; @@ -36,7 +36,7 @@ const createGSplatMaterial = (options = {}) => { material.setDefine(`DITHER_${ditherEnum.toUpperCase()}`, ''); material.cull = CULLFACE_NONE; - material.blendType = dither ? BLEND_NONE : BLEND_NORMAL; + material.blendType = dither ? BLEND_NONE : BLEND_PREMULTIPLIED; material.depthWrite = dither; material.update(); diff --git a/src/scene/shader-lib/chunks/gsplat/frag/gsplat.js b/src/scene/shader-lib/chunks/gsplat/frag/gsplat.js index e83197c20b0..1074a332040 100644 --- a/src/scene/shader-lib/chunks/gsplat/frag/gsplat.js +++ b/src/scene/shader-lib/chunks/gsplat/frag/gsplat.js @@ -36,7 +36,7 @@ void main(void) { opacityDither(alpha, id * 0.013); #endif - gl_FragColor = vec4(gaussianColor.xyz, alpha); + gl_FragColor = vec4(gaussianColor.xyz * alpha, alpha); #endif } `;