Я имею в виду, можно ли прописать в шейдерах #if defined( CUBEMAP_BUILDING ) и выставлять соответствующую директиву во время рендера кубемап?
Цитата:
Дядя Миша писал: насчёт скриншотов с альфаканалом - я вообще таким никогда не баловался. Но да, это в движке, client\gl_backend.c->VID_CubemapShot там надо добавить флаг IMAGE_HAS_ALPHA и у glReadPixels поставить GL_RGBA. Только смысл?
Смысл в сохранении HDR кубемап в формате RGBM или RGBD.
Цитата:
Дядя Миша писал: Проверьте на других картах, на том же грасс_тесте, к примеру.
Проверил, на грасс_тесте то же самое, WATER_ENTITY возвращает -1, хотя плавать в воде можно, и эффект растягивания фова присутствует.
Цитата:
Lev писал: ncuxonaT Кубеманые отражения? Приятно выглядят)
Кубемапные-кубемапные. Выглядят приятно, но на оригинальный паранойевских картах есть артефакты. Наверное, Элбер не расставлял кубемапы в коридорах с водой.
ncuxonaT писал: Я имею в виду, можно ли прописать в шейдерах #if defined( CUBEMAP_BUILDING ) и выставлять соответствующую директиву во время рендера кубемап?
Ну это в коде надо делать. В HUD_RenderFrame есть флажок
if( FBitSet( rvp->flags, RF_DRAW_CUBEMAP )) - это состояние вот как раз, когда кубемапы рендерятся. Ну или скайбокс. Надо его расшарить через ref_globals_t например. И дальше, где у нас функции формирования убер-шейдера, Mod_ShaderSceneForward делаем проверку.
Псевдокод:
C++ Source Code:
if( tr.render_cubemaps ) // этой переменной нет, её надо завести и в HUD_RenderFRame ставить значение
Ну и собсно всё, механизм убер-шейдеров далее сам разберётся, что шейдер изменился и загрузит новый. Но естественно это надо сделать для всех функций формирования убер-шейдеров, для студиомоделей, для мировых брашей.
Цитата:
ncuxonaT писал: эффект растягивания фова присутствует
он на waterlevel проверяется. Тебе, собственно зачем знать номер этой WATER_ENTITY? Цвет тумана взять?
Дядя Миша писал: Ну и собсно всё, механизм убер-шейдеров далее сам разберётся, что шейдер изменился и загрузит новый. Но естественно это надо сделать для всех функций формирования убер-шейдеров, для студиомоделей, для мировых брашей.
Это вроде бы получилось, только куда нужно засунуть GL_AddShaderDirective( options, "CUBEMAP_BUILDING" ); для рендера неба?