检查float3是否通过了边界

时间:2013-06-18 13:14:19

标签: shader hlsl cg

我有以下代码:

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

但是,我认为应该可以对此进行优化。我认为使用min和max会让我回头,是否有像clamp这样的解决方案让我检查边界是否通过?

例如;会

  

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

工作?

1 个答案:

答案 0 :(得分:1)

任何(voxelCoord&lt; 0 || voxelCoord&gt; 1)

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