Open 0x4E69676874466F78 opened 2 years ago
А там нет такого, что туман, например, задаётся для bsp листа?
@w23 я не знаю, я не встречал. Там с водой и похожими поверхностями куча хаков, помимо способа через func_water оно ещё так работает: https://sourcegraph.com/github.com/FWGS/xash3d-fwgs@b9901bcb70d88a9ee05d033dd76780796f17b0be/-/blob/engine/common/mod_bmodel.c?L899-909 И вот такое: https://sourcegraph.com/github.com/FWGS/xash3d-fwgs@b9901bcb70d88a9ee05d033dd76780796f17b0be/-/blob/engine/common/imagelib/img_wad.c?L486-518 Там кстати ещё выше по коду есть упоминание воды. Но вот поискал: https://sourcegraph.com/github.com/FWGS/xash3d-fwgs@b9901bcb70d88a9ee05d033dd76780796f17b0be/-/blob/common/bspfile.h?L137:42 А вот как туман проверяется: https://sourcegraph.com/github.com/FWGS/xash3d-fwgs@b9901bcb70d88a9ee05d033dd76780796f17b0be/-/blob/ref_gl/gl_rmain.c?L655-785
Туман может работать в TriAPI: https://github.com/HLSources/Spirit-of-Half-Life/blob/5ad2e00fe1546cc73e19255c75512a11ee3980c8/cl_dll/tri.cpp#L205-L224 https://github.com/HLSources/Spirit-of-Half-Life/blob/5ad2e00fe1546cc73e19255c75512a11ee3980c8/common/triangleapi.h#L54
Как раз используется в контре. То есть надо реализовать: https://github.com/w23/xash3d-fwgs/blob/d6d9011dcc92ea33eac41dc649de5bd7b7c514d4/engine/ref_api.h#L606 https://github.com/w23/xash3d-fwgs/blob/d6d9011dcc92ea33eac41dc649de5bd7b7c514d4/engine/ref_api.h#L609
https://github.com/FWGS/xash3d-fwgs/issues/1188 ещё одна особенность в реализации.
Интересно, как вообще работает туман в игре. В каких местах он включается и выключается? Включается ли он глобально, или только для некоторых моделей/брашевых поверхностей?
С точки зрения лучей кажется, что чтобы физически корректно его считать, было бы удобнее принимать туман не как вкл-выкл, а как объём. Это, кстати, и лучше дружит с волюметриками.
Насколько я помню туман глобальный. Включается через env_fog. Ещё его можно было зафорсить консольными командами вроде как. Остальное не знаю.
С точки зрения лучей кажется, что чтобы физически корректно его считать, было бы удобнее принимать туман не как вкл-выкл, а как объём. Это, кстати, и лучше дружит с волюметриками.
Можно таскать кластер коробок за игроком, то есть по кластерам переключать эти коробки перед игроком.
Туман можно проверить в Prison и Afraid of Monsters: Director's Cut. Ещё в Overturn сильно затуманенные карты, но мы его пока не трогали. Prison на спирите 1.2. А AoMDC отревершен. Overturn опенсорс.
Спирит 1.2 здесь https://github.com/FWGS/hlsdk-portable/tree/sohl1.2/ AoMDC https://github.com/FWGS/hlsdk-portable/tree/aomdc Overturn https://www.moddb.com/mods/overturn/downloads Есть на чём потестить.
Забыл написать, env_fog их есть два вида:
void (*Fog)( float flFogColor[3], float flStart, float flEnd, int bOn ); //Works just like GL_FOG, flFogColor is r/g/b.
void (*FogParams)( float flDensity, int iFogSkybox );
При этом в коде контры который мы имеем на руках поддержки тумана нет, но это тривиально добавляется.
Как реализовывать эти вызовы в плане лучей вопрос, можно что-то фейковое делать или попробовать через волуметрики которые ездят вместе с игроком.
Позже я подготовлю сборки DMC и CS с туманами.
Туман в режиме startdist-enddist совсем нефизичный, там тупо если выставить 500-500 будет стена тумана с жёсткой границей, нам надо его как-то привести к виду density. Возможно учитывать только enddist, а startdist всегда считать 0.
DMC-режим уже можно тестировать на spirit: https://github.com/FWGS/hlsdk-portable/tree/sohl1.2
Туман для CS тоже можно уже тестировать, он там теперь реализован. Кроме того сам движок теперь имеет правильный туман для density, поэтому с мастером желательно синхронизироваться.
Для корректного теста тумана надо ещё смержиться со свежим мастером из апстрима, там были изменения в этом направлении.
Для корректного теста тумана надо ещё смержиться со свежим мастером из апстрима, там были изменения в этом направлении.
О да, мы давно не мержились. После материалов надо будет.
Я бы предпочёл сферический туман вместо плоского, но если это накладно то делай плоский.
Туман используется:
Достаточно реализовать вызовы тумана и всё везде должно заработать. https://sourcegraph.com/search?q=context:global+repo:^github\.com/FWGS/xash3d-fwgs%24+file:^ref_gl/.*\.*+content:fog&patternType=literal