Программирование GPU на Xbox 360 - PullRequest
7 голосов
/ 24 сентября 2008

Я ищу некоторое представление о XNA на Xbox 360, главным образом, если возможно, чтобы на его графическом процессоре можно было использовать векторную математику с плавающей точкой?

Если есть способ, можете ли вы указать мне правильное направление?

Ответы [ 2 ]

6 голосов
/ 24 сентября 2008

Я не претендую на то, чтобы быть экспертом в этом, но, надеюсь, это может указать вам полезное направление.

Возможно ли это? Да. Вы, наверное, уже знаете, что GPU хорош в таких вычислениях (отсюда и вопрос), и вы действительно можете управлять GPU с помощью XNA. Будет ли это соответствовать вашим потребностям - это другой вопрос.

Чтобы использовать графический процессор, вы, вероятно, захотите писать шейдеры с использованием HLSL. В контексте XNA есть приличное введение в HLSL на Reimers , через которое вы, возможно, захотите пройти. Примечательно, что это руководство фокусируется на том, чтобы заставить GPU выполнять графические вычисления, но то, что вы пишете в шейдерах, остается за вами. Если ваша векторная математика с плавающей точкой предназначена для рендеринга (и, следовательно, может оставаться в домене GPU), вам повезло, и вы можете остановиться здесь.

Скорее всего, рендеринг на экране - это не то, что вам нужно. Теперь у вас есть достаточная гибкость в HLSL, что касается вашей математики. Однако передача результатов в ЦП - это не то, как система была спроектирована. Это становится неясным для меня, но Шон Харгривз (разработчик XNA) заявляет на больше , чем один раз , что получение вывода из графического процессора (кроме визуализированного на экране) нетривиально и имеет последствия для производительности. Извлечение данных включает в себя вызов GetData, который вызовет остановку конвейера .

Так что это может быть сделано. Платформа XNA позволит вам писать шейдеры для 360 (которая поддерживает Shader Model 3.0 плюс несколько расширений), и возможно , чтобы получить эти результаты, хотя это может быть недостаточно эффективно для ваших нужд.

2 голосов
/ 27 сентября 2008

Как было сказано выше - XBox360 полностью способен на любые вычисления HLSL и, в частности, он может обрабатывать инструкции вершинного и пиксельного шейдера модели 3 и имеет расширенный набор инструкций, специфичных для платформы.

Поскольку HLSL на самом деле основан на векторах, у вас есть все необходимые инструменты - точечные, перекрестные, векторные операции и матричные вычисления. Если вы хотите отправить вычисления в графический процессор и отредактировать / использовать результаты на процессоре, вы можете записать их в текстуру, а затем извлечь их на стороне процессора и декодировать - используя их для частиц или физических взаимодействий (таких как вода), мало случаи, когда вы можете захотеть это сделать.

...