Threejs:PointCloudMaterial大小与ShaderMaterial gl_PointSize相比,大小衰减

时间:2015-05-30 12:24:42

标签: three.js webgl vertex-shader

我很想知道gl_PointSizePointCloudMaterial中的size属性之间的关系。

当我使用PointCloud创建PointCloudMaterial并将size属性设置为1时,粒子的大小远远大于创建{{1}时的大小使用PointCloud并将顶点着色器的size参数设置为ShaderMaterial。我还考虑了1着色器中的尺寸衰减:

PointCloudMaterial

我在这里提取了一个简单的问题示例: http://dev.cartelle.nl/particle-example/

  • 红色粒子被指定为<script type="x-shader/x-vertex" id="particle_vs"> uniform float size; uniform float scale; void main() { vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); gl_PointSize = size * ( scale / length( mvPosition.xyz ) ); gl_Position = projectionMatrix * mvPosition; } </script> ,其大小为PointCloudMaterial
  • 绿色粒子被分配了一个1,其ShaderMaterialVertex Shader的大小衰减。在这种情况下,我已将PointCloudMaterial设置为size,您可以看到绿色粒子仍然较小。

我的预期结果是300采用与ShaderMaterial上的尺寸属性相同的单位尺寸。我必须让这两种材料一起工作,所以我试图找出这些尺寸之间的关系。一定是我用顶点着色器遗漏的东西吗?

谢谢! 约翰尼

1 个答案:

答案 0 :(得分:0)

UIViewController中,您需要设置

ShaderMaterial

这是因为scale: { type: 'f', value: window.innerHeight / 2 }, 方法WebGLRenderer中的以下行:

refreshUniformsParticle()

three.js r.71