Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 从THREE.ShaderLib构建phong着色器_Three.js_Webgl - Fatal编程技术网

Three.js 从THREE.ShaderLib构建phong着色器

Three.js 从THREE.ShaderLib构建phong着色器,three.js,webgl,Three.js,Webgl,我正在尝试从THREE.ShaderLib构建phong着色器。 这就是我得到的: var phongShader = THREE.ShaderLib.phong; var uniforms = THREE.UniformsUtils.clone(phongShader.uniforms); material = new THREE.ShaderMaterial({ uniforms: uniforms, vertexShader: phongShader.vertexShader,

我正在尝试从THREE.ShaderLib构建phong着色器。 这就是我得到的:

var phongShader = THREE.ShaderLib.phong;
var uniforms = THREE.UniformsUtils.clone(phongShader.uniforms);

material = new THREE.ShaderMaterial({
  uniforms: uniforms,
  vertexShader: phongShader.vertexShader,
  fragmentShader: phongShader.fragmentShader
});
它似乎不起作用。我做错了什么

小提琴: 类似问题:


编辑:在Tapio answer的帮助下更新了小提琴。它现在起作用了

您的JSFIDLE正在使用
THREE.CanvasRenderer
,它不(也不能)支持着色器材质(但可以支持内置材质)。将其更改为
THREE.WebGLRenderer
。此外,使用没有灯光的phong材质也没有意义,因为结果将是全黑的。线框电话听起来也不是很有用。

添加灯光和雾:

var shaderMaterial = new THREE.ShaderMaterial({
    uniforms: uniforms,
    vertexShader: phongShader.vertexShader,
    fragmentShader: phongShader.fragmentShader,
    lights:true,
    fog: true
});

试试
THREE.ShaderLib['phong']
@gaitat-在不同的(更长的,可能效率更低的)符号中,这是同样的事情。啊!非常感谢。偏离航线!我真不敢相信我错过了。我更新了小提琴,现在可以用了。