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 回答