I want to use THREE.ShaderMaterial
instead of THREE.PointMaterial
.
And have a problem with sizing or drawing of particles.
If I use THREE.PointMaterial
, then sizes of particles depend on z coord of particle position (other words: depth of particle).
But, if I use THREE.ShaderMaterial
then I lose the needed effect.
the left shpere is THREE.ShaderMaterial
the right shpere is THREE.PointMaterial
How you can see, have a big difference.
Maybe someone knows how to get the same result of rendering with using THREE.ShaderMaterial
?
Code for mareials:
THREE.ShaderMaterial
const shaderPoint = THREE.ShaderLib.points
const uniforms = THREE.UniformsUtils.clone(shaderPoint.uniforms)
uniforms.map.value = /*set some texture*/
uniforms.size.value = 60
material = new THREE.ShaderMaterial({
uniforms: uniforms,
defines: {
"USE_MAP": ""
},
transparent: true,
// alphaTest: .4,
depthWrite: false,
// depthTest: false,
// blending: THREE.AdditiveBlending,
vertexShader: shaderPoint.vertexShader,
fragmentShader: shaderPoint.fragmentShader
}))
THREE.PointMaterial
let material = new THREE.PointsMaterial({
size: 60,
// color: "#f0f",
map: uniforms.map.value,
depthWrite: false,
transparent: true
})