這是新的 Vertex Shader:
void main() {
// 創造一個可修改的區域變數
vec3 newPosition = position;
// 將位置設定在一個球心在原點的球表面上
newPosition.z = sqrt(uSphereRadius2 - newPosition.x * newPosition.x - newPosition.y * newPosition.y);
// 設定法向量為相同(結果之後會被正規化)
vec3 newNormal = newPosition;
// 平移表面讓中心保持在視野範圍內
newPosition.z -= sqrt(uSphereRadius2);
gl_Position = projectionMatrix * modelViewMatrix * vec4( newPosition, 1.0 );
vNormal = normalize( normalMatrix * newNormal );
vec4 mvPosition = modelViewMatrix * vec4( newPosition, 1.0 );
vViewPosition = -mvPosition.xyz;
}