我对 webgl 中的球体贴图纹理有一些问题。
我的质地:
球体是一个单位球体 (r = 1),由经度和纬度定义。
但是我得到一些人工制品,如果我在 x 方向 -2.5 上平移球体(不旋转相机):
此图像没有 mipmapping。下图是 mipmapping:
顶点和法线似乎没问题。
顶点着色器:
precision highp float;
uniform mat4 mvMatrix; // Matrix zum Transformieren des Verex vom model-space in den view-space
uniform mat4 mvpMatrix; // Matrix zum Transformieren des Vertex vom model-space in den clip-space
uniform mat3 mvNMatrix; // Matrix zum Transformieren der Vertex-Normale vom model-space in den view-space
attribute vec4 mV; // Vertex im model-space
attribute vec3 mVN; // Vertex-Normale im model-space
varying vec2 vN;
void main(void)
{
vec3 e = normalize( vec3( mvMatrix * mV ) );
vec3 n = normalize( mvNMatrix * mVN );
vec3 r = reflect( e, n );
//float d = dot(n, e);
//vec3 r = e - 2.0 * d * n;
float m = 2.0 * sqrt(
pow( r.x, 2.0 ) +
pow( r.y, 2.0 ) +
pow( r.z + 1.0, 2.0 )
);
vN.s = r.x / m + 0.5;
vN.t = r.y / m + 0.5;
gl_Position = mvpMatrix * mV;
}
和片段着色器:
precision highp float;
uniform sampler2D uSampler;
varying vec2 vN;
void main(void)
{
vec3 base = texture2D( uSampler, vN ).rgb;
gl_FragColor = vec4( base, 1.0 );
}
有谁知道,为什么我得到这些文物?我正在使用 Windows 和 Firefox。