2013-05-15 41 views
2

我試圖從THREE.ShaderLib構建phong着色器。 這就是我得到的:從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 
}); 

它似乎沒有工作。我究竟做錯了什麼?

小提琴:http://jsfiddle.net/Jvf9k/2/ 相似,所以問題:Three js - Cloning a shader and changing uniform values

編輯:已更新塔皮奧答案的幫助下小提琴。它現在工作!

+0

嘗試'THREE.ShaderLib [ '蓬'];' – gaitat

+0

@gaitat - 這只是在不同的(較長的和潛在的低效率)的符號一樣的東西。 – Tapio

回答

2

您的JSFiddle使用的是THREE.CanvasRenderer,它不支持(也不能)支持着色器材質(但可以支持內置材質)。將其更改爲THREE.WebGLRenderer。另外,使用不帶燈的phong材料是沒有意義的,因爲結果是全黑的。帶線框的Phong聽起來也不是很有用。

+0

啊!謝謝!當然!我不能相信我錯過了這一點。我更新了小提琴,現在它工作。 – olov

0

添加燈和霧燈:

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