Как создать хороший металлический шейдер?
Для разных металлов и, скажем так, более или менее размытых / ржавых и тд.
Я знаю, что одно отличие от обычных материалов состоит в том, что металл должен «окрашивать» зеркальный свет, но когда я делаю это, например, с золотом, он просто выглядит «желтым», а не металлическим.
Любая помощь приветствуется!
graphics
shaders
graphic-effects
Valmond
источник
источник
Ответы:
Я недавно создал шейдеры для чистых и чистых металлов для своей игры, и я очень доволен результатами.
Чистый металл: наиболее важной особенностью в моих экспериментах было отражение окружения с помощью кубических карт. Я реализовал их в средах рендеринга в текстуру в реальном времени, но статические изображения часто дают хорошие результаты, и их легче размыть. Второй наиболее важной особенностью был эффект Френеля, который делает силуэты объектов лучше. Это, например, дает округлый взгляд на шары. Зеркальное освещение необязательно, так как карта куба может предоставить основные моменты напрямую. Рендеринг HDR также важен для того, чтобы отражения на кубической карте выглядели хорошо.
Матовый металл: для матовых металлов вы легко получаете хорошие результаты, используя текстуру кисти, что-то вроде этоговместе с анизотропным освещением. Для анизотропного освещения вы можете найти учебные материалы в Интернете, но я реализовал свой собственный, используя blinn-phong в качестве основы, но из полу-вектора я исключил 80% направления касательной. Это означает, что вам нужны тангенс или битангенс в дополнение к нормали в ваших моделях. Отражение окружающей среды сложно для матового металла. Вы можете выполнять выборку из нескольких направлений на карте куба на основе касательных / битангентных направлений, но для получения хороших результатов может потребоваться множество выборок. Это, однако, не обязательно, так как текстура и анизотропное освещение с несколькими источниками света уже выглядят довольно красиво. Конечный результат в моем случае выглядит так:
источник
Как сказал Николь в своем комментарии, есть много вещей, которые входят в высококачественный металлический шейдер. Для достижения наилучших результатов ваш рендерер должен быть гамма-корректным и использовать физически основанные модели шейдинга (см., В частности, две статьи Нати Хоффмана по этой ссылке).
Учитывая все это, типичный способ изготовления металлического материала состоит в том, чтобы иметь очень низкий или несуществующий диффузный цвет и высокую зеркальную отражательную способность в диапазоне от 50% до 100% (в линейном цветовом пространстве). Как вы заметили, для некоторых металлов зеркальное отражение будет цветным.
Поскольку внешний вид металла полностью зеркальный, с небольшим или отсутствующим рассеиванием, отражение будет чрезвычайно важным. Если он только зеркально отражает точечные источники света, вы получите вид черного материала, так как остальная среда отсутствует (даже очень грубый металл будет отражать размытое изображение его окружения). Типичный способ получить больше отражения - использовать кубическую карту. Реалистичное отражение в графике в реальном времени является огромной темой, и существует множество различных подходов.
источник