我有一个 GLSL 片段着色器作为渲染混合在一起的两个 3D 体积切片的管道的一部分。对于其中一个体积,我想使用最近邻插值,因为它是一个“分割掩码”(即在每个体素处指示,另一个图像中的体素属于哪个结构,例如背景为 0,目标结构为 1;请参阅下图中的紫色叠加层),因为默认的三线性插值会在边界处产生不希望的伪影(下图中边界处的绿线)
我将如何修改下面的片段着色器代码以在分段掩码 ( vol2
) 上使用最近邻插值?
uniform sampler3D vol1;
uniform sampler3D vol2;
uniform sampler2D lut1;
uniform sampler2D lut2;
uniform float maskAlpha = 0.5;
void main()
{
float data1 = texture3D(vol1, gl_TexCoord[0].xyz).r;
float data2 = texture3D(vol2, gl_TexCoord[0].xyz).r;
vec4 col1 = texture2D(lut1, vec2(data1));
vec4 col2 = texture2D(lut2, vec2(data2));
gl_FragColor = col1 + col2 * maskAlpha;
}