這是新的 Vertex Shader:
void main() {
// 創造一個可修改的區域變數
vec3 newPosition = position;
// 將位置設定在一個球心在原點的球表面上
newPosition.z = sqrt(uSphereRadius2 - newPosition.x * newPosition.x - newPosition.y * newPosition.y);
// 平移表面讓中心保持在視野範圍內,可以跟上一步合併
newPosition.z -= sqrt(uSphereRadius2);
gl_Position = projectionMatrix * modelViewMatrix * vec4( newPosition, 1.0 );
vNormal = normalize( normalMatrix * normal );
vec4 mvPosition = modelViewMatrix * vec4( newPosition, 1.0 );
vViewPosition = -mvPosition.xyz;
}