Автор Тема: Рендер тени в Vice City  (Прочитано 14889 раз)

Оффлайн Shagg_E

  • Опытный
  • **
  • Сообщений: 480
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #105 : Ноябрь 19, 2016, 05:43:41 pm »
у меня кстати тож чет не работает...

Оффлайн GHOST

  • Призрак
  • Сообщений: 38
  • Репутация: +4/-0
  • RUS-CASA (2008 - 2010)
    • kyronkabron
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #106 : Ноябрь 19, 2016, 06:52:18 pm »
Плагин работает! Тени шикарные! НО.. с запущенным бендикамом, вылетает с ошибкой на рабочий стол (??)

UPD: с запущенным бендикамом.
UPD2: скриншот через принт-скрин.

  Сигнатура проблемы:
  Имя события проблемы:   APPCRASH
  Имя приложения:   gta-vc.exe
  Версия приложения:   0.0.0.0
  Отметка времени приложения:   00000000
  Имя модуля с ошибкой:   shadow.asi
  Версия модуля с ошибкой:   0.0.0.0
  Отметка времени модуля с ошибкой:   582f06f8
  Код исключения:   c0000005
  Смещение исключения:   0000111f
  Версия ОС:   6.1.7600.2.0.0.256.1
  Код языка:   1049
  Дополнительные сведения 1:   0a9e
  Дополнительные сведения 2:   0a9e372d3b4ad19135b953a78882e789
  Дополнительные сведения 3:   0a9e
  Дополнительные сведения 4:   0a9e372d3b4ad19135b953a78882e789

Ознакомьтесь с заявлением о конфиденциальности в Интернете:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419

Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
  C:\Windows\system32\ru-RU\erofflps.txt
« Последнее редактирование: Ноябрь 19, 2016, 07:02:51 pm от GHOST »

Оффлайн FrogByte

  • Призрак
  • Сообщений: 13
  • Репутация: +7/-0
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #107 : Ноябрь 20, 2016, 06:47:16 pm »
Обновил, в этот раз сделал чуть менее криво, вылетать сразу же после загрузки теперь не должно.
Но пока остались некоторые из проблем:
    Рандомный вылет после сворачивания+разворачивания игры на d3d device reset.
    Рандомный вылет из-за обнуления указателя на RwTexture.
    Тени рисуются даже когда они не в области видимости камеры.
    Память выделенная под CCutsceneShadow в структуре CPed не освобождается.

Оффлайн xanser

  • Главный Модератор
  • Опытный
  • *****
  • Сообщений: 494
  • Репутация: +42/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #108 : Ноябрь 21, 2016, 06:51:25 am »
Мне нравится и в таком варианте. Если не приглядываться, даже на отрыв тени можно не обращать внимания. Единственно, что пока бросается в глаза - это мелькающие длинные полосы с противоположной стороны.

« Последнее редактирование: Апрель 21, 2017, 11:37:36 am от xanser »

Оффлайн DK

  • Новичек
  • **
  • Сообщений: 212
  • Репутация: +311/-0
    • dk22pac
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #109 : Ноябрь 22, 2016, 08:03:26 pm »
Версия для сборки с Plugin-SDK VC.
Не идеальный код, но очень короткий.
Код: C++
  1. #include "plugin_vc.h"
  2. #include "game_vc\CCutsceneShadow.h"
  3.  
  4. using namespace plugin;
  5.  
  6. class PedShadows {
  7. public:
  8.     class PedShadow {
  9.     public:
  10.         CCutsceneShadow *m_pRTShadow;
  11.  
  12.         PedShadow(CPed *) : m_pRTShadow(nullptr) {}
  13.         ~PedShadow() { delete m_pRTShadow; }
  14.     };
  15.  
  16.     static PedExtendedData<PedShadow> pedShadow;
  17.  
  18.     static void UpdatePedShadow(CPed *ped, float sideX, float sideY, float displacementX, float displacementY, float frontX, float frontY) {
  19.         CCutsceneShadow *pShadow = pedShadow.Get(ped).m_pRTShadow;
  20.         float _savedVal = ped->m_fEventOrThreatX;
  21.         *reinterpret_cast<CCutsceneShadow **>(&ped->m_fEventOrThreatX) = pShadow;
  22.         if (pShadow) {
  23.             if (pShadow->IsInitialized())
  24.                 pShadow->UpdateForCutscene();
  25.             plugin::Call<0x56D5C0>(ped, sideX, sideY, displacementX, displacementY, frontX, frontY);
  26.         }
  27.         else
  28.             plugin::Call<0x56D9F0>(ped, sideX, sideY, displacementX, displacementY, frontX, frontY);
  29.         ped->m_fEventOrThreatX = _savedVal;
  30.     }
  31.  
  32.     static void CreatePedShadow(CPed *ped, int) {
  33.         PedShadow &shadow = pedShadow.Get(ped);
  34.         if (!shadow.m_pRTShadow) {
  35.             shadow.m_pRTShadow = new CCutsceneShadow;
  36.             shadow.m_pRTShadow->Create(ped->m_pRwObject, 10, 1, 1, 1);
  37.         }
  38.     }
  39.    
  40.     PedShadows() {
  41.         patch::RedirectCall(0x56DCBA, UpdatePedShadow);
  42.         Events::pedSetModelEvent += CreatePedShadow;
  43.     }
  44. } shadows;
  45.  
  46. PedExtendedData<PedShadows::PedShadow> PedShadows::pedShadow;
Для сборки нужен последний plugin-vc с обновлениями.
Plugin-SDK
gta_sa.idb
Skype-конференция по моддингу https://join.skype.com/jqGbs97avigh

Оффлайн Shagg_E

  • Опытный
  • **
  • Сообщений: 480
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #110 : Ноябрь 22, 2016, 10:09:06 pm »
Версия для сборки с Plugin-SDK VC.
Не идеальный код, но очень короткий.
Может кто скомпилить это? У меня пару дней назад хард полетел, и я еще не установил нужный софт, версия FrogByte почему-то не работает, а охота уже глянуть на тени у педов!

Оффлайн DK

  • Новичек
  • **
  • Сообщений: 212
  • Репутация: +311/-0
    • dk22pac
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #111 : Ноябрь 23, 2016, 02:47:01 am »
С тенями дейстивтельно какая-то хрень происходит при потере девайса... Наверное, это случается и со стандартными катсценовскими тенями. Я ещё думал, зачем в СА добавили код для перезагрузки растров теней.
Какой-то баг в RenderWare, скорее всего. Что странно, ведь там продумана автоматическая перезагрузка видео-растров при пересоздании девайса.
Plugin-SDK
gta_sa.idb
Skype-конференция по моддингу https://join.skype.com/jqGbs97avigh

Оффлайн xanser

  • Главный Модератор
  • Опытный
  • *****
  • Сообщений: 494
  • Репутация: +42/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #112 : Ноябрь 23, 2016, 04:28:16 am »
Shagg_E, второй вариант от FrogByte должен работать, посмотри второе вложение, причем у меня не проявилось еще ни одного вылета, я использую оконный режим, может это сохраняет девайс. Хорошо бы действительно вариант DK тоже иметь в скомпилированном виде хотя бы для теста, не каждый заморочится с SDK. Больше всего в этом всем напрягает присутствие всяческих лишних теневых выбросов, которые через какое-то время наводят на мысль вообще отказаться от использования теней, может быть получится допилить со временем.

Оффлайн Shagg_E

  • Опытный
  • **
  • Сообщений: 480
  • Репутация: +14/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Рендер тени в Vice City
« Ответ #113 : Ноябрь 23, 2016, 08:59:37 pm »
Shagg_E, второй вариант от FrogByte должен работать
Упс - не заметил: действительно работает! Конечно, есть косяки, но всё же - впечатляет!
Что интересно: как и у катсценовых моделей, освещение не совпадает с солнцем, однако тень строится каким-то другим способом.
В связи с чем я повторю вопрос: неужели всё это проще примитивного применения педам теней катсценовых персонажей? Я думал, тут можно будет запилить похожий трюк, как когда динамическое освещение нацепили на статичные объекты...

Наверное, это случается и со стандартными катсценовскими тенями.
Не замечал. Единственный минус катсценовых теней(помимо несовпадения с солнцем) - они пропадают(обрезаются) где-то в районе 2-3х метров над землей. Я имею в виду, если персонаж либо выше 2-3х метров, либо высоко "подпрыгнет" относительно поверхности, на которую ложится тень - та обрежется на том месте, где у персонажа уровень 2-3х метров. Про 2-3 метра(юнита) - инфа не точная(нечем было измерить), но очень близкая к реальности.
« Последнее редактирование: Ноябрь 23, 2016, 09:06:15 pm от Shagg_E »

Оффлайн xanser

  • Главный Модератор
  • Опытный
  • *****
  • Сообщений: 494
  • Репутация: +42/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #114 : Январь 11, 2017, 05:34:56 am »
Если удалось сделать тень в движении, получится ли преобразовать этот алгоритм для неподвижных объектов? Перебор всех объектов можно осуществить например в функции 0x488810 CEntity::PreRender, как я показывал тут http://forum.gtabuilder.ru/index.php?topic=96.msg1918#msg1918

Оффлайн SomeRandomGuy

  • Призрак
  • Сообщений: 1
  • Репутация: +0/-0
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #115 : Ноябрь 13, 2017, 12:07:38 pm »
Позор, что он не может работать вместе с SkyGFX из-за функции d3d8to9, которая разбивает плагин теней

Оффлайн Lacrix84

  • Призрак
  • Сообщений: 3
  • Репутация: +0/-0
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #116 : Ноябрь 16, 2017, 12:11:09 am »
А сделать такие же тени для транспорта можно?

Оффлайн spartaque12

  • Призрак
  • Сообщений: 9
  • Репутация: +0/-0
    • Просмотр профиля
Re: Рендер тени в Vice City
« Ответ #117 : Ноябрь 26, 2017, 05:59:21 am »
Позор, что он не может работать вместе с SkyGFX из-за функции d3d8to9, которая разбивает плагин теней
при чем тут позор , тень может работать только на стоковом d3d8 , со skygfx'ом она не дружит т.к. там враппер , также и мвл не дружит со skygfx