私はopenGLの学習を始めたばかりで、ミップマップで球体をテクスチャリングするときにこのアーティファクトを取得しています。基本的に、フラグメントがテクスチャのエッジをサンプリングするときに、不連続性(たとえば1から0まで)を検出し、最小のミップマップを選択して、この醜いシームを作成します。
醜い縫い目http://cdn.imghack.se/images/6bbe0ad0173cac003cd5dddc94bd43c7.png
だから私はtextureGradを使用してグラデーションを手動でオーバーライドしようとしました:
//fragVert is the original vertex from the vertex shader
vec2 ll = vec2((atan(fragVert.y, fragVert.x) / 3.1415926 + 1.0) * 0.5, (asin(fragVert.z) / 3.1415926 + 0.5));
vec2 ll2 = ll;
if (ll.x < 0.01 || ll.x > 0.99)
ll2.x = .5;
vec4 surfaceColor = textureGrad(material.tex, ll, dFdx(ll2), dFdy(ll2));
今、私は1つではなく2つの縫い目を取得します。どうすればそれらを取り除くことができますか?そして、なぜ上記のコードは2つの継ぎ目を生成するのですか?
2 Eams http://cdn.imghack.se/images/44a38ef13cc2cdd801967c9223fdd2d3.png
2つの画像からは区別できませんが、2つのシームは元のシームの両側にあります。