2013-05-26 4 views
0

Предположим, у меня есть плоское идеальное зеркало. Как найти то, что он отражает? Легко, переместите камеру в положение, которое выглядит под углом падения.Отражение от изогнутой поверхности - HLSL

Теперь, если это плоское зеркало было изогнутым или сферическим? Как бы я нашел отражение объекта А, если бы объект В был не плоским, идеальным зеркалом.

Предположительно, для этого потребуется какой-то трассировка лучей (не уверен, как это сделать в HLSL ... пока), но я предполагаю, что это будет убийца производительности. Так кто-нибудь сделал это раньше и знал, что делать сейчас? Если это так, есть ли более простой способ? Как ты сделал это?

EDIT: Это должно работать в DX9

+1

Размышление вслух - можете ли вы отразить плоское отражение текстуры, а затем отобразить эту текстуру по любой форме, в которой находится ваше зеркало? –

+0

Существует технология под названием «отражения на экране», которые выполняют некоторые трассировки лучей, но упрощаются для использования в реальном времени. Может быть, это интересно для вас :) – Gnietschow

+0

@Gnietschow это должно работать в DX9, и из быстрого поиска в Google ваша техника кажется специфичной для DX11 (пожалуйста, поправьте меня, если я ошибаюсь). Интересный ответ, хотя, я буду держать в памяти отражения экрана. – MetaReference

ответ

0

Вы можете сначала вынести карту окружающей среды, а затем использовать среду отображение шейдер проецировать его на вашу искривленную поверхность. Это называется динамическим сопоставлением окружения или в этом уроке: Dynamic Cube Mapping. Это приведет к чему-то вроде этого: Dynamic Cube Mapping UDK

+0

Звучит дорого, но я полагаю, что это будет способ сделать это с помощью DX9. Спасибо, в любом случае. – MetaReference

+0

Да, это довольно дорого, так как вы должны сделать свою сцену несколько раз. Но если вы хотите, чтобы реальные размышления (а не поддельные, например, карты окружения или skyboxes), это лучший способ сделать это. – theCNG27

Смежные вопросы