我正在尝试将3D纹理映射到体素地形,纹理中的像素颜色应该与地形几何对齐,我不想要任何渐变。
它有点工作,但根据相机角度,我可以看到人工制品,我想知道是什么导致了这个以及如何解决它。
是什么出血?我已经尝试改变我的纹理,如下所述: ogr3d tilemap但没有成功。我认为这不是一个mipmapping错误,因为我将其关闭,如果我打开它看起来更糟糕。
几何图形是网格对齐的。 我将min和mag过滤设置为最近并包裹到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);