いくつかの条件によっては、画像をそのまま通過するか、タイルテクスチャを表示するシェーダを作成しようとしています。それは多かれ少なかれ作品が、私はタイル張りの質感はかなり右に見えるていないことに気づいたので、それが唯一のタイル画像を表示しますので、私はテストのためのシェーダを単純化:シェーダでの画質の低下(ぼやけ)
precision highp float;
uniform sampler2D uSampler;
varying vec2 vTextureCoord;
varying vec4 vColor;
varying vec2 vFilterCoord;
uniform vec2 dimensions;
uniform vec4 filterArea;
uniform sampler2D selector;
uniform vec2 selectorSize;
uniform sampler2D alternate;
uniform vec2 alternateSize;
vec2 mapCoord(vec2 coord)
{
coord *= filterArea.xy;
coord += filterArea.zw;
return coord;
}
vec2 unmapCoord(vec2 coord)
{
coord -= filterArea.zw;
coord /= filterArea.xy;
return coord;
}
void main()
{
vec2 coord = vTextureCoord;
coord = mapCoord(coord);
// sample the alternate:
vec2 av = mod(coord, alternateSize)/(alternateSize - 1.0);
vec4 alt = texture2D(alternate, av);
gl_FragColor = alt ;
}
私は何が起こっているのか、非常にわかりませんに。元の画像は100x100で、繰り返し領域は100x100です。パターンは同じように見えますが、シェーダでは少しぼやけています(下のスクリーンショットを参照)。これは網膜と関係がありますか? (私は網膜をセットアップするために何か特別なことをしていない)ミップマップ?他に何か?
UPDATE: @danieltranによって示唆されるように、私は(PIXIでは、これはテクスチャコンストラクタにPixi.SCALE_MODES.NEAREST
を通過させることによって行われる)GL_NEAREST
にテクスチャを設定しようとしました。それで、違いはありませんでしたので、私はちょうどテクスチャからスプライトを作成して表示しようとしましたが、同じ問題があるので、これは網膜に関連するものかpixi特有のものだと思います。
オリジナルテクスチャは、この画像から取得されます:それは解決します
ピクセル境界で描画していますか?ピクセルを1/2に描画すると、ピクセル間でサンプリングされます。 – gman
提案していただきありがとうございます。私はxとyの座標を0.5ピクセルずらして骨を付けずに試してみました:( –