HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)
Отправлено Shapirlic 19-07-2025 в 15:31:
v[5] v[6] из surf->polys->verts содержат что то похожее на координаты лайтмапы, но их надо как то обработать. На вид они в 9-10 раз меньше чем нужно
Отправлено Дядя Миша вчера в 07:53:
Цитата:
Shapirlic писал:
Лайтмапы именно тех сурфоф воды (SURF_DRAWTURB), которые я и буду рисовать.
ты убедись что компилятор эти лайтмапы рассчитал. Их помоему только мой p2st считает.
Добавлено вчера в 10:53:
C++ Source Code:
2 | if( !FBitSet( warpface->flags, SURF_DRAWTURB )) |
4 | // lightmap texture coordinates |
5 | s = DotProduct( verts, warpinfo->lmvecs[0] ) + warpinfo->lmvecs[0][3]; |
6 | s -= warpinfo->lightmapmins[0]; |
7 | s += warpface->light_s * sample_size; |
8 | s += sample_size * 0.5; |
9 | s /= BLOCK_SIZE * sample_size; //fa->texinfo->texture->width; |
11 | t = DotProduct( verts, warpinfo->lmvecs[1] ) + warpinfo->lmvecs[1][3]; |
12 | t -= warpinfo->lightmapmins[1]; |
13 | t += warpface->light_t * sample_size; |
14 | t += sample_size * 0.5; |
15 | t /= BLOCK_SIZE * sample_size; //fa->texinfo->texture->height; |
17 | poly->verts[i][5] = s; |
18 | poly->verts[i][6] = t; |
Если проставлен DRAWTURB, то ксаш не рассчитывает координаты лайтмапы. Хотя и может, конечно.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff вчера в 08:56:
Цитата:
Дядя Миша писал:
ты убедись что компилятор эти лайтмапы рассчитал. Их помоему только мой p2st считает.
У китайца, кажись был какой-то флаг для расчёта лайтмап на стёклах и прочих поверхностях с kRenderTransTexture. Помню, что после компиляции старым zhlt стёкла светились в темноте, будто параметр _minlight не равен нулю. Это оно?
Добавлено вчера в 15:56:
А, нет. У китайца по-моему текстура модифицировалась, и вшивалась прям в бсп. Точно не помню.
Отправлено Shapirlic вчера в 11:11:
Лайтмапа на мировой воде есть даже в оригинальных картах HalfLife. Это легко проверить, если открыть .bsp утилитой BSPGUY.
Lambda_bunker:
Отправлено Shapirlic вчера в 12:02:
Я получаю приблизительные результаты если беру такие коодинаты для лайтмапы
C++ Source Code:
gl.glMultiTexCoord2fARB(GL_TEXTURE0_ARB, v[5] * 3.f * M_PI, v[6] * 3.f * M_PI); |
Но в местах со сложным освещением видно, что лайтмапы плохо стыкуются.
Нужно как то иначе обработать v[5] и v[6], с этим вопросом я сюда и пришёл к вам )
Отправлено Дядя Миша вчера в 16:56:
Цитата:
Ku2zoff писал:
А, нет. У китайца по-моему текстура модифицировалась, и вшивалась прям в бсп. Точно не помню.
Всё верно. Освещение полупрозрачных поверхностей нетривиальная задача, поэтому либо через мультипроходность (как в Quake3), либо через копию экрана (как в Paranoia 2:Savior), либо предумножить лайтмапу на диффузку и сохранить результат в особую диффузку, вкомпиленную прямо внутрь карты и используемую только на этой поверхности (как в VHLT).
Цитата:
Shapirlic писал:
Лайтмапа на мировой воде есть даже в оригинальных картах HalfLife
Ну в оригинале может и есть, а в ZHLT вроде бы это отключали, оптимизация типо. Лайтмапы экономили.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Shapirlic вчера в 18:50:
Окай, в ZHLT экономили, оригинальный компилятор и Vluzacn_s_ZHLT на воде лайтмапы делают, у меня вопрос с самого начала по текстурным координатам этих лайтмап. BSPGUY и BSPViewer могут мировую воду рендерить с лайтмапой, я в их сорцах покопался, но так и не понял как они высчитывают текстурные координаты для лайтмап мировой воды. И с этим пришёл к вам, у вас есть идеи или догадки? Как я уже писал выше v[5] и v[6] в verts сурфов воды похожи на текстурные координаты лайтмапы, но деленные на 9-10. Есть догадки какая математика там скрывается?