Javascript 添加着色器的问题

Javascript 添加着色器的问题,javascript,three.js,shader,Javascript,Three.js,Shader,我写了一个着色器,想在codepen上测试它。现在我在控制台中没有错误,但它仍然不工作。我做错了什么 这是我的顶点着色器 <script id="vertexShader" type="shader"> void main() { vUv = (uModel * vec3(position.xy, 1.)).xy; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }

我写了一个着色器,想在codepen上测试它。现在我在控制台中没有错误,但它仍然不工作。我做错了什么

这是我的顶点着色器

<script id="vertexShader" type="shader">

void main() {
  vUv = (uModel * vec3(position.xy, 1.)).xy;
    gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
} 

void main(){
vUv=(uModel*vec3(position.xy,1.)).xy;
gl_位置=projectionMatrix*modelViewMatrix*vec4(位置,1.0);
} 
和片段着色器

<script id="fragmentShader" type="shader">
uniform vec2 uResolution;
uniform sampler2D uTexture1;
varying vec2 vUv;
  uniform mat3 uModel;
  varying vec2 vUv;

void main() {
    vec2 position = gl_FragCoord.xy / uResolution;

    float ratio = 0.3;
    float progress = .3;

    float layer1L = abs(step(.3, position.x) - 1.);
    float layer1R = step(.7, position.x);
    float layer2L = abs(step(.1, position.x) - 1.);
    float layer2R = step(.9, position.x);
    float layer3L = abs(step(.06, position.x) - 1.);
    float layer3R = step(.94, position.x);
    float layer4L = abs(step(.02, position.x) - 1.);
    float layer4R = step(.98, position.x);

    // texture A
    float dx1 = 0.;
    dx1 += layer1L * .5 * ratio;
    dx1 -= layer1R * .5 * ratio;
    dx1 += layer2L * .25 * ratio;
    dx1 -= layer2R * .25 * ratio;
    dx1 += layer3L * .1 * ratio;
    dx1 -= layer3R * .1 * ratio;
    dx1 += layer4L * .06 * ratio;
    dx1 -= layer4R * .06 * ratio;

    vec4 texA = texture2D(uTexture1, vec2(vUv.x + dx1, vUv.y));

    vec4 fcolor = texA;

    gl_FragColor = fcolor;
}
</script>

均匀vec2溶液;
均匀取样器2d-uTexture1;
可变vec2 vUv;
统一mat3模型;
可变vec2 vUv;
void main(){
vec2位置=gl_FragCoord.xy/uResolution;
浮动比率=0.3;
浮动进度=.3;
浮动层1l=abs(步骤(.3,位置x)-1);
浮动层1=步骤(.7,位置.x);
浮动层2L=abs(步骤(.1,位置x)-1);
浮动层2r=步骤(.9,位置.x);
浮动层3L=abs(步骤(.06,位置x)-1);
浮动层3=步骤(.94,位置.x);
浮动层4L=abs(步骤(.02,位置x)-1);
浮动层4R=步长(.98,位置.x);
//纹理A
浮点dx1=0。;
dx1+=第1l层*.5*比率;
dx1-=第1层*.5*比率;
dx1+=层2l*.25*比率;
dx1-=层2*.25*比率;
dx1+=层3l*.1*比率;
dx1-=第3层*.1*比率;
dx1+=层4L*.06*比率;
dx1-=层4R*.06*比率;
vec4 texA=texture2D(uTexture1,vec2(vUv.x+dx1,vUv.y));
vec4 fcolor=texA;
gl_FragColor=fcolor;
}

问题是您正在使用两种材质创建一个
网格

var mesh=new THREE.mesh(几何体、材料2、材料)

第三个参数
material
实际上什么都不做,因此不会显示在顶点和片段着色器中执行的所有操作。只需将
着色器材质
传递到网格构造函数中即可查看结果:


var mesh=new THREE.mesh(几何体、材质)

问题是您正在使用两种材质创建一个
网格

var mesh=new THREE.mesh(几何体、材料2、材料)

第三个参数
material
实际上什么都不做,因此不会显示在顶点和片段着色器中执行的所有操作。只需将
着色器材质
传递到网格构造函数中即可查看结果:


var mesh=new THREE.mesh(几何体、材质)

注释掉这行:
var material=new THREE.meshbasicmatary({map:tex,}),因此您将应用着色器材质。欢迎使用堆栈溢出。感谢您在问题中提供的信息。作为对未来问题的建议,请考虑创建一个使用。通过保留问题中的所有代码,可以防止在删除代码笔或URL更改时丢失上下文,因此您将应用着色器材质。欢迎使用堆栈溢出。感谢您在问题中提供的信息。作为对未来问题的建议,请考虑创建一个使用。通过保留问题中的所有代码,可以防止在删除代码笔或更改URL时丢失上下文。