2008-09-24 8 views
7

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

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

ответ

6

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

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

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

Вероятно, рендеринг на экране не то, что вам нужно. Теперь у вас есть достаточная гибкость в HLSL, поскольку вы делаете свою математику. Однако получить результаты от CPU не так, как была разработана система. Для меня это становится нечетким, но Shawn Hargreaves (разработчик XNA) заявляет на more, чем one occasion, что получение выходных данных из графического процессора (кроме отображаемого на экране) является нетривиальным и имеет последствия для производительности. Получение данных включает вызов GetData, который будет cause a pipeline stall.

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

2

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

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