Мне известно, что большинство современных графических процессоров, хотя и рассчитаны на использование чисел с плавающей запятой, в наши дни более или менее эквивалентны по целочисленной производительности, за исключением нескольких предостережений, таких как отсутствие плавного умножения. Я не уверен, как это относится к операциям смены все же. Я делаю Marching Cubes на GPU, сначала выписываю 32-битную упакованную позицию для каждого поверхностного куба, затем распаковываю их в последующем проходе к реальным вершинам в этом кубе, например так:
ivec3 unpackedPos = ivec3( packedPos >> 20 & 0x3FF,
packedPos >> 10 & 0x3FF,
packedPos & 0x3FF);
Мне просто пришло в голову подумать, есть ли в шейдерных устройствах бочкообразные переключатели в эти дни? Я делаю 2 смены здесь или 30?
РЕДАКТИРОВАТЬ >> Я идиот ... Спасибо за ответы, ребята, полезно знать, но я все об этом ошибался. Я должен просто использовать формат текстуры RGB10_A2UI, а затем упаковывать / распаковывать с помощью одной инструкции загрузки / сохранения изображения, а не возиться с битыми сдвигами самостоятельно.
RE_EDIT >> Или нет ... Этот метод, по-видимому, работает с красными прямоугольниками, но не с зелеными, поэтому он возвращается к сдвигам в битах.
источник
Ответы:
Да (с 50% пропускной способности FMA 32b на nVIDIA Maxwell).
См. Https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#arithmetic-instructions
источник