Здравствуйте, гость ( Авторизация | Регистрация )
![]() ![]() |
14.03.2009, 22:30
Сообщение
#41
|
|
![]() Игровой Бог Репутация: 1690
Группа: Участник Сообщений: 7021 Награды: 11 Регистрация: 22.02.2006 |
Классная прога! Запустил ждалкера в 320x240. Причем fps заметно не подрос, что подтверждает теорию о том, что все билды вплоть до ЧН больше грузят проц, чем видяху.
Кто не хочет юзать enb.dll - можно закомментировать или вообще удалить строчку proxy = enb.dll в proxy.ini У меня вопрос: а возможно ли через этот "переходник" реализовать что-нибудь типа смены fov напрямую через d3d или вывод в отдельный лог списка всех вызываемых шейдеров и функций из них (независимо от лога игры, разумеется) ? Сообщение отредактировал macron - 14.03.2009, 22:42 |
|
 
|
|
|
|
|
15.03.2009, 07:08
Сообщение
#42
|
|
![]() Продвинутый геймер Репутация: 57
Группа: Участник Сообщений: 343 Награды: 1 Регистрация: 03.11.2008 |
macron ну ведь fov игры можно менять прям в user.ltx,
-------------------- Лучшая благодарность + в репу. ![]() |
|
 
|
|
15.03.2009, 10:28
Сообщение
#43
|
|
![]() не шалю, никого не трогаю, починяю примус Репутация: 230
Группа: Забанен Сообщений: 2277 Награды: 1 Регистрация: 15.05.2007 |
возможно ли через этот "переходник" реализовать что-нибудь типа смены fov можно попробовать, но для этого вот нужно для каждой вызываемой ф-ии удалить из строки аргументов типы данных и поставить в конце строки ";", начиная со 142 строки, например: было: Код //----------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE CDirect3DDevice9::CreateVolumeTexture(THIS_ UINT Width,UINT Height,UINT Depth,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DVolumeTexture9** ppVolumeTexture,HANDLE* pSharedHandle) { return Direct3DDevice9->CreateVolumeTexture(THIS_ UINT Width,UINT Height,UINT Depth,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DVolumeTexture9** ppVolumeTexture,HANDLE* pSharedHandle) } нужно: Код //----------------------------------------------------------------------------- HRESULT STDMETHODCALLTYPE CDirect3DDevice9::CreateVolumeTexture(THIS_ UINT Width,UINT Height,UINT Depth,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DVolumeTexture9** ppVolumeTexture,HANDLE* pSharedHandle) { return Direct3DDevice9->CreateVolumeTexture(Width, Height, Depth, Levels, Usage, Format, Pool, ppVolumeTexture, pSharedHandle); } вот если б нашелся доброволец... а то у меня уже в глазах рябит -------------------- i know where you live
|
|
 
|
|
15.03.2009, 11:01
Сообщение
#44
|
|
![]() Игровой Бог Репутация: 1690
Группа: Участник Сообщений: 7021 Награды: 11 Регистрация: 22.02.2006 |
можно попробовать, но для этого вот в этом файле нужно для каждой вызываемой ф-ии удалить из строки аргументов типы данных и поставить в конце строки ";", начиная со 142 строки Спасибо, может пригодится. ЖуКа, ты путаешь hud_fov (дальность прорисовки рук) и fov (угол обзора). |
|
 
|
|
15.03.2009, 11:17
Сообщение
#45
|
|
![]() не шалю, никого не трогаю, починяю примус Репутация: 230
Группа: Забанен Сообщений: 2277 Награды: 1 Регистрация: 15.05.2007 |
исправленный файл сюда выкладывайте, я его к проге прикручу. ну или сам вечером переделаю
-------------------- i know where you live
|
|
 
|
|
15.03.2009, 12:10
Сообщение
#46
|
|
![]() Опытный Игрок Репутация: 20
Группа: Участник Сообщений: 67 Награды: 1 Регистрация: 02.03.2009 |
Вот файл Вроде нигде не накосячил
|
|
 
|
|
15.03.2009, 15:14
Сообщение
#47
|
|
![]() не шалю, никого не трогаю, починяю примус Репутация: 230
Группа: Забанен Сообщений: 2277 Награды: 1 Регистрация: 15.05.2007 |
melnik, не качается
-------------------- i know where you live
|
|
 
|
|
15.03.2009, 15:31
Сообщение
#48
|
|
![]() Опытный Игрок Репутация: 20
Группа: Участник Сообщений: 67 Награды: 1 Регистрация: 02.03.2009 |
p.s. Посмотри строки 247, 272 и 277. Не совсем уверен, что они правильные. Сообщение отредактировал melnik - 15.03.2009, 15:36 |
|
 
|
|
15.03.2009, 15:36
Сообщение
#49
|
|
![]() не шалю, никого не трогаю, починяю примус Репутация: 230
Группа: Забанен Сообщений: 2277 Награды: 1 Регистрация: 15.05.2007 |
супер! спс, сейчас попробую угол обзора поменять.
з.ы. с первого раза компилятор проглотил Код 1>------ Build started: Project: d3d9, Configuration: Debug Win32 ------
1>Compiling... 1>device.cpp 1>Linking... 1>LINK : C:\Documents and Settings\ivan\Мои документы\Visual Studio 2005\Projects\proxy\Debug\d3d9.dll not found or not built by the last incremental link; performing full link 1> Creating library C:\Documents and Settings\ivan\Мои документы\Visual Studio 2005\Projects\proxy\Debug\d3d9.lib and object C:\Documents and Settings\ivan\Мои документы\Visual Studio 2005\Projects\proxy\Debug\d3d9.exp 1>Embedding manifest... 1>Build log was saved at "file://c:\Documents and Settings\ivan\Мои документы\Visual Studio 2005\Projects\proxy\Debug\BuildLog.htm" 1>d3d9 - 0 error(s), 0 warning(s) ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== -------------------- i know where you live
|
|
 
|
|
15.03.2009, 16:36
Сообщение
#50
|
|
![]() не шалю, никого не трогаю, починяю примус Репутация: 230
Группа: Забанен Сообщений: 2277 Награды: 1 Регистрация: 15.05.2007 |
вроде оно, пробуем
з.ы. правда пришлось заодно еще кое-что поменять: ![]() пришлось от дуба установить плоскости отсечения zf и zn, т.к. эти значения не передаются в ф-ию , а передается структура . если кто разберется в значениях этой структуры, то было бы неплохо, значение fov и отсекающих поверхностей как-то через нее передаются. -------------------- i know where you live
|
|
 
|
|
15.03.2009, 16:47
Сообщение
#51
|
|
![]() Игровой Бог Репутация: 1690
Группа: Участник Сообщений: 7021 Награды: 11 Регистрация: 22.02.2006 |
centrino, круто! Запускается. А менять то как?
|
|
 
|
|
15.03.2009, 17:25
Сообщение
#52
|
|
![]() не шалю, никого не трогаю, починяю примус Репутация: 230
Группа: Забанен Сообщений: 2277 Награды: 1 Регистрация: 15.05.2007 |
пока никак, это какой-то не такой fov, то есть определенно что-то происходит, но внешне ничего не меняется
-------------------- i know where you live
|
|
 
|
|
16.03.2009, 01:36
Сообщение
#53
|
|
![]() не шалю, никого не трогаю, починяю примус Репутация: 230
Группа: Забанен Сообщений: 2277 Награды: 1 Регистрация: 15.05.2007 |
короче получилось, ну почти
вот , находим в файле device.cpp строку №249, она выглядит так: D3DXMatrixPerspectiveFovLH( (D3DXMATRIX*)pMatrix, D3DX_PI/4.0f, _aspect, 0.0f, 0.9f ); где 1-й параметр - это какая-то хитрая структура, в которой мы, в числе прочего, должны получить fov в результате выполнения этой ф-ии 2-й параметр - это он и есть, устанавливаемый fov 3-й параметр - перспектива, я установил ее равной отношению сторон экрана ну и последние 2 параметра - это расстояния до отсекающих плоскостей. если эту строку закомментить, то будут использованы значения структуры pMatrix установленные разрабами, которые передаются в нашу прокси-функцию 2-м параметром, тогда все работает как надо, но и fov соответственно остается прежним. вобщем если у кого есть visual studio 2005 - экспериментируйте, авось чего о получится з.ы. позже добавлю возможность изменять эти параметры через ini -------------------- i know where you live
|
|
 
|
|
16.03.2009, 02:17
Сообщение
#54
|
|
![]() не шалю, никого не трогаю, починяю примус Репутация: 230
Группа: Забанен Сообщений: 2277 Награды: 1 Регистрация: 15.05.2007 |
как-то так -------------------- i know where you live
|
|
 
|
|
16.03.2009, 12:18
Сообщение
#55
|
|
![]() не шалю, никого не трогаю, починяю примус Репутация: 230
Группа: Забанен Сообщений: 2277 Награды: 1 Регистрация: 15.05.2007 |
дано:
параметры, которыми заполняется структура D3DXMATRIX из msdn: Код The return value for this function is the same value returned in the pOut parameter. In this way, the D3DXMatrixPerspectiveFovLH function can be used as a parameter for another function. This function computes the returned matrix as shown: xScale 0 0 0 0 yScale 0 0 0 0 zf/(zf-zn) 1 0 0 -zn*zf/(zf-zn) 0 where: yScale = cot(fovY/2) xScale = yScale / aspect ratio и параметры, которыми эта структура заполняется где-то внутри движка: Цитата 1.1: 1.122454 1.2: 0.000000 1.3: 0.000000 1.4: 0.000000 2.1: 0.000000 2.2: 1.496606 2.3: 0.000000 2.4: 0.000000 3.1: 0.000000 3.2: 0.000000 3.3: 1.000834 3.4: 1.000000 4.1: 0.000000 4.2: 0.000000 4.3: -0.200167 4.4: 0.000000 я так понимаю, что если правильно решить систему алгебраических уравнений: zf/(zf-zn) = 1.000834 -zn*zf/(zf-zn) = -0.200167 то будут найдены два последних параметра ф-ции D3DXMatrixPerspectiveFovLH() которая устанавливает угол обзора Сообщение отредактировал centrino - 16.03.2009, 12:19 -------------------- i know where you live
|
|
 
|
|
16.03.2009, 17:45
Сообщение
#56
|
|
![]() не шалю, никого не трогаю, починяю примус Репутация: 230
Группа: Забанен Сообщений: 2277 Награды: 1 Регистрация: 15.05.2007 |
в общем ничего не получилось
даже ничтожные расхождения в следствие погрешности компилятора вызывают вот такой эффект, единственный вариант заставить игру работать как надо - это считать значения из памяти и записать их в память напрямую: Код HRESULT STDMETHODCALLTYPE CDirect3DDevice9::SetTransform(THIS_ D3DTRANSFORMSTATETYPE State,CONST D3DMATRIX* pMatrix) { float xScale = pMatrix->_11; float yScale = pMatrix->_22; void* vbuffer = (D3DMATRIX*) pMatrix; char* buffer = reinterpret_cast<char*>(vbuffer); char* xScaleBuf = reinterpret_cast<char*>(&xScale); char* yScaleBuf = reinterpret_cast<char*>(&yScale); for(int i = 0; i < sizeof(float); i++ ) buffer[i] = xScaleBuf[i]; for(int i = 0; i < sizeof(float); i++ ) buffer[(sizeof(float) * 5) + i] = yScaleBuf[i]; return Direct3DDevice9->SetTransform(State, pMatrix); } так-что надо искать другой способ з.ы. единственно, что мне удалось выяснить в ходе экспериментов, что риальне fov в билде равен 67,5 градусам и, что фрустум (так кажется называется пространство между отсекающими плоскостями) в финалке отличается. -------------------- i know where you live
|
|
 
|
|
16.03.2009, 18:24
Сообщение
#57
|
|
![]() Игровой Бог Репутация: 1690
Группа: Участник Сообщений: 7021 Награды: 11 Регистрация: 22.02.2006 |
з.ы. единственно, что мне удалось выяснить в ходе экспериментов, что риальне fov в билде равен 67,5 градусам и, Опять эта цифра. 67,5 (по меркам движка) это fov в последних версиях ТЧ и в ЧН. Именно на ее основе я делал патчеры, переключающие на 90. Но там она была в явном виде в xrgame.dll или ловилась в памяти. Чисто визуально в билде, как и в 2215, fov намного больше, чем в ТЧ-ЧН. А как насчет записи в лог обращений к файлам шейдеров? Возможно ли такое провернуть? |
|
 
|
|
16.03.2009, 18:40
Сообщение
#58
|
|
![]() Источник Излучения Репутация: 508
Группа: Участник Сообщений: 2295 Награды: 3 Регистрация: 22.11.2005 |
centrino, о_О такой психодел на скринах... скинь наработку
|
|
 
|
|
16.03.2009, 19:00
Сообщение
#59
|
|
![]() не шалю, никого не трогаю, починяю примус Репутация: 230
Группа: Забанен Сообщений: 2277 Награды: 1 Регистрация: 15.05.2007 |
А как насчет записи в лог обращений к файлам шейдеров? Возможно ли такое провернуть? думаю тут проблем быть не должно, завтра попробую Хэш, лови запускать на финалке, ибо на билде психодел настолько крут, что даже из подвала сидоровича вылезти вряд ли получится код: Сообщение отредактировал centrino - 16.03.2009, 19:01 -------------------- i know where you live
|
|
 
|
|
16.03.2009, 19:23
Сообщение
#60
|
|
![]() Источник Излучения Репутация: 508
Группа: Участник Сообщений: 2295 Награды: 3 Регистрация: 22.11.2005 |
шайтане...
|
|
 
|
|
![]() ![]() |
| Текстовая версия | Сейчас: 10.03.2026, 09:30 |