lt bits to store into dst_buf var result: u32 = 0u; // Storing snorm8 texel values // later called by pack4x8xnorm to convert to u32. var v: vec4; // dstBuf value is used for starting part. var mask: u32 = 0xffffffffu; if (!readDstBufAtStart) { // coordS is used mask &= 0xffff0000u; let texel0 = textureLoadGeneral(src_tex, coordS, params.mipLevel).rg; v[0] = texel0.r; v[1] = texel0.g; } if (coordE.x < srcBoundary.x) { // coordE is used mask &= 0x0000ffffu; let texel1 = textureLoadGeneral(src_tex, coordE, params.mipLevel).rg; v[2] = texel1.r; v[3] = texel1.g; } if (readDstBufAtStart || readDstBufAtEnd) { let original: u32 = dst_buf[dstOffset]; result = (original & mask) | (encodeVectorInU32General(v) & ~mask); } else { result = encodeVectorInU32General(v); }