Графика, рендер, шейдеры |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Графика, рендер, шейдеры |
17.08.2010, 10:38
Сообщение
#3781
|
|
Игроман Репутация: 430 Группа: Участник Сообщений: 892 Регистрация: 14.08.2008 |
Разбор полётов Работы участников Шейдеры от Diablo Наработки cjayho ECB Shaderpack Описание ECB-Shaderpack Улучшенный набор шейдеров для игры S.T.A.L.K.E.R.: Shadow of Chernobyl _____________________________________________________________________________ Основные возможности: _______________________ 1) Непрозрачный туман на R2, возможность переключения из файла конфигурации прозрачный/непрозрачный туман 2) Исправлена "синюшность" изображения на R2 3) Эффект компенсационного светового следа на R2 4) Статический и динамический Depth of field на R2, Размытие объектов при прицеливании (требует дополнительного скрипта) 5) Билдовский блум с краснинкой на R2, возможность переключения тонмаппинга в режим, который был в билде 2218 6) Screen space ambient occlusion на R2 7) Правильная отрисовка сияния ламп на R1 8) Правильная отрисовка солнечного градиента на обоих рендерах 9) Полноценная отрисовка occlusion-lightmaps на R2 10) Микроструктурный бамп 11) Правильная отрисовка бликов на блестящих поверхностях 12) Автосатурация - попиксельное уменьшение насышенности слабо освещенных объектов 13) Мягкие тени на R2 14) Экспериментальная возможность - правильные тени от деревьев на R2 15) Улучшенный Motion blur, более похожий на билдовский 16) Исправлена "кислотность" (перенасыщенность) солнечного освещения объектов на R2 17) Отражабельная вода на R2 18) GodRays на R2 + эффект пылинок в лучах. 19) Мягкие партиклы на R2 20) Мягкая вода на R2 Плюс множество регулировок и исправлений мелких недостатков обоих рендеров Условия использования _______________________ Данный продукт предоставляется под соглашением Creative Commons CC-BY 3.0, Подробнее описано по адресу Составитель данного набора шейдеров - cjayho Свежие ревизии находятся по адресу Установка ___________ Данный продукт тестировался под версиями игры 1.0004 и 1.0006 Установка сводится к копированию файлов в папку gamedata мода, изначальный набор файлов предназначается для чистой игры. В случае установки погодных модов необходимо правильно совместить файл config/weathers/flares.ltx Для более полной настройки шейдеров R2 под свой мод можно править файл shaders/r2/config.h. Для корректной работы теней нужно установить следующие переменные в игровой консоли: r2_sun_near_border 1 r2_sun_near 20 Благодарности _______________ Sergy172 за идеи и тестирование экспериментальных веток. -=Diablo=- за изначально портированные шейдеры из 2232 macron за отражабельную воду и наборы шейдеров из билдов 2217 и 2588 Билдоман за набор шейдеров из билда 2571 BAC9-FLCL, KamikaZZe за дельные замечания и критику Shadows за неоценимую помощь в разработке и тестирование экспериментальных версий Meltac <metzinger@gmx.net> (Его мод "Dynamic shaders" здесь: за алгоритм Depth of Field. Код DoF используется с его разрешения. Sky4CE за алгоритм SSAO K.D. За алгоритмы мягкой воды, мягких партиклов, GodRays Наработки ECB Team распространяются под условиями Правки рендера от K.D. Подходит как к чистой игре, так и к любым модам. Изменения - саншафты (команда r2_sun_shafts off/low/medium/high) - мягкая вода (команда r2_soft_water on/off) - мягкие партиклы (команда r2_soft_particles on/off) - регулировка дальности отрисовки травы через консоль (r__detail_radius [49, 501]) - расширенная регулировка плотности травы (r__detail_density [0.02, 0.6]) - расширенная регулировка четкости текстур (r1_tf_mipbias/r2_tf_mipbias [-3.0, 3.0], только R1/R2) - расширенная регулировка расстояния переключения на лоды (r__geometry_lod [0.1, 3.0]) - восстановлены тени от травы (r2_sun_details, R2) - восстановлены блудмарки (r2_bloodmarks, R1/R2) - правильные тени от солнца (R2) - увеличенный видеобуфер (фикс ошибки "(bytes_need<=mSize) && vl_Count" на R2, связанной с перегрузками видеобуфера*) * То есть теперь можно на полной динамике загрузить ресурсоёмкую карту типа болота из ЧН, поставить видимость в 4 километра и взрывать вокруг дымовые гранаты с ЧНовскими партиклами дыма (тоже жутко ресурсоёмкие). Установка: закинуть содержимое в папку с установленным ТЧ (6 патч, более ранние патчи не поддерживаются и просить сделать под них аналогичное бессмысленно!) Настройка: смотрите ogse_config.h Нюансы: - мягкая вода работает и без бинарников - экзешник нужен для пыли в саншафтах и правки вылета перегрузки видеобуфера. Он основан на выложенным в свое время официальном экзешнике для 6го патча без защиты (отсутвие starforce). - рендер-библиотека обеспечивает работу консольных команд, пыли в саншафтах и мягких партиклов. Использование: где и как угодно. Не возбраняется указать автора. Сообщение отредактировал ForserX - 21.07.2020, 13:58 |
 
|
|
|
|
21.05.2020, 22:40
Сообщение
#3782
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
jamakasi, понятно что сломано. Я примерно в фотошопе подогнал визуал скрина.
На самом деле в игре приятнее графа. Но еще: этот рендер нельзя сравнивать со сталком, тут другая технология подготовки уровня и освещения. У меня уникальный рендер, macron не даст соврать, это гибридный ренедер ЧН и ЗП, да плюс немерено накручено по шейдерам. Позднее я выровню яркость неба и яркость воды. Сообщение отредактировал Diesel - 21.05.2020, 22:42 |
 
|
|
21.05.2020, 23:11
Сообщение
#3783
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Zagolski, спасибо за оптимизацию. Такого у меня еще не было, сразу отпустило заметно, в кадрах не скажу фпс - лень выводить.
Обязательно тебе памятник в Прохоровке поставлю. |
 
|
|
22.05.2020, 11:54
Сообщение
#3784
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Можно еще препасс травы сделать, тогда получим еще больший буст. На первом скрине по дефолту, на втором с препассом (см. фпс). Для травы вообще очень желательно препасс делать, особенно на отложенном рендере. Иначе получим дикий overdraw. Видяха GTX 660.
Сообщение отредактировал Zagolski - 22.05.2020, 12:03 |
 
|
|
22.05.2020, 13:46
Сообщение
#3785
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Zagolski, надо начинать препассы готовить к зиме.
|
 
|
|
22.05.2020, 18:39
Сообщение
#3786
|
|
Босс Репутация: 447 Группа: Участник Сообщений: 4295 Награды: 6 Регистрация: 07.06.2008 |
Готовь sunny летом...
-------------------- ...Где каждый в душе великий Кобзон,
А на деле банальный Сид Вишес... Я плюс... Потому что я плюс. (с) Дрянь Тань Ян из провинции Гас Коу Ань. Никакой справедливости нет, все законы работают не правильно, месть разрушительна и бесперспективна, правда у каждого своя, разум вообще больной. Остаётся жить любовью? Это был риторический вопрос. |
 
|
|
22.05.2020, 22:47
Сообщение
#3787
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Zagolski, где твои препассы? Я жду.
А что такая графа хреновая на скринах, гипер-рендер и то симпатичнее выдаёт картину. |
 
|
|
22.05.2020, 23:11
Сообщение
#3788
|
|
Новичок Репутация: 1 Группа: Участник Сообщений: 5 Регистрация: 05.12.2019 |
Zagolski, подскажи, попробовал перенести на OpenXRay, но оно крэшится на втором проходе:
Код 1 CBackend::set_Element R_Backend_Runtime.h 124 0x7fffe7922be4 2 pLandscape_1<xr_fixed_map_node<float, R_dsgraph::_MatrixItemS>> r__dsgraph_render.cpp 694 0x7fffe7922be4 3 xr_fixed_map<float, R_dsgraph::_MatrixItemS, 2ul, xalloc<xr_fixed_map_node<float, R_dsgraph::_MatrixItemS>>>::recurse_left_right FixedMap.h 163 0x7fffe7922ed6 4 xr_fixed_map<float, R_dsgraph::_MatrixItemS, 2ul, xalloc<xr_fixed_map_node<float, R_dsgraph::_MatrixItemS>>>::recurse_left_right FixedMap.h 163 0x7fffe7922ed1 5 xr_fixed_map<float, R_dsgraph::_MatrixItemS, 2ul, xalloc<xr_fixed_map_node<float, R_dsgraph::_MatrixItemS>>>::recurse_left_right FixedMap.h 163 0x7fffe7922ed1 6 xr_fixed_map<float, R_dsgraph::_MatrixItemS, 2ul, xalloc<xr_fixed_map_node<float, R_dsgraph::_MatrixItemS>>>::recurse_left_right FixedMap.h 163 0x7fffe7922ed1 7 xr_fixed_map<float, R_dsgraph::_MatrixItemS, 2ul, xalloc<xr_fixed_map_node<float, R_dsgraph::_MatrixItemS>>>::recurse_left_right FixedMap.h 163 0x7fffe791f094 8 xr_fixed_map<float, R_dsgraph::_MatrixItemS, 2ul, xalloc<xr_fixed_map_node<float, R_dsgraph::_MatrixItemS>>>::traverse_left_right FixedMap.h 371 0x7fffe791f094 9 D3DXRenderBase::r_dsgraph_render_landscape r__dsgraph_render.cpp 707 0x7fffe791f094 10 CRender::Render gl_R_render.cpp 432 0x7fffe781d819 11 CLevel::OnRender Level.cpp 633 0x7fffe615ff15 12 pureRender::OnPure pure.h 20 0x7ffff7f90252 13 MessageRegistry<pureRender>::Process pure.h 101 0x7ffff7f90252 14 CRenderDevice::DoRender device.cpp 272 0x7ffff7f90252 15 CRenderDevice::DoRender device.cpp 261 0x7ffff7f90252 16 CRenderDevice::ProcessFrame device.cpp 299 0x7ffff7f9050c 17 CRenderDevice::ProcessFrame device.cpp 283 0x7ffff7f9050c 18 CRenderDevice::message_loop device.cpp 426 0x7ffff7f9131f 19 CRenderDevice::Run device.cpp 460 0x7ffff7f91654 20 Startup main.cpp 305 0x7ffff7f96472 Код примерно такой: Код template<class T> void __fastcall pLandscape_0(const T& N) { VERIFY(N); dxRender_Visual *V = N.second.pVisual; VERIFY(V && V->shader._get()); RCache.set_Element(N.second.se, 0); float LOD = calcLOD(N.second.ssa, V->vis.sphere.R); #ifdef USE_DX11 RCache.LOD.set_LOD(LOD); #endif V->Render(LOD); } template<class T> void __fastcall pLandscape_1(const T& N) { VERIFY(N); dxRender_Visual *V = N.second.pVisual; VERIFY(V && V->shader._get()); RCache.set_Element(N.second.se, 1); RImplementation.apply_lmaterial(); float LOD = calcLOD(N.second.ssa, V->vis.sphere.R); #ifdef USE_DX11 RCache.LOD.set_LOD(LOD); #endif V->Render(LOD); } void D3DXRenderBase::r_dsgraph_render_landscape(u32 pass, bool _clear) { RCache.set_xform_world (Fidentity); if (pass==0) mapLandscape.traverse_left_right (pLandscape_0); else mapLandscape.traverse_left_right (pLandscape_1); if (_clear) mapLandscape. clear (); } Падает внутри вызова RCache.set_Element(N.second.se, 1); Походу, я что-то забыл, но вот что... Если что, полный патч приложен.
Прикрепленные файлы
|
 
|
|
22.05.2020, 23:34
Сообщение
#3789
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Zagolski, надо начинать препассы готовить к зиме. Шо толку от этих препассов если мы не видим диффы! -------------------- |
 
|
|
23.05.2020, 02:54
Сообщение
#3790
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
eagleivg, смотри внимательно, что бы в динамику не затолкать.
В ф-цию r_dsgraph_insert_static ближе к концу перед Код for ( u32 iPass = 0; iPass<sh->passes.size(); ++iPass) Я случайно в динамику хренакнул, вылетало так же примерно. |
 
|
|
23.05.2020, 07:51
Сообщение
#3791
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
eagleivg, Я у тебя нашел пару неточностей, а в остальном порядок.
1. Код C.SH->flags.bLandscape = TRUE; нужно ставить также и в Код case SE_R2_NORMAL_LQ: 2. При установке рендертаргета нужно делать if else в зависимости от включенного MSAA: ставить базовый буфер глубины или мультисемплинговый. Вот так: Код if (!RImplementation.o.dx10_msaa) Target->u_setrt ( Device.dwWidth,Device.dwHeight,NULL,NULL,NULL,HW.pBaseZB); else Target->u_setrt ( Device.dwWidth,Device.dwHeight,NULL,NULL,NULL,rt_MSAADepth->pZRT); Еще у тебя организована какая-то самодеятельность в ResourceManager_Scripting.cpp. Я туда ничего не внедрял, может из-за этого проблемы. А что такая графа хреновая на скринах, гипер-рендер и то симпатичнее выдаёт картину. Там у меня нет ничего, ни постпроцесса, ни даже теней. Только базовое освещение diff+spec, считай как на статике. где твои препассы? Я жду. С травой сложнее, как будет время, опишу процесс внедрения. Сообщение отредактировал Zagolski - 23.05.2020, 08:37 |
 
|
|
23.05.2020, 08:31
Сообщение
#3792
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Я ранее писал, что на втором проходе нужно отключить запись в буфер глубины. Но не привел конкретного примера. Глюков мы не получим, если не сделаем, но производительность малость ухудшится из-за двойной записи в буфер глубины.
Поэтому обязательно лезем в Код void uber_deffer (CBlender_Compile& C, bool hq, LPCSTR _vspec, LPCSTR _pspec, BOOL _aref, LPCSTR _detail_replace=0, bool DO_NOT_FINISH=false); и добавляем в конце Код void uber_deffer (CBlender_Compile& C, bool hq, LPCSTR _vspec, LPCSTR _pspec, BOOL _aref, LPCSTR _detail_replace=0, bool DO_NOT_FINISH=false, bool DO_NOT_WRITE=false); а в теле ф-ции, где есть Код C.r_Pass (vs,ps, FALSE); Меняем его, делая так: Код C.r_Pass (vs,ps, FALSE, TRUE, DO_NOT_WRITE?FALSE:TRUE); В Blender_BmmD.cpp в SE_R2_NORMAL_HQ и в SE_R2_NORMAL_LQ, где у нас вызов uber_deffer, делаем в ней в конце true, вот так: Код uber_deffer (C, true, "impl","impl",false,oT2_Name[0]?oT2_Name:0,true,true); Либо можно в Blender_BmmD.cpp в SE_R2_NORMAL_HQ и в SE_R2_NORMAL_LQ сразу после uber_deffer добавить это: Код C.PassSET_ZB(TRUE, FALSE); В этом случае модификации uber_deffer не требуется. Хотя с другой стороны в PassSET_ZB есть проверка Код if (Pass()) bZWrite = FALSE; То есть при наличии первого инициализированного прохода второму принудительно отключается запись глубины. Так что возможно никаких вышеописанных манипуляций делать и не потребуется, GSC уже все продумала за нас. Но вообще я советую внедрить код в uber_deffer первым вариантом, оно может пригодиться в дальнейшем и даст лучшую масштабируемость при внедрении других фич. Сообщение отредактировал Zagolski - 23.05.2020, 08:55 |
 
|
|
23.05.2020, 11:08
Сообщение
#3793
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Народ, протестите такую штуку у себя и скажите, ускорилась ли загрузка и насколько, стало ли шустее бегать, особенно в меню/ интерфейсе.
Лезем в dx10Texture.cpp в texture_load, в _DDS_2D: сразу после Код LoadInfo.FirstMipLevel = img_loaded_lod; добавляем Код LoadInfo.MipLevels = IMG.MipLevels; |
 
|
|
23.05.2020, 12:01
Сообщение
#3794
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Zagolski, сейчас заценим.
А у меня вообще, бошку открутили: //LoadInfo.FirstMipLevel = img_loaded_lod; Zagolski, шустро, но не понятно так было или стало. Я совет дам по оптимизации. Если вы не используете какие то локации, то выкиньте их из базы. Загрузка увеличивается в разы если выкинуть все локации ЧН, а оставить одну новую например. Текстуры нужно паковать с линковкой к конкретной локации, если на других локациях они не используются - это ускорит загрузку и оптимизирует уровни. |
 
|
|
23.05.2020, 17:32
Сообщение
#3795
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Сто пудово правленый рендер x-ray уделает cryengine 2.
Я довольно долго (года два ) изучал CE, так по игре можно сказать, что это примерно 3.4.3 версия Крайэнгины, примерно ( это я за свой гипер-звук толкую). |
 
|
|
24.05.2020, 22:16
Сообщение
#3796
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Zagolski, я не сразу заметил, но повторная загрузка уровня крашиться.
r_dsgraph_render_landscape(1, true); Лог Вылет 0023:0299F7E8 rClient.dll, CBackend::set_Element(), i:\scs_3_5_1_source_code\clearsky\engine\layers\xrrender\r_backend_runtime.h, 95 0023:029A458B rClient.dll, pLandscape_1(), i:\scs_3_5_1_source_code\clearsky\engine\layers\xrrender\r__dsgraph_render.cpp, 829 0023:029A4674 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 79 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:029A4670 rClient.dll, FixedMAP<float,R_dsgraph::_MatrixItemS,doug_lea_allocator>::recurseLR(), i:\scs_3_5_1_source_code\clearsky\engine\xrcore\fixedmap.h, 78 0023:0299E5DC rClient.dll, CRender::Render(), i:\scs_3_5_1_source_code\clearsky\engine\layers\xrrenderpc_r3\r3_r_render.cpp, 446 0023:0467C779 xrGame.dll, CDialogHolder::shedule_Scale() 0023:0467C779 xrGame.dll, CDialogHolder::shedule_Scale() Всё сюда прилетает IC void CBackend::set_Element (ShaderElement* S, u32 pass) { SPass& P = *(S->passes[pass]); set_States (P.state); set_PS (P.ps); set_VS (P.vs); #ifdef USE_DX10 set_GS (P.gs); #endif // USE_DX10 set_Constants (P.constants); set_Textures (P.T); #ifdef _EDITOR set_Matrices (P.M); #endif } Что то я наверно лишнего нагородил. Сообщение отредактировал Diesel - 24.05.2020, 23:00 |
 
|
|
25.05.2020, 00:57
Сообщение
#3797
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Zagolski, может причина в dx10?
Функции HRESULT dx10State::Apply() { VERIFY(m_pRasterizerState); StateManager.SetRasterizerState(m_pRasterizerState); VERIFY(m_pDepthStencilState); StateManager.SetDepthStencilState(m_pDepthStencilState); if( m_uiStencilRef != -1 ) StateManager.SetStencilRef(m_uiStencilRef); VERIFY(m_pBlendState); StateManager.SetBlendState(m_pBlendState); StateManager.SetAlphaRef(m_uiAlphaRef); SSManager.GSApplySamplers(m_GSSamplers); SSManager.VSApplySamplers(m_VSSamplers); SSManager.PSApplySamplers(m_PSSamplers); return S_OK; } Или тут: void dx10SamplerStateCache::PrepareSamplerStates( HArray &samplers, ID3D10SamplerState *pSS[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT], SHandle pCurrentState[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT], u32 &uiMin, u32 &uiMax ) const { // It seems that sizeof pSS is 4 wor win32! ZeroMemory(pSS, sizeof(pSS[0])*D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT); for ( u32 i=0; i<samplers.size(); ++i ) { if (samplers[i]!=hInvalidHandle) { VERIFY(samplers[i]<m_StateArray.size()); pSS[i] = m_StateArray[samplers[i]].m_pState; } } uiMin = 0; uiMax = D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT-1; } Короче, идёт вылет из-за кеша, памяти. Что то уже там находится, а движок еще туда пытается затолкать повторно, потому вылетает, скорее всего. Нужно чистить кеш. Это компилированные шейдеры в оперативе сбоят. А так на первом заходе на локацию - все зашибись. Вопрос, как очистить память с новой игрой? Сообщение отредактировал Diesel - 25.05.2020, 01:11 |
 
|
|
25.05.2020, 01:16
Сообщение
#3798
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Zagolski, нужно нормальные диффы, а не вот это вот всё А то какой-то собери конструктор сам получается, да вот только мало у кого получается. Ты же вроде форвард делаешь, а правки по деффереду вполне можно и в опенсорс репо показывать, имхо.
-------------------- |
 
|
|
25.05.2020, 11:10
Сообщение
#3799
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Ты же вроде форвард делаешь Уже перешел на деферред. Форвард себя плохо показал на больших открытых пространствах с кучей геометрии, ведь ее приходится рендерить дважды (первый раз для препасса). А на отложенном сделал только препасс ландшафта и травы, хороший буст дало. Хотя еще ландшафт хочу на карту высот переводить. А то какой-то собери конструктор сам получается, да вот только мало у кого получается. Вроде все по полочкам разложено. Проблема в том, что у меня иначе сделано, дифы ничего не дадут. Это мне нужно садиться за ванильный рендер и делать там. Тогда да. Посмотрим в скором времени. Всё сюда прилетает Скорее всего прилетает не туда, а строкой выше: Код SPass& P = *(S->passes[pass]); То есть где-то не активирован второй пасс, возвращает NULL и на этом крашится. Не знаю, может у тебя где-то на ландшафте висит шейдер .s, который через луа инициализируется. В этом случае тогда и там нужно сделать два пасса, типа того: Код function pass_setup_common_0 (shader, t_base, t_second, t_detail) shader : blend (false, blend.one, blend.zero) : zb (true, true) : fog (false) shader :dx10color_write_enable( false, false, false, false) :dx10stencil ( true, cmp_func.always, 255, 255, stencil_op.keep, stencil_op.replace, stencil_op.keep ) :dx10stencil_ref (1) end function pass_setup_common_1 (shader, t_base, t_second, t_detail) shader : blend (false, blend.one, blend.zero) : zb (true, false) : fog (false) shader :dx10zfunc(cmp_func.equal) bla-bla-bla end function normal (shader, t_base, t_second, t_detail) -- pre_pass -- shader :begin ("bla-bla-bla","bla-bla-bla") bla-bla-bla.pass_setup_common_0(shader, t_base, t_second, t_detail) -- main pass -- shader :begin ("bla-bla-bla","bla-bla-bla") bla-bla-bla.pass_setup_common_1(shader, t_base, t_second, t_detail) end Но тут нет поддержки нормалей. Да и тогда должна сразу падать, а не после релоада. Не знаю, может трабла действительно в дх10, я то с ним не связывался, выпилил сразу как недоделку. Чего и тебе советую. А вообще конечно под дебаггером хорошенько погоняй, проверь. Из-за чего конкретно проблема. И еще проверь сам mapLandscape, может он у тебя не очищается корректно. Сообщение отредактировал Zagolski - 25.05.2020, 11:13 |
 
|
|
25.05.2020, 11:55
Сообщение
#3800
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Обнаружил, что на локе Припять в ЗП аж 310 секторов. Во дела! Наверное, на каждом здании сделаны, куда внутрь войти можно. Да и не только. Вообще грамотный ход разрабов, все же геометрии довольно много на локе. Но и трудозатраты на их создание наверняка были ого-го. Отчасти теперь понятно, почему ЗП так шустро бегает. Кстати, на болотах ЧН только 1 сектор, который всю локу охватывает.
Сообщение отредактировал Zagolski - 25.05.2020, 12:44 |
 
|
|
25.05.2020, 13:07
Сообщение
#3801
|
|
Почти Мастер Репутация: 111 Группа: Участник Сообщений: 1158 Награды: 3 Регистрация: 07.08.2015 |
Zagolski, по своему вылету при перезагрузке левела: сейчас проверять свой оригинал буду. Возможно это у меня тянется ранее без этой оптимизации. У меня тут ридер левела новый сделан, как то неважно.
|
 
|
|
Текстовая версия | Сейчас: 26.04.2024, 16:11 |