我有以下代码:
(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指令。在驱动程序编译器尝试优化它们之后,它是否更加优化将取决于其他因素(硬件是基于矢量的还是基于标量的)。