РЕДАКТИРОВАТЬ: Таким образом, я получил визуальный эффект портала, работающий без снижения производительности, и я получил физическую настройку объектов с твердыми телами, плавно перемещающимися через порталы, и объектов с контроллерами персонажей, проходящими сквозь него. Единственное, что я сейчас пытаюсь выяснить - это смешать два вида камеры, чтобы получить правильный эффект перехода от первого лица. Есть идеи, как бы я смешал эти два? Я думаю о чем-то, используя шейдер только глубины или нормализованный прямоугольник области просмотра. Моя главная проблема - это вычисление в реальном времени и с углами.
Поэтому я работаю над созданием эффекта портала в Unity3D. Очевидно, я использовал Портал Valve как большое влияние на программирование этого. В настоящее время я просто использую текстуру рендеринга камеры, чтобы передать графический эффект, а затем немного кода, чтобы сделать все остальное. Проблема в том, что при разрешении 2048x2048 он выглядит так же качественно, как и у Portal, но вызывает большие потери FPS. Чтобы решить эту проблему, мне нужно либо снизить качество текстуры, либо количество раз, когда я обновляю текстуру.
Valve добилась высокого качества портального эффекта без потери частоты кадров. Как я могу сделать то же самое? У кого-нибудь есть какие-нибудь хорошие идеи для рендеринга с текстурой высокого разрешения без потери кадров?
Я подумываю сделать свой собственный код для рендеринга в текстуры, а не использовать встроенную систему Unity, это выполнимо, но определенно будет хлопотно. Поэтому любые мысли, идеи или предложения высоко ценятся.
Ответы:
После нескольких часов исследований и программирования я понял, как правильно получить визуальный эффект для этого. Если вы хотите просто купить систему портала, которая работает для визуальных элементов и почти все остальное, что вам нужно, ознакомьтесь с пакетом Portalizer Unity.
Я программирую на C #, а этот пакет на JS, но логика, лежащая в его основе, невероятно полезна и хорошо продумана. В общем, я следовал его логическому мышлению с некоторыми настройками для моей игры и контроллера от первого лица.
По существу , что вы делаете , это использовать модифицированную версию этого вода шейдерного / сценарий. Имейте два зеркала в сцене, и пусть камера отрисовывает то, что видит в каждом отражении, к другому зеркалу. Вам нужно будет создать модифицированную матрицу преобразования для учета отношений между двумя порталами. Чтобы помочь снизить производительность, прочитайте эту статью об отсечении ближней плоскости. Это поможет вам визуализировать только то, что нужно увидеть через портал.
Я могу создать более подробный учебник с картинками и источником, когда выясню, как правильно смешать камеры для телепортации FPS. Сейчас я слишком утомлен и занят, чтобы написать полное руководство, и этого должно быть достаточно, потому что он дает вам большую часть необходимого кода.
источник