Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

Другие советы

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

О.Дж., по сути, подвел итог действительно хорошему процессу обучения, я бы просто добавил, что нельзя недооценивать хорошие знания геометрической математики (как минимум векторы/матрицы) - но это не так сложно, как иногда думают люди.Изучение того, что такое скалярное произведение, перекрестное произведение, вектор нормали и умножение матрицы, является хорошим первым шагом :).Попытайтесь понять, что именно происходит между пространством Мир/Вид/Проекция-Клип/Экран, каково разделение перспективы и т. д.

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

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

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

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

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

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

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

Веселиться

Хотя уже было дано много хороших советов, если вам сложно обдумать необходимые шаги, Ментальная мельница предоставляет визуальный способ создания шейдеров (Artist Edition поставляется бесплатно с Fx Composer - сам по себе тоже бесплатен!).

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

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

САМС XNA на свободе от Чада Картера — отличная отправная точка для XNA, и перед началом работы требуется небольшое знание методов разработки игр или сложных математических вычислений.В нем есть две главы, посвященные базовым и продвинутым шейдерам.

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

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

Вам также следует взглянуть на RenderMonkey.Это хороший инструмент.Что касается книг, ознакомьтесь с «Рецептами программирования игр на XNA 2.0» от Римера Грутьянса...отличная книга.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top