Кодовое окно, демонстрирующее эту проблему, находится здесь: https://codepen.io/lilrooness/pen/QWjdjgP
Я рендерим шум для цели рендеринга, а затем использую эту цель рендеринга для текстурирования четырехугольника, который я рендерил в screen.
При использовании цели рендеринга в качестве текстуры, я затрудняюсь решить проблему с размером текстур.
Работает нормально, если я использую new THREE.MeshBasicMaterial({ map: renderTarget.texture })
но когда я использую свой собственный материал
var renderMaterial = new THREE.ShaderMaterial({
uniforms: {
tex: { type: 'sampler2D', value: renderTarget.texture }
},
fragmentShader: pixelateFragmentShader(),
vertexShader: standardVertexShader()
})
, я получаю очень маленькую текстуру, которая зажата
Это вершинный шейдер, который я использую для обоих рендеров:
varying lowp vec3 vUv;
void main() {
vUv = position;
vec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);
gl_Position = projectionMatrix * modelViewPosition;
}
это функция рендеринга (я использую одну и ту же камеру для рендеринга оба раза)
function animate() {
time += 0.1;
quad.material.uniforms.time.value = time;
requestAnimationFrame(animate);
renderer.setRenderTarget(renderTarget);
renderer.render(bufferScene, camera);
renderer.setRenderTarget(null);
renderer.render(scene, camera);
}
Опять же, это работает нормально, если я использую MeshBasicMaterial. Что я делаю не так?