вторник, 5 января 2010 г.

Compute Shader Application

Сегодня вдруг в голове сложилась картина, что CS + R/W buffers можно использовать для очень многих вещей, помимо A-buffer или DOF/фильтрации:

1) Тесселяция (Fermi?), примеры есть в SDK.
2) Т. н. Blend Shaders.
3) Silhouette generation (в обход GS).
4) LIDR - можно использовать битовые операции для хранения индексов источников света.
5) Deferred Shading вообще, похоже в этой области намечаются большие перемены.

Также несколько слов о противостоянии DirectCompute/CUDA/OpenCL.

Я несколько раз натыкался на статьи, где рассказывается, как применять DirectCompute для GPGPU. Лично я считаю, что Microsoft изначально планировала DirectCompute как узкий инструмент исключительно для графических вычислений (там, где связка VS/PS неээфективна), и использовать его в составе DirectX 11 (Vista/7) для GPGPU по крайней мере странно.
  
OpenCL vs CUDA. Неочевидно, что организации,, занимающиеся GPGPU, нуждаются остро в переносимости своих программ на железо другого производителя. Т. е., скажем, просто покупается кластер NVIDIA Tesla, и под него затачивается CUDA-программа, служащая целям организации. Где тут OpenCL - непонятно. Даже если нужна переносимость, то с развитием GPGPU перспективы OpenCL программ через 5-10 лет весьма туманны. Или вот выйдёт скоро Fermi. Под него - новая CUDA, учитывающая все тонкости железа. Логично, что скорее всего и использоваться будет именно она.

2 комментария:

  1. С OpenCL будет та же фигня, что с OpenGL. Будет миллион расширений от конкретных производителей, которые будут устаканиваться в новых версиях стандарта с опозданием в несколько лет :(

    А через 5-10 лет все придет к полной программируемости: С++ и какие-нибудь интринсики для fixed function. Fermi осталось до этого полшага и то больше в окружении, чем в самой железке

    ОтветитьУдалить
  2. Я больше верю не в Fermi, а в Fusion. Или Cell.

    ОтветитьУдалить