Three.js 是什么造成了这些文物?

Three.js 是什么造成了这些文物?,three.js,webgl,Three.js,Webgl,我正在尝试将3D纹理映射到体素地形,纹理中的像素颜色应该与地形几何体对齐,我不需要任何渐变 这是一种工作,但取决于相机的角度,我可以看到人工制品,我想知道是什么原因,以及如何修复它 是出血吗?我已尝试按此处所述更改纹理: 但是没有成功 我认为这不是一个mipmapping错误,因为我关闭了它,如果我打开它,它看起来更糟 几何图形与栅格对齐。 我将“最小”和“最大”过滤设置为“最近”,将“包裹”设置为“clampToEdge” 片段: vec2 computeSliceOffset(float s

我正在尝试将3D纹理映射到体素地形,纹理中的像素颜色应该与地形几何体对齐,我不需要任何渐变

这是一种工作,但取决于相机的角度,我可以看到人工制品,我想知道是什么原因,以及如何修复它

是出血吗?我已尝试按此处所述更改纹理: 但是没有成功

我认为这不是一个mipmapping错误,因为我关闭了它,如果我打开它,它看起来更糟

几何图形与栅格对齐。 我将“最小”和“最大”过滤设置为“最近”,将“包裹”设置为“clampToEdge”

片段:

vec2 computeSliceOffset(float slice, float slicesPerRow, vec2 sliceSize) {
  return sliceSize * vec2(mod(slice, slicesPerRow), floor(slice / slicesPerRow));   
}

vec4 sampleAs3DTexture(sampler2D tex, vec3 texCoord, float size, float numRows, float slicesPerRow) {    
  float slice   = texCoord.z * size;                                                
  float sliceZ  = floor(slice);                                                     
  float zOffset = fract(slice);                                                     

  vec2 sliceSize = vec2(1.0 / slicesPerRow, 1.0 / numRows);
  vec2 sliceOffset = computeSliceOffset(sliceZ, slicesPerRow, sliceSize);
  vec2 uv = texCoord.xy * sliceSize;                                           
  vec4 sliceColor = texture2D(tex, sliceOffset + uv);                               
  return sliceColor;                                                                
}

vec3 texCoord = mod(worldPosition.xyz,128.0)/128.0;                                 
vec4 myColor = sampleAs3DTexture(texture_0,texCoord,64.0,8.0,8.0);

您使用的是体素引擎吗?在我看来,它是由环境光遮挡计算引起的。WebGL中不存在3d纹理。相反,它们必须进行模拟,因此显示代码会对您有所帮助,因为我们无法看到您是如何模拟3D的textures@WaclawJasper我肯定它不是AO,因为我还有其他着色器,它在那里工作。@gman,我看了你关于webgl性能的演讲,这就是我的想法来源,但我想我遗漏了一些东西,因为闪烁。@coffeecup这个问题很可能是由照明计算中的某些东西引起的。尝试将
myColor
设置为纯色,然后查看问题是否仍然存在。是否使用体素引擎?在我看来,它是由环境光遮挡计算引起的。WebGL中不存在3d纹理。相反,它们必须进行模拟,因此显示代码会对您有所帮助,因为我们无法看到您是如何模拟3D的textures@WaclawJasper我肯定它不是AO,因为我还有其他着色器,它在那里工作。@gman,我看了你关于webgl性能的演讲,这就是我的想法来源,但我想我遗漏了一些东西,因为闪烁。@coffeecup这个问题很可能是由照明计算中的某些东西引起的。尝试将myColor设置为纯色,看看问题是否依然存在。