如何将旧的演示升级到最新版本的three.js?

如何将旧的演示升级到最新版本的three.js?,three.js,Three.js,我用旧版本的Three.js(r52)运行了一个webgl演示。 我想使代码适应新版本的Three.js(r1xx)。 但在切换到新版本的Three.js库并升级一些api后,我出现了一些黑屏(例如,将属性值移动到BufferGeometry) 这是传递给ShaderMaterial的着色器代码: <script type="x-shader/x-vertex" id="vertexshader"> attribute float size; attribute vec3 c

我用旧版本的Three.js(r52)运行了一个webgl演示。 我想使代码适应新版本的Three.js(r1xx)。 但在切换到新版本的Three.js库并升级一些api后,我出现了一些黑屏(例如,将属性值移动到BufferGeometry) 这是传递给ShaderMaterial的着色器代码:

<script type="x-shader/x-vertex" id="vertexshader">
  attribute float size;
  attribute vec3 customColor;
  attribute float time;
  uniform float globalTime;

  varying vec3 vColor;
  varying float fAlpha;

  void main() {

    vColor = customColor;

    vec3 pos = position; 

    float animTime = min(1.4, max(1.0, globalTime - time));

    vec3 animated = vec3( pos.x * animTime, pos.y * animTime, pos.z * animTime );

    vec4 mvPosition = modelViewMatrix * vec4( animated, 1.0 );

    fAlpha = 1.0 - (globalTime*0.5);

    gl_PointSize = size * ( 300.0 / length( mvPosition.xyz ) );

    gl_Position = projectionMatrix * mvPosition;

  }
</script>

<script type="x-shader/x-fragment" id="fragmentshader">

  uniform vec3 color;
  uniform sampler2D texture;

  varying vec3 vColor;
  varying float fAlpha;

  void main() {

    // fog
    float depth = gl_FragCoord.z / gl_FragCoord.w;
    float near = 30.0;
    float far = 290.0;
    float fog = 0.0 + smoothstep( near, far, depth );

    vec4 outColor = texture2D( texture, gl_PointCoord );
    if ( outColor.a < 0.25 ) discard; // alpha be gone

    gl_FragColor = vec4( color * vColor, fAlpha );
    gl_FragColor = gl_FragColor * outColor;
    gl_FragColor = mix( gl_FragColor, vec4( vec3(0.0,0.0,0.0), gl_FragColor.w ), fog );

  }

</script>

属性浮动大小;
属性vec3自定义颜色;
属性浮动时间;
均匀浮球时间;
可变vec3颜色;
不同浮法;
void main(){
vColor=自定义颜色;
vec3位置=位置;
浮动时间=最小值(1.4,最大值(1.0,全局时间-时间));
vec3动画=vec3(位置x*动画时间,位置y*动画时间,位置z*动画时间);
vec4 mvPosition=modelViewMatrix*vec4(动画,1.0);
fAlpha=1.0-(全球时间*0.5);
gl_PointSize=尺寸*(300.0/长度(mvPosition.xyz));
gl_位置=投影矩阵*mvPosition;
}
vec3颜色均匀;
二维纹理均匀;
可变vec3颜色;
不同浮法;
void main(){
//雾
浮动深度=gl_FragCoord.z/gl_FragCoord.w;
浮动近=30.0;
浮动far=290.0;
浮动雾=0.0+平滑步长(近、远、深);
vec4 outColor=texture2D(纹理,gl_PointCoord);
如果(outColor.a<0.25)放弃;//α将消失
gl_FragColor=vec4(颜色*vColor,fAlpha);
gl_FragColor=gl_FragColor*outColor;
gl_FragColor=混合(gl_FragColor,vec4(vec3(0.0,0.0,0.0),gl_FragColor.w),雾);
}
ShaderMaterial似乎工作不正常

有人知道我错过了什么吗

旧的:

失败的新版本:

代码可以从chrome开发控制台中看到。
更新:着色器材质问题已解决。线条材质仍不起作用

//var line=new THREE.line(lineGeometry、lineMaterial、THREE.LineSegments)

var line=新的三条线段(线几何图形、线材质)


属性现在是缓冲区几何体的一部分,而不是材质的一部分。这不是一个论坛。只是把代码的链接放在异地是离题的。@prisoner849是的。我已经修改了该部分以适应新的api。但我得到了黑屏材质的着色器。如果将着色器材质替换为MeshBasicMaterial,则会显示网格。