ThreeJS将uv坐标传递给RawShaderMaterial?

时间:2014-12-02 00:08:30

标签: three.js shader uv-mapping

我试图从头开始创建一个带有纹理贴图的着色器。看看其他材料(着色器)及其来源,似乎他们都有一个" uv"属性传递给他们。我很难弄清楚uv属性的生成和分配位置。它是在几何,材料还是两者上设置的?

我使用默认的THREE.Geometry对象,例如THREE.SphereGeometry。我假设那些已经设置了属性,但是当我将他们的网格视为场景孩子时,我没有看到他们设置任何属性键/值。

这是由ShaderMaterial或其他:

生成的着色器的示例

顶点着色器

attribute vec2 uv;
varying vec2 vUv;

void main()  {
    vUv = uv;

片段着色器

varying vec2 vUv;
uniform sampler2D map;

void main()  {
    vec4 texel = texture2D( map, vUv );

然而,当我尝试上述操作时,我的着色器(使用RawShaderMaterial)只是空白,我得到了一个"无法编译。"

在THREE中是否有一些魔法可以在着色器,对象和属性之间建立关系?

我发现了一个THREE.js generate UV coordinate问题,但我再次猜测三个默认对象是否已正确设置了UV属性?

我特别想在这种情况下使用RawShaderMaterial。有人能指出我在THREE源中为对象生成UV /传递到着色器的位置,或者告诉我如何在运行时正确设置要在片段/顶点中使用的UV?

0 个答案:

没有答案
相关问题