나는 webgl의 간단한 퐁 쉐이더에서 작업하고 있는데, 나는 가까이 가고 있다고 생각하지만 여전히 잘못된 것이 있습니다. Dead give away : 빌보드를 가지고 바퀴가 돌기 때문에 광고판의 일부가 회전합니다. (모델에 문제가있는 것처럼 보이기 때문에 혼란 스럽습니다. 행렬을 만들었지 만 변환으로 인해 모든 위치가 정확하게 맞고 조명이 잘못되었습니다. 뷰 매트릭스가있는 Ditto는 주위를 돌아 다니며 자유롭게 볼 수 있으며 모든 것이 올바른 위치에 있으며 조명이 잘못되었습니다.WebGl의 버그 Phong 쉐이더
여기에 있습니다. 내 쉐이더 (마이너스 공간에 대한 정의, 모델 매트릭스의 조명은 명확성을 위해 GPU로 이동) {당신은 GitHub의 읽기 원하는 경우 : https://github.com/nickgeorge/quantum/blob/master/index.html#L41}
<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>
감사합니다 많은 것을 추가하고 유용한 정보가 있으면 알려주세요. 내가 모델 행렬 내 빛의 위치를 변형 한
: 정책이 근처에 자신의 질문에 대답하기위한이지만, 경우에 다른 사람이 같은 문제와이에 실수를 한단다 어떤