Threejs便携式孔自定义着色器不起作用

时间:2020-10-12 04:48:02

标签: three.js glsl

我试图通过修改现有的着色器在Three.js中创建一个可移植的孔,以便可以在任何材质中创建孔。我的计划是使用要在其中打孔的网格物体中的新材料设置特殊的孔几何形状。我将代码附加到顶点着色器的末尾,该顶点着色器位于顶点的深度(如果不是)在洞口。我试图使它说出它们的深度就是它们在嘴里时的深度,方法是将其中一个坐标设置为0(就好像在嘴里一样),然后重新计算结束坐标并替换深度。我不想使用模具,因为它们需要不同的场景。

基本上,以下代码被附加到顶点着色器的末尾。坐标之一等于0的顶点在孔口处,因此其深度正确。我相信它的y坐标是嘴在0处,但是我不确定,所以我只是检查了它们中的任何一个是否等于0。其他顶点我将输入位置的坐标之一设置为0,并且然后重新计算所有内容,然后仅更改gl_Position上的z位置,它将不起作用。我不明白为什么,这里可能出什么问题了?我知道它是有效的,因为此代码使它可以通过墙壁看到,因为它的深度恰好在相机的前面,但是当我将gl_Position.z设置为realPos.z时,它将不起作用。我尝试将每个坐标设置为0,但没有任何效果。

if(transformed.y!=0.0&&transformed.x!=0.0&&transformed.z!=0.0){
  vec4 mvPosition = modelViewMatrix * vec4( transformed.x, 0.0, transformed.z, 1.0 );
  vec4 realPos = projectionMatrix * mvPosition;
  gl_Position.z = 0.0;
}

0 个答案:

没有答案
相关问题