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

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

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

9.08.2008 21:57:07
9 ОТВЕТОВ
РЕШЕНИЕ

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

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

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

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

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

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

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

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

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

31
10.08.2008 04:21:32
Спасибо за подробный ответ. Будьте уверены, как только я что-то запустлю и добавлю, я добавлю ссылку :) Хотя это может занять несколько месяцев.
Michael Stum♦ 28.11.2008 09:05:15

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

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

1
10.08.2008 00:45:01

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

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

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

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

5
14.08.2008 16:02:48

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

1
18.08.2008 10:34:11

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

1
28.08.2008 15:08:18

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

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

Веселиться

2
17.09.2008 19:03:08

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

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

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

2
27.10.2008 17:02:04

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

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

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

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

1
15.11.2008 01:46:28

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

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

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

3
9.12.2008 06:49:07
Это похоже на действительно интересную книгу. Да, я посмотрел как на ShaderX, так и на рекомендованные Gem Gem Gems, но они кажутся действительно хардкорными. Что-то вроде чтения Брюса Шнайера, когда он ничего не знает о криптографии. Я думаю, что закажу книгу Луны.
Michael Stum♦ 28.11.2008 09:04:42
Я на самом деле редактировал книгу, которую вы упомянули! :)
Rodrigo Lopez 6.04.2009 18:31:17