检查float3是否通过边界



我有以下代码:

(voxelCoord.x < 0 ||  
voxelCoord.y < 0 || voxelCoord.z < 0 || voxelCoord.x > 1 
|| voxelCoord.y > 1 || voxelCoord.z > 1)

然而,我认为应该有可能对其进行优化。我认为使用最小值和最大值会让我倒退,是否有像clamp这样的解决方案可以让我检查边界是否通过?

例如

;将

clamp(voxelCoord, float3(0), float3(1)) != voxelCoord

工作吗?

any(voxelCoord <0 || voxelCoord> 1)

比你写的更简洁,编译成2个D3D-IL指令。在驱动程序编译器尝试优化它们之后,它是否更加优化将取决于其他因素(硬件是基于矢量的还是基于标量的)。

相关内容

  • 没有找到相关文章

最新更新