Я хочу визуализировать текстуру на плоскости с помощью пользовательских шейдеров. Эта текстура имеет свойство «смещение», которое работает правильно, когда я использую стандартный материал threejs. Однако я не могу понять, как получить доступ к этим смещениям в моем пользовательском шейдере фрагментов. Он просто отображает всю текстуру по всей плоскости:
шейдеры:
<script id="vertex_shader" type="x-shader/x-vertex">
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix *
modelViewMatrix *
vec4(position,1.0);
}
</script>
<script id="fragment_shader" type="x-shader/x-fragment">
uniform sampler2D texture1;
varying vec2 vUv;
void main()
{
gl_FragColor = texture2D(texture1, vUv);
}
</script>
если бы я мог как-то сказать что-нибудь вроде:
gl_FragColor = texture2D(texture1, vUv + texture1.offset);
? Может, это сработает. Но очевидно, что это вызывает ошибку.
ОБНОВЛЕНИЕ: поэтому я отправил смещение текстуры как униформу, и это сработало. Не знаю, почему я не подумал об этом.