Какие хорошие ресурсы для изучения HLSL? [закрыто]

28

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

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

Где я могу научиться не только писать HLSL, но и изучать методы написания шейдеров?

Брайан Ортис
источник

Ответы:

14

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

Шон Джеймс
источник
1
И я должен указать, что под «ссылкой API» я имею в виду раздел «Руководство по программированию».
Шон Джеймс
6

Если вы ищете «технику шейдера», а не просто ссылку на язык (читайте вопрос, люди), я рекомендую (от простого к продвинутому):

  • Раздел Shader образцов XNA (очевидно, требует использования XNA)
  • Серия уроков Петри Вильгельмсена, начинающаяся здесь (становится более продвинутой позже; также основана на XNA)
  • Nvidia FX Composer «S в комплекте образцов

И в основном либо: попробуй что-то и практикуйся, все в то же время понимая, как "профессионалы" делают вещи. Или выбирайте вещи, которые похожи на то, что вы пытаетесь достичь, и работайте оттуда.

Эндрю Рассел
источник
3

Cg технически не является HLSL, но синтаксически они практически идентичны.

Сказав это, это старая книга, но NVIDIA сделала « Учебник по компьютерной графике » бесплатным для чтения в Интернете. Он охватывает основы программируемого конвейера очень всеобъемлющим образом, и все это должно переводиться в HLSL с минимальными усилиями.

Neverender
источник
1
nVidia и Microsoft в соавторстве создали Cg / HLSL. Они дали ему разные названия из-за брендинга, но язык тот же. Теперь, возможно, есть небольшая разница, но она действительно минимальна.
Жакмо
Это феноменальная книга. По сути, все, что делал Килгард, было действительно хорошим с точки зрения учебников.
Бобобобо
3

Если вы хотите редактировать и видеть результаты в режиме реального времени, вы можете использовать этот простой инструмент Silverlight

http://shazzam-tool.com/
Shazamm 1.3 - редактор и предшественник шейдеров HSLS


Что касается учебников +1 для Riemers.net, но я также нашел эту серию учебников по XNA / HLSL еще лучше.

Вот список, вы найдете их все здесь: http://digitalerr0r.wordpress.com/tutorials/

  • 1 - Введение в HSLS, окружающий свет
  • 2 - рассеянный свет
  • 3 - Зеркальный свет
  • 4 - Нормальное отображение
  • 5 - Деформировать вершинный шейдер
  • 6 - Демонстрация шейдеров: простой пейзаж океана / острова
  • 7 - Toon Shading
  • 8 - Карта блеска
  • 9 - пост-процесс покачивания
  • 10 - Инвертировать пост-процесс
  • 11 - шейдер оттенков серого
  • 12 - пиксельный шейдер искажения
  • 13 - Альфа-картографирование
  • 14 - Буферы пропускания / глубины
  • 15 - Отображение динамической среды
  • 16 - преломление
  • 17 - точечный свет + самозатенение
  • 18 - Многоточечные светильники
  • 19 - Полусферическое окружающее освещение
  • 20 - глубина резкости
  • 21 - Переход: исчезать
  • 22 - Переход: Крест
  • 23 - размытие
  • 24 - Блум
  • 25 - Perlin Noise на GPU
  • 26 - Bump Mapping Perlin Noise
Ешь в Джо
источник
0

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

http://rbwhitaker.wikidot.com/hlsl-tutorials

Брайан Ортис
источник
0

Не уверен, на какую модель шейдера и версию DirectX вы нацеливаетесь, но я очень рекомендую Практический рендеринг и вычисления с Direct3D11 . Книга знакомит вас со всеми мельчайшими подробностями DirectX11, его ресурсами, всеми различными конвейерными шейдерами, HLSL (целая глава посвящена этому), а также с тем, как начать реализацию таких вещей, как моделирование системы частиц, тесселяция, обработка изображений, отложенный рендеринг. и DirectCompute!

KlashnikovKid
источник
0

Я рекомендую эту ссылку для примеров: http://www.codesampler.com/dx9src/dx9src_8.htm#dx9_hlsl_fx_simple

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

Жан-Люк Маккейл
источник
-1

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

Я предлагаю GLSL, потому что у него есть очень хорошая книга, такая как оранжево-красная книга openGL, и ее легко освоить новичку.

Урай
источник
1
Это не отвечает на вопрос.
PhillC
Хотя это неплохой ответ - большая часть того, что лежит в основе GLSL, очень похожа на HLSL, и если OP может найти ресурсы для GLSL, то их можно использовать. Многие из основных различий между самим кодом шейдера являются просто вопросом умственного преобразования, когда вы знаете, на что смотрите. Идея изучения GLSL сначала терпит неудачу, потому что нужно также изучить OpenGL (неплохо само по себе; полезно знать и то, и другое) и переписать свою программу (плохо), но нет ничего плохого в использовании материала GLSL для дополнения обучения HLSL (и наоборот, где это уместно).
Максимус Минимус