Нет, вы не правы - зеркала Duke Nukem 3D работают совсем не так.
DN3D использовал движок портала . Соединение между любыми двумя секторами было в некоторой степени произвольным, и когда механизм рендеринга пришел на портал, он знал, что должен начать рендеринг другого сектора в этом. Сектор за зеркалом был в основном заполнителем, чтобы справиться с причудой в двигателе - единственная точка сектора должна была быть больше, чем все, что вам нужно, «отражалось». Он не содержал никакой реальной геометрии. Фактически, он работал почти так же, как «порталы» в Portal, за исключением того, что Portal (сам по себе основанный на движке портала) создает порталы во время выполнения и имеет ограничение на количество повторений порталов (т. Е. A -> B -> A -> B -> A ...), в то время как Build (DN3D) просто потерпит крах, так как его стек переполнится, если вы направите зеркало на другое зеркало.
Понятно, как просто реализовать зеркало с этим - сделать портал, указывающий обратно в комнату. Это означало, что рендеринг зеркала будет стоить ровно столько же, сколько и рендеринг самой комнаты, обеспечивая высокую производительность и согласованность. Пока вы не указали зеркало на другое зеркало. Если вы посмотрите исходный код механизма сборки, то увидите, что в коде вообще нет зеркал для обработки кода - он не должен быть, потому что так работают порталы. ПРИМЕЧАНИЕ: на самом деле, есть код для переворачивания визуализированных пикселей - это просто не переворачивает геометрию и все различные спрайты и эффекты, Редактор должен был быть в состоянии сделать эти «поддельные» порталы, оглядываясь назад на себя. Если вы хотите узнать больше о довольно умном движке Build, Фабьен Санглард (Fabien Sanglard) может предложить вам отличный анализ внутренних компонентов движка Build . Весь движок был с открытым исходным кодом и портирован на современные платформы, хотя старый все еще работает безупречно на Windows 10 (проверено для вас: P). Многие игры, основанные на Build, также были с открытым исходным кодом и / или переделаны.
Почему это больше не используется? Ну, некоторые движки больше не предпочитают порталы, например. Сложно применять множество графических хаков и оптимизаций - я не могу указать вам на что-то конкретное, но большая часть пост-обработки зависит от хаков, которые не будут работать в реальном движке портала (они делают много предположений, которые больше не держу). Это в основном та же проблема, что и в играх со стереоскопическими изображениями - хаки больше не работают.
Самое главное, что зеркала стали более сложными. Они могут иметь сложные формы, текстуры, они могут быть на земле (также известные как «вода») и т. Д. Хотя все эти проблемы решаются в движке портала, RTT становится более простым выбором в некоторый момент, а графические процессоры достаточно быстры справиться с этим.
Однако, несмотря на это, существует множество игр с аппаратным 3D-ускорением, которые делают вещи «настоящими». Например, из более старых игр: Quake 3 или Alien vs. Predator. Насколько я знаю, в движке Source по-прежнему используются «настоящие» зеркала. Если вы ожидаете, что люди будут приближаться к зеркалу, и вы можете гарантировать, что не будет слишком много отражающих поверхностей одновременно (например, благодаря дизайну уровней), портальные зеркала по-прежнему очень привлекательны.