我很想知道gl_PointSize
与PointCloudMaterial
中的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
,其ShaderMaterial
占Vertex Shader
的大小衰减。在这种情况下,我已将PointCloudMaterial
设置为size
,您可以看到绿色粒子仍然较小。我的预期结果是300
采用与ShaderMaterial
上的尺寸属性相同的单位尺寸。我必须让这两种材料一起工作,所以我试图找出这些尺寸之间的关系。一定是我用顶点着色器遗漏的东西吗?
谢谢! 约翰尼
答案 0 :(得分:0)
在UIViewController
中,您需要设置
ShaderMaterial
这是因为scale: { type: 'f', value: window.innerHeight / 2 },
方法WebGLRenderer
中的以下行:
refreshUniformsParticle()
three.js r.71