有关Angel Shreiner书中解释的Phong着色WebGL公式的疑问

时间:2019-05-30 02:35:35

标签: webgl phong

在Angel Shreiner的《交互式计算机图形学》(Interactive Computer Graphics)一书的第8张幻灯片中(可提供幻灯片here),计算照明的建议代码如下:

...
  const difference = this.getYearDifference(year);
  price = price - ((difference * 3) * price) / 100;
  console.log(price);
  return price;
}

但是,除非我在 vec3 pos = -(modelViewMatrix*vPosition).xyz; vec3 L = normalize( lightPosition.xyz - pos ); vec3 E = normalize( -pos ); vec3 N = normalize(modelViewMatrix*vNormal.xyz); vec3 H = normalize( L + E ); 声明中删除减号,否则这种方式不仅看起来不正确,而且即使我这样做,照明也过于依赖于观看者的位置(某些部分是黑暗的,如果观众移到那里。如果我在声明pos中仅使用模型矩阵切换modelViewMatrix,它看起来就像是一个超级按钮。这是本书代码中的错误吗?这是什么数学原因?我很想真正了解阴影的工作原理,但本书并不总是很清楚。我想说观众应该对照明的计算方式产生影响,但不影响建议代码中照明的不现实方式。

0 个答案:

没有答案