Three.js 高亮显示webgl中着色器代码中两个基本体对象之间的交点

Three.js 高亮显示webgl中着色器代码中两个基本体对象之间的交点,three.js,glsl,webgl,fragment-shader,vertex-shader,Three.js,Glsl,Webgl,Fragment Shader,Vertex Shader,我正在寻找一种直接从片段着色器代码中高亮显示两个基本体(更具体地说是两个圆柱体)相交的方法。 我使用THREE.js并添加了两个带有ShaderMaterial的网格,第二个网格我希望将第一个网格的位置和顶部半径(=底部半径)作为统一的网格,如果它们相交,则为相交区域添加不同的颜色。 还需要提到的是,我不想使用CSG。 我刚刚开始学习glsl和3d。谢谢 如何将对象或材质ID渲染到纹理并在其上运行一些边缘检测方法,类似于非真实照片级渲染(下面的一些链接) 渲染到纹理后,绘制一个全屏多边形,碎

我正在寻找一种直接从片段着色器代码中高亮显示两个基本体(更具体地说是两个圆柱体)相交的方法。
我使用THREE.js并添加了两个带有ShaderMaterial的网格,第二个网格我希望将第一个网格的位置和顶部半径(=底部半径)作为统一的网格,如果它们相交,则为相交区域添加不同的颜色。
还需要提到的是,我不想使用CSG。
我刚刚开始学习glsl和3d。谢谢

如何将对象或材质ID渲染到纹理并在其上运行一些边缘检测方法,类似于非真实照片级渲染(下面的一些链接)

渲染到纹理后,绘制一个全屏多边形,碎片着色器在其中读取纹理。除了片段位置的颜色外,还可以获取片段周围的值。如果周围像素中的任何颜色不同,则您知道片段靠近交叉点,并且可以根据自己的喜好为其着色。如果没有,则丢弃


看一看“不不,我不想使用CSG”的答案。事实上,我正试图这样做来摆脱它。老实说,这并不是你会使用片段着色器的。模具缓冲区是为这类事情创建的,直到最近,您还无法从片段着色器读取模具缓冲区(在WebGL中仍然无法读取)。