Javascript Three.js着色器材质不';t显示粒子
我有一个非常基本的场景,包括一个立方体形状的粒子网格。你可以在这里找到它: 我的问题是,如果使用着色器材质,则无法显示粒子。以下是我的(非常简单)着色器代码:Javascript Three.js着色器材质不';t显示粒子,javascript,three.js,shader,Javascript,Three.js,Shader,我有一个非常基本的场景,包括一个立方体形状的粒子网格。你可以在这里找到它: 我的问题是,如果使用着色器材质,则无法显示粒子。以下是我的(非常简单)着色器代码: <script type = 'x-shader/x-vertex' id = 'vertexShader'> void main() { gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0); } </script>
<script type = 'x-shader/x-vertex' id = 'vertexShader'>
void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0);
}
</script>
<script type = 'x-shader-x-fragment' id = 'fragmentShader'>
void main() {
gl_FragColor = vec4( 1.0, 0.0, 1.0, 1.0 );
}
</script>
我注意到,如果我注释掉“材质”行,材质将默认为“PointsMaterial”,粒子将显示。此外,粒子的颜色也会受到着色器代码的影响,即使我觉得我还没有将它们链接在一起
如何使用着色器材质显示粒子?您需要在顶点着色器中设置
gl\u PointSize
<script type = 'x-shader/x-vertex' id = 'vertexShader'>
void main() {
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
gl_PointSize = 1.0 * ( 300.0 / -mvPosition.z );
gl_Position = projectionMatrix * mvPosition;
}
</script>
void main(){
vec4 mvPosition=modelViewMatrix*vec4(位置,1.0);
gl_PointSize=1.0*(300.0/-mvPosition.z);
gl_位置=投影矩阵*mvPosition;
}
<script type = 'x-shader/x-vertex' id = 'vertexShader'>
void main() {
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
gl_PointSize = 1.0 * ( 300.0 / -mvPosition.z );
gl_Position = projectionMatrix * mvPosition;
}
</script>