По-видимому, я пропустил эти строки в руководстве по Cg:
The ?:, ||, &&, &, and comparison operators can
be used with bool vectors to perform multiple
conditional operations simultaneously.
Итак, я попробовал это, и похоже, что это работает:
Out.xyzw = ( A.xyzw <= threshold) ? B.xyzw : C.xyzw ;
Я думаю, я не ожидалсамое простое решение - просто работать!
Мой коллега, который является графическим программистом, также предположил, что на некоторых платформах компилятор Cg может быть достаточно умен, чтобы оптимизировать исходный код для меня, но это не гарантировано, и этовсегда лучше явно указывать параллельные операции SIMD, если это возможно.