Шейдеры в Unity 3 - Карты нормалей (Normal Map)
Вставка
- Опубліковано 25 лип 2024
- Реализуем карты нормалей чтобы имитировать неровности на поверхности 3D-модели.
00:00 - 1. Вступление
00:21 - 2. Импортируем ассеты в отдельный проект
04:25 - 3. Забираем Mobot'а
07:45 - 4. Что такое карты нормалей и зачем они нужны
10:30 - 5. Как работают карты нормалей
20:24 - 6. Реализуем функционал карты нормалей
23:33 - 7. Регулируем силу карты нормалей
Ссылки:
ru.wikipedia.org/wiki/Нормаль
docs.unity3d.com/Manual/Stand...
assetstore.unity.com/packages...
Плейлист:
• Шейдеры в Unity 0 - Ос...
Авторство композиции "Forest Ambience" принадлежит TinyWorlds aka Rick Hoppmann.
Оригинальная версия: opengameart.org/content/fores...
а я все тащил в проект. теперь переделаю) очень полезное замечание
Вопросы:
1 как теперь применить это все на большом террейне. нужно создавать шейдер размером с террейн или можно как то выбрать нужные области в террейне?
2 возможно не по теме, чтобы создать в каком то месте траву, которую можно скосить и она со временем вырастет, это тоже шейдеры?
Вопросы сложные, на к. нет простого и однозначного ответа. Но:
1) Если вам просто нужно иметь простые переходы на террейне вы можете рисовать текстуры с помощью строенного инструментария, и без такого (или подобного) шейдера.
Если же вам действительно нужные крутые-продвинутые эффекты на террейне вроде многослойности или сложносоставного ландшафта (как тут ua-cam.com/video/ptMwAvPWy7w/v-deo.html) - тут всё сложнее чем просто использование шейдера, нужно разбираться в том как работает Unity-террейн и интегрировать в него.
-
Более реалистичным видится использование готового ассета.
Например, этого assetstore.unity.com/packages/tools/terrain/gts-glyph-terrain-shader-225272
У него полный суповой набор:
Detail injection - add detail to break up tiling and add interest
Geo injection - add sedimentary formation on selected textures
Height blending - blend textures together based on their relative height
Snow injection - add snow to your terrain, integrated with Gaia
Tesselation - make your rocks pop with tesselation (HDRP only)
Texture variation - add visual interest to your terrain render
Stochastic variation - remove texture tiling with stochastic variation
Triplanar cliffs - preserve texture detail on vertical surfaces
Mesh support - run GTS on pure mesh-based terrains
-
Полностью альтернативным является использование 3D-моделей ака мешей вместо террейна (вышеупомянутый Mesh support). Тогда вам не нужно разбираться в сложных системах Unity.
Но надо иметь 3D-модель ландшафта и заморачиваться с оптимизацией и всеми вещами, к. за нас делает террейн Unity.
2) С травой тоже может быть несколько вариантов. НО самый простой и к. я рекомендую - просто использовать террейн Unity, он позволяет делать траву с GPU Instancing'ом:
docs.unity3d.com/Manual/terrain-Grass.html
Конечно, можно сделать самому, используя шейдеры для травы, но сделать лучше чем это делает террейн - не так просто.
И тут главное - если вы хотите разрабатывать игры, то советую разрабатывать игры, а не системы для них.
@@ImperativeGames спасибо)
у меня почему-то не работает. я делаю не 3д а 2д, но разница не большая, что со стандартным шейдером, что с таким как в видео. либо спрайт пропадает вообще либо становится бело странным, а не работает как надо
Причин может быть, конечно, множество. Но первым делом надо проверить, используете ли вы Built-in Render Pipeline
Project Settings -> Quality -> поле Render Pipeline Asset должно быть пустым