Как я переходил с Built-In на URP в Unity и обратно с помощью Chat GPT

от автора

Как я переходил с Built-In на URP в Unity и обратно с помощью Chat GPT

Недавно я решил попробовать перейти с классического Built-In рендеринга на URP (Universal Render Pipeline) в Unity в своей игре «Подводная охота». Многие разработчики советуют URP за его продвинутую графику и возможности оптимизации для мобильных устройств. Я ожидал, что переход принесёт только улучшения, но в итоге столкнулся с массой проблем, которые побудили меня вернуться обратно на Built-In Pipeline. В этом процессе я активно использовал Chat GPT. Вот мой опыт и основные причины, которые привели меня к возврату на старую систему.

1. Падение производительности на старых устройствах

Одна из главных целей моего проекта — работа на широком спектре устройств, включая старые модели. Когда игра работала на Built-In, я видел стабильные 26 fps. После перехода на URP, производительность значительно снизилась до 18 fps. Несмотря на множество возможностей для оптимизации, таких как настройка уровней теней, освещения и использования лайтмапов, улучшить производительность на уровне Built-In мне так и не удалось.

С помощью Chat GPT я выбрал несколько стратегий по оптимизации, таких как использование URP Asset с минимальными настройками качества, отключение тяжелых эффектов и динамических теней. Несмотря на это, прироста fps я так и не увидел. На своем стареньком Honor 9 Lite, Built-In оказался более стабильным.

2. Проблемы с водой и ошибки шейдеров

Одной из самых больших проблем при переходе на URP стала вода. В проекте я использовал шейдер для воды FX/Water, и в Built-In всё работало как надо. Однако при переходе на URP начали появляться ошибки, например:

IsCameraProjectionMatrixFlipped is being called outside camera rendering scope. UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) 

Я решил попробовать несколько популярных ассетов для воды, совместимых с URP, таких как:

  • Crest Water System URP Ocean Rivers Lakes

  • KWS Water System

  • Dragon Water URP

  • Stylized Water 2

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

3. Проблемы с деревьями и билбордами

Третьей серьёзной проблемой стали деревья. В Built-In я использовал Nature/Tree Soft Occlusion Leaves (Bark) для деревьев, чтобы террайн автоматически делал биллборды. В URP я попробовал использовать SpeedTree шейдеры, но деревья выглядели криво — они были чересчур темными при ближнем рассмотрении. Также возникли проблемы с отображением билбордов (простых 2D-изображений деревьев на дальнем расстоянии), часть дерева полностью исчезала и биллборды были значительно выше detailed tree.

Решения через Chat GPT

В процессе работы с Chat GPT я получил множество полезных решений и подходов, которые облегчили процесс отладки и экспериментов:

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

  2. Создание инструмента для массовой конвертации материалов — Во время перехода на URP я использовал стандартный конвертер, а для перехода обратно на Built-In стандартных средств не было. С помощью Chat GPT я создал скрипт для автоматического поиска материалов с некорректными шейдерами и их массовой конвертации. Получился инструмент с возможностью выбора материалов для конвертации, что сэкономило кучу времени.

    Перед откатом назад надо сначала сконвертить материалы из URP

    Перед откатом назад надо сначала сконвертить материалы из URP
  3. Шаги по оптимизации производительности — Вместе с GPT мы прошлись по шагам оптимизации: настройка освещения, теней, уровня детализации и другие элементы. Однако, даже с учетом этих оптимизаций, URP оставался слишком тяжелым для старых устройств.

Заключение

Переход на URP обещал множество преимуществ, но в моём случае он привёл к неожиданным проблемам, таким как падение производительности, ошибки с рендерингом воды и сложности с деревьями. С помощью Chat GPT я смог глубже понять работу URP, провести серьёзную отладку, создать инструменты для автоматизации процесса, но в итоге мне всё равно пришлось вернуться на Built-In, так как это был единственный способ достичь нужного уровня производительности и качества.

Мой вывод: URP — это мощный инструмент для современных проектов, но если вы работаете с кастомными решениями и старыми устройствами, то Built-In может оказаться более стабильным и производительным выбором.


ссылка на оригинал статьи https://habr.com/ru/articles/848400/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *