Проверка, прошел ли float3 границу

У меня есть следующий код:

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

Тем не менее, я думаю, что это должно быть возможно оптимизировать. Я думаю, что использование min и max вернет меня назад, есть ли такое решение, как зажим, которое позволит мне проверить, пройдены ли границы?

Например; было бы

зажим (voxelCoord, float3(0), float3(1))!= voxelCoord

Работа?

1 ответ

Решение

Любой (voxelCoord < 0 || voxelCoord > 1)

Он более лаконичен и содержит до 2 инструкций D3D-IL меньше, чем то, что вы написали. Будет ли он более оптимальным после того, как компилятор драйвера попытался их оптимизировать, будет зависеть от других факторов (будет ли аппаратное обеспечение векторным или скалярным для одного).

Другие вопросы по тегам