0
我正在研究webgl中的一個簡單的phong着色器,並且我認爲我越來越接近但仍有錯誤。死亡放棄:如果我有一個廣告牌並且它有滾動(所以它像輪子一樣旋轉),廣告牌亮起來的部分旋轉着它:(這讓我感到困惑,因爲它似乎是模型的問題矩陣,但是變換使得所有位置的旋轉都是正確的,只是照明不正確。與視圖矩陣同樣,我可以四處移動,並且可以自由地看,並且所有東西都位於其正確的位置,只是錯誤地點亮。我的着色器(減去空間的定義,並在模型矩陣照明搬進GPU爲清楚起見){如果你喜歡閱讀github上:https://github.com/nickgeorge/quantum/blob/master/index.html#L41}WebGl Phong着色器中的Bug
<script id="fragment-shader" type="x-shader/x-fragment">
void main(void) {
vec3 lightWeighting;
if (!uUseLighting) {
lightWeighting = vec3(1.0, 1.0, 1.0);
} else {
vec3 lightDirection = normalize(vLightPosition.xyz - vPosition.xyz);
float directionalLightWeighting = max(0.0, dot(
normalize(vTransformedNormal),
lightDirection));
lightWeighting = uAmbientColor + uPointLightingColor * directionalLightWeighting;
}
vec4 fragmentColor;
if (uUseTexture) {
fragmentColor = texture2D(uSampler,
vec2(vTextureCoord.s, vTextureCoord.t));
} else {
fragmentColor = uColor;
}
gl_FragColor = vec4(fragmentColor.rgb * lightWeighting, fragmentColor.a);
}
</script>
<script id="vertex-shader" type="x-shader/x-vertex">
void main(void) {
vPosition = uModelMatrix * vec4(aVertexPosition, 1.0);
// TODO: Move back to CPU
vLightPosition = uModelMatrix * vec4(uPointLightingLocation, 1.0);
gl_Position = uPerspectiveMatrix * uViewMatrix * vPosition;
vTextureCoord = aTextureCoord;
vTransformedNormal = normalize(uNormalMatrix * aVertexNormal);
}
</script>
謝謝很多,並讓我知道是否有其他任何有用的補充。