1

最近、babylon.js を使用したシェーダー プログラミングに手を出し始めました。テクスチャの繰り返しをサポートするフラグメント シェーダーを作成しようとしています。リンクからわかるように、私はそれを行うためにかなり簡単な方法を使用しました。

http://www.babylonjs.com/cyos/#CARU2#1

vec2 xy = vUV;
vec2 phase = fract(xy / vec2(1.0/vScale,1.0/vScale));
vec3 color = texture2D(textureSampler, phase).rgb;

問題は、次の図に示すように、繰り返しテクスチャの継ぎ目に奇妙なピクセル化効果が生じることです。

私の問題

どうすればこれを修正できますか? 標準マテリアルを使用してもこの問題は発生しないため、フラグメント シェーダに何か問題があるに違いありません。

誰かが助けてくれたら、私は永遠に感謝します.

4

1 に答える 1

0

うわー、私はばかです、私は本当に愚かで非効率的な方法で画像をスケーリングしていました. 私は実際に何を理解しているとは思わない:

vec2 phase = fract(xy / vec2(1.0/vScale,1.0/vScale));

をしていました。私はまだ 100% ではありませんが、論理的な方法は単純に uv ベクトルに反復係数を掛けることです。

vec2 phase = vec2(xy.x*vScale,xy.y*vScale);

ここで結果を見ることができます:

http://www.babylonjs.com/cyos/#CARU2#2

于 2016-05-09T12:54:55.630 に答える