【发布时间】:2019-02-10 02:06:09
【问题描述】:
我想使用自定义着色器将纹理渲染到平面。这个纹理有一个“偏移”属性集,当我使用标准的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);
?也许那会奏效。但显然这会引发错误。
更新: 所以我将纹理偏移作为制服发送,并且有效。不知道为什么我没有想到。
【问题讨论】:
-
是的。我在问题的标题中写了“threejs”。
标签: three.js shader uv-mapping