HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Xash3D > GL_StudioDrawShadows - обратная сторона
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



>>Плоские и мерцающие
У некоторых товарищей (и у меня раньше, когда радеон был) на радеонах они не мерцают. А то, что не на поверхности не ложаться, да плохо.

Сообщить модератору | | IP: Записан
Сообщение: 77785

Старое сообщение 10-05-2011 08:42
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Ну и не проще ли было сделать обёртку - naked-функцию, вписать в ее начало нужное число нопов, потом свой пролог и вызов обычной функции? Если в релиз-версии компилятор всунет свой пролог до твоего асм-кода, все изломается.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 77786

Старое сообщение 10-05-2011 08:47
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Ku2zoff писал:
Они и с дллкой криво работают, я об этом уже писал.

очнись! в релизной версии это было исправлено.
Вообщем путём нехитрова реверс-инжинеринга я восстановил (частично) функцию StudioDrawShadows. Выглядит она вот так
C++ Source Code:
1
void __cdecl R_StudioDrawShadows()
2
{
3
  int		rendermode; // ecx@3
4
  float		shadow_alpha; // ST18_4@4
5
  float		shadow_alpha2; // ST14_4@4
6
  GLenum		depthmode; // [sp+14h] [bp-8h]@6
7
  GLenum		depthmode2; // [sp+14h] [bp-8h]@10
8
 
9
  qglDepthMask( GL_TRUE );
10
 
11
  if( r_shadows.value != 0.0f )
12
  {
13
    if( iCurrentMovetype != MOVETYPE_FLY )
14
    {
15
      rendermode = m_pCurrentEntity->baseline.rendermode;
16
 
17
      if( rendermode == kRenderNormal )
18
      {
19
        shadow_alpha = 1.0 - r_shadowalpha->value * 0.5f;
20
        qglDisable( GL_TEXTURE_2D );
21
        qglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
22
        qglEnable( GL_BLEND );
23
        shadow_alpha2 = 1.0 - shadow_alpha;
24
 
25
        qglColor4f( 0.0f, 0.0f, 0.0f, shadow_alpha2 );
26
 
27
        if( flt_100DB994 == 0.0 || flt_107BA8A8 < 0.5 )
28
          depthmode = GL_LESS;
29
        else depthmode = GL_GREATER;
30
        qglDepthFunc( depthmode );
31
 
32
        sub_10073AA0();
33
 
34
        if( flt_100DB994 == 0.0 || flt_107BA8A8 < 0.5 )
35
          depthmode2 = GL_LEQUAL;
36
        else
37
          depthmode2 = GL_GEQUAL;
38
 
39
        qglDepthFunc( depthmode2 );
40
        qglEnable( GL_TEXTURE_2D );
41
        qglDisable( GL_BLEND );
42
 
43
        qglColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
44
 
45
        if( flt_100DAF14 != 0.0 )
46
          qglShadeModel( GL_SMOOTH );
47
      }
48
    }
49
  }
50
}

Ну а дальше - дело техники

Добавлено 10-05-2011 в 14:35:

ЗЫ. отсюда кстати и становится ясно, что push ecx 1 - это вызов qglDepthMask, который в хаке пропускается и восстановить регистр надо вручную.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 77788

Старое сообщение 10-05-2011 10:35
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Дядя Миша
Нет никакой гарантии, что в твоем ехешнике этот же самый код будет работать, с теми же оффсетами. Этот хак привязан к конкретному машинному коду, а он зависит от кучи вещей - компилятора, уровня оптимизации и т.п.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 77789

Старое сообщение 10-05-2011 11:43
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
XaeroX писал:
Нет никакой гарантии, что в твоем ехешнике этот же самый код будет работать, с теми же оффсетами

гарантии конечно нет. Однако работает

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 77790

Старое сообщение 10-05-2011 12:19
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Дядя Миша промежуточные билды движка будут? А то ждать до сентября долго А adamix'овскую версию я не хочу качать, мало ли чо там.

Сообщить модератору | | IP: Записан
Сообщение: 77791

Старое сообщение 10-05-2011 12:33
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Ku2zoff писал:
промежуточные билды движка будут?

будут но без сорцев и в комплекте с ксаш-модом с сорцами.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 77792

Старое сообщение 10-05-2011 13:18
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 19:12. Новая тема    Ответить
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Xash3D > GL_StudioDrawShadows - обратная сторона
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024