All target components already have stable external props and preview integration. The problem is isolated to how their custom shader materials interact with map scenes that enable logarithmic depth buffering. The safest fix is to preserve geometry, animation, and props while changing only the underlying material strategy.
Use CustomShaderMaterial instead of raw shader materials.
rectangleShimmerComponent uses THREE.MeshBasicMaterial as the base material because its wall effect is an unlit transparent surface.flowingSmokeComponent uses THREE.PointsMaterial as the base material because the smoke system is built on THREE.Points and needs csm_PointSize.superEnergyShieldComponent uses THREE.MeshBasicMaterial as the base material because the shield is an additive, unlit shell effect.chargeOrbGatherComponent, chargedBlastRingsComponent, and chargedBlastProjectileComponent use THREE.MeshBasicMaterial as the base material because they are emissive mesh effects and need to stay compatible with the renderer's built-in depth/log-depth path.Keep the current component contracts unchanged.
Rewrite shader outputs to CSM conventions instead of reproducing full built-in shaders.
csm_Position and csm_DiffuseColor.csm_Position, csm_PointSize, and csm_DiffuseColor.csm_Position and csm_DiffuseColor.csm_Position and csm_DiffuseColor.Remove UV coupling from the rectangle wall gradient shader.
uHeight uniform, which keeps the gradient stable even when attached through a base material pipeline.Make the imported shader material package explicit.
three-custom-shader-material through a transitive dependency, but importing it from application code should be backed by a direct dependency declaration in package.json.Risk: shared material state drifts across the four rectangle walls.
Risk: smoke particle sizing changes when moving away from raw gl_PointSize.
csm_PointSize.Risk: shield fresnel or hit-wave visuals shift after moving off raw gl_FragColor.
Risk: charged blast instancing or release motion breaks after moving off raw shader materials.
Risk: map compatibility fix changes standalone preview appearance.
logarithmicDepthBuffer.