テクスチャをタイルするフラグメントシェーダを作成しました(実際はテクスチャ配列です)。しかし、私はそれぞれのタイルの周りに非常に醜い1ピクセルの境界線を取得します。私はこれが機能の不連続によって引き起こされ、ミップマップ中に変なものが発生することがあることを知っていますが、ミップマップは無効になっています(アンチエイリアスを使用していますが)。ここに私のコードは次のとおりです。ミップマッピングが無効のときにタイル境界線を取り除く方法
vec2 tiledCoords = fract(pass_textureCoords * 256.0)/4.0; // pass_textureCoords are the texture coordinates
out_Color = texture(testArray, vec3(tiledCoords.x, tiledCoords.y, 0)); // testArray is the sampler2DArray
私は丸め誤差の許容のビットを与える必要があるだろうと思ったが、私はそれをどこに置くかを見つけ出すように見えることはできません。 どうやってこれらの醜い罫線を取り除くことができますか?ありがとうございます!ここで
テクスチャパラメータはどのように設定されていますか?ラップモードとフィルターについて。 – pleluron
@pleluronラップモードまたはフィルタはありません。私はテクスチャを 'glTexSubImage3D'(その配列から)を使って定期的にロードし、レンダリングの前に単にテクスチャをバインドしました。 –
また 'GL_CLAMP_TO_EDGE'を使用していますか?そうでない場合(あなたのコメントが示唆するように)テクスチャ座標「0.0」と「1.0」はテクスチャの外にあり、あなたは黒い境界に当たっています。テクスチャを1つシフトする必要があります。テクスチャが '256x256'の場合、座標は '<0.0 , 1.0>'の代わりに' <1/256,255/256>の間隔で指定する必要があります。 – Spektre