Подтвердить что ты не робот

Начало разработки шейдеров

Я хочу начать разработку некоторых игр с помощью Microsoft XNA. Частью этого является разработка шейдеров, но я понятия не имею, как начать работу. Я знаю, что nVidia FX Composer - отличный инструмент для разработки шейдеров, но я не нашел много полезного и обновленного контента о том, как начать работу.

Какие учебные пособия вы бы порекомендовали?

4b9b3361

Ответ 1

Разработка шейдеров в XNA (который, очевидно, использует DirectX) требует знания HLSL или сборки шейдеров. Я бы рекомендовал познакомиться с первым, прежде чем погрузиться в последнее.

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

Затем сделайте попытку написать свой собственный HLSL, который делает то, что использовал конвейер Fixed T & L, просто чтобы вы были грязными руками, Это эквивалент программы "hello world" в мире вершин/пиксельных шейдеров. Когда вы сможете это сделать, и вы понимаете, что вы написали, вы готовы пойти на более забавные вещи.

В качестве следующего шага вам может понадобиться симуляция основного sepcular lighting в одном из ваших шейдеров из одного источника света. Затем вы можете адаптировать эту дорожку к нескольким источникам света. Играйте с цветами и движением огней. Это также поможет ознакомиться с использованием шейдерных констант.

Когда у вас есть несколько базовых шейдеров вместе, вы должны попытаться сделать так, чтобы ваша игра/движок использовала несколько разных шейдеров на разных объектах. Начните добавлять некоторые другие биты, такие как основные bump или нормальные карты.

Когда вы доберетесь до этой стадии, мир - ваша устрица. Вы можете начать погружение в некоторые фанковые эффекты и даже рассмотреть возможность использования GPU для больше, чем первоначально предполагалось.

Для тех, кто немного продвинулся вперед, есть несколько хороших книг, которые доступны для бесплатного онлайн, где есть отличная информация от Nvidia здесь и здесь.

Не забывайте, что есть прекрасная серия книг под названием ShaderX, которая охватывает некоторые потрясающие шейдерные вещи. Там 1, 2, 3, 4, 5 и 6 уже в печати и 7 скоро.

Удачи. Если у вас появятся некоторые шейдеры, я бы с удовольствием их увидел:)

Ответ 2

Я просто хотел бы повторить, насколько велики книги GPU Gems - поистине фантастический ресурс для любой серьезной разработки графики.

OJ в основном подытожил действительно хороший процесс обучения, я бы просто добавил, что наличие хорошей основы в геометрической математике (как векторы/матрицы как минимум) нельзя недооценивать - но это не так сложно, как люди иногда разбираются, Изучение того, что представляет собой точечный продукт, кросс-продукт, нормальный векторный и матричный умножения, - это хороший первый шаг:). Попытайтесь точно понять, что происходит между пространством World/View/Projection-Clip/Screen, разделом перспективы и т.д.

Когда я начинал учиться, хорошим упражнением является фактически реализовать весь конвейер T & L в программном обеспечении, в комплекте с отсечением/отбраковкой и т.д. Это долгий процесс и может показаться нецелесообразным, поскольку я уверен, что вы хотите просто погрузитесь в забавные вещи, но правильное понимание того, что происходит, действительно полезно и окажется полезным, когда вы всегда сталкиваетесь с более коварными и трудными для диагностики ошибок.

Попытайтесь не быть в стороне с инструментами, такими как FX Composer, изначально они полезны для прототипирования, но наличие прочной основы в основах гораздо более полезно в долгосрочной перспективе.

Ответ 3

Один из лучших способов начать работу с шейдерами - прочитать "Введение в 3D-программирование игр" с DirectX 9.0c "Шейдерный подход" Фрэнка Луны. Сначала автор вводит DirectX и HLSL, а затем постепенно показывает силу шейдера. Он начинается с очень простых шейдеров, но к концу книги вы знаете, как создавать освещение, тени, системы частиц и т.д. Великая книга.

OJ предложил вам прочитать серию ShaderX, но материал не для новичков, так что это не поможет вам, когда вы делаете первые шаги.

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

Ответ 4

Я бы присоединился к похвалам, предоставленным OJ - действительно хороший ответ. Тем не менее, как только у вас есть основное понимание, вы можете многому научиться, загрузив один из следующих двух отличных инструментов:

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

Удачи

Ответ 5

В то время как много хороших советов уже было дано, если у вас тяжелая работа, чтобы вы могли подумать о шагах, Mental Mill обеспечивает визуальный способ построения Shaders (бесплатная версия Artist Edition поставляется вместе с Fx Composer).

В то время как вам лучше было бы долгосрочно изучать код HLSL напрямую, Mental Mill может генерировать эти Fx файлы для вас (чтобы вы могли заглянуть в изменения). Обратите внимание, как и все генераторы кода, это немного более подробный, чем вы, вероятно, будете делать, как только понимаете HLSL!

Визуальная прогрессия эффектов от одного метода к другому очень впечатляет!

Ответ 6

SAMS XNA Unleashed от Chad Carter - отличная отправная точка для XNA и предполагает мало знаний о практике разработки игр или жестких математических упражнениях, прежде чем вы начнете, Он имеет две главы по основным и расширенным шейдерам.

В качестве опоры, следите за учебниками по Google для WPF Shader, теперь он использует ту же технологию, что и клиентские шейдеры в приложениях WPF и учебниках, которые, как я полагаю, в значительной степени совместимы с XNA.

Ответ 7

Я не использовал XNA или DirectX. Но для того, чтобы узнать основы программирования шейдеров с помощью Cg, Cg Tutorial - лучшая книга, которую я нашел.

Ответ 8

Вы также должны посмотреть на RenderMonkey. Это хороший инструмент. Что касается книг, посетите XNA 2.0 Game Programming Recipes от Riemer Grootjans... отличная книга.

Ответ 9

Быстрая мысль о редакторах визуальных шейдеров. Эти редакторы очень забавны, но я бы действительно рекомендовал работать с текстовым HLSL (там работают как RM, так и FXC). Я работаю разработчиком игр и создаю несколько шейдерных систем (например, в Battlefield 2 и Farcry 2), и, честно говоря, обнаружил, что HLSL более ценен, чем любая графическая шейдерная сеть на сегодняшний день.

Есть такие вещи, как выполнение потока выполнения, отладка шейдера или возможность быстрой итерации тестовых примеров, которые дают вам представление, которое практически невозможно получить через визуальный инструмент.

Я сам использовал создатели визуальных шейдеров, и мне они нравятся, и однажды, когда затенение не так критично, как сегодня, они могут быть подходящим инструментом для работы.

.. хотя я предполагаю, что мы увидим отложенное освещение и, вероятно, полное программное обеспечение до этого дня;)