У меня есть карта смещения на плоскости 512px * 512px (100x100 сегментов), так как изображение для прокрутки карты смещения оставляет привязку вершин к положению высоты, не смешиваясь плавно, я смотрел на функцию mix() и smooth-step(), чтобы преобразовать нормали к их положениям с течением времени, но я с трудом реализую его.
uniform sampler2D heightText; //texture greyscale 512x512
uniform float displace;
uniform float time;
uniform float speed;
varying vec2 vUV;
varying float scaleDisplace;
void main() {
vUV = uv;
vec2 uvOffset = vUV + vec2( 0.1, 0.1)* time; // animates offset
vec2 uvCo = vUV + vec2( 0.0, 0.0);
vec2 texSize = vec2(-0.8, 0.8); // scales image larger
vec4 data = texture2D( heightText, uvOffset + fract(uvCo)*texSize.x);
scaleDisplace = data.r;
//vec3 possy = normal * displace * scaleDisplace;
vec3 morphPossy = mix( position, normal *displace , scaleDisplace)* time ;
gl_Position = projectionMatrix * modelViewMatrix * vec4(morphPossy, 1.0 );
}
Использование Three.js 71 с вершиной и пикселем:
Цель иллюстрации:
Любая помощь ценится...