Нужно что-то что не подвергается information lost
|
а вот хрен. идеальных отражений в реалтайме не бывает.
варианты:
- много плоскостей, куда растеризуешь планарное отражение (флипнутые меши) под разным углом и при семплировании делаешь поправку, как ты сказал, где отличия небольшие.
можно попробовать растерить их все в 1 РТ без овердро, например пометив в стенсиле куда каждое планарное отражение рисовать. отрисовка сцены в отражения должна быть ооочень дешёвой, чтобы прокатило.
- вокселизуешь всё и трейсишь. мб каскады вокселей. весить будет дофига (одна 512х512х512 RGBA текса займёт половину моей врамы), точность сомнительная, трейсить медленно, как-то решать leak'и надо.
можно вокселизовать отдельные лишь объекты. я пробовал делать так самоотражение объекта:
с самоотражением не так сложно, т.к. чётко понятно какой объект что отражает. а вот если надо чтобы воксели этого объекта отражались в мире... нужно как-то помечать, где они потенциально могут отразиться, а это особо точно не сделаешь, разве что деферед шар/куб большой вокруг объекта, и тогда много объектов в одном месте сделают лагодром.
опять же, разрешение вокселей сильно ограничено, удобнее юзать для однобитного селф-окклюжена всяких кубмап, чем для реальных отражений.
- отражать билборды аналитически находя пересечение луча с плоскостью. такое тоже делал (вон там вдали красный столб так отражён), только размывать такое отражение проблемно, особенно когда квад под острым углом, простой арифметики уже не хватит, так что лучше в скринспейсе блюрить.