标签: shadermaterial

Three.js ShaderMaterial照明无法正常工作

我正在尝试使用Three.js ShaderMaterial并尝试实现照明.我有r70的工作代码,但相同的代码(稍作修改 - MAX_POINT_LIGHTS常量已重命名为NUM_POINT_LIGHTS)对r76不起作用.

查看WebGL Inspector中的跟踪,很明显没有光数据被发送到着色器.那么,灯光坏了还是我需要设置其他东西才能让它工作?

使用r70(工作)

http://codepen.io/anon/pen/KzjXNr?editors=1010

片段着色器

uniform vec3 diffuse;
varying vec3 vPos;
varying vec3 vNormal;
uniform vec3 pointLightColor[MAX_POINT_LIGHTS];
uniform vec3 pointLightPosition[MAX_POINT_LIGHTS];
uniform float pointLightDistance[MAX_POINT_LIGHTS];

void main() {
  vec4 addedLights = vec4(0.1, 0.1, 0.1, 1.0);
  for(int l = 0; l < MAX_POINT_LIGHTS; l++) {
    vec3 lightDirection = normalize(vPos - pointLightPosition[l]);
    addedLights.rgb += clamp(dot(-lightDirection, vNormal), 0.0, 1.0) * pointLightColor[l];
  }
  gl_FragColor = addedLights;
}
Run Code Online (Sandbox Code Playgroud)

JavaScript - 使用UniformsUtils和UniformsLib设置Shadermaterial

var uniforms = THREE.UniformsUtils.merge([
    THREE.UniformsLib['lights'],
    { diffuse: { type: 'c', value: new …
Run Code Online (Sandbox Code Playgroud)

lighting three.js shadermaterial

4
推荐指数
1
解决办法
2097
查看次数

标签 统计

lighting ×1

shadermaterial ×1

three.js ×1