-
Число публикаций
118 -
Регистрация
-
Последнее посещение
-
AMKoin
4,968 [Подарить AMKoin]
Баланс оценок
47О _ХоЗаР_
- День рождения 18.06.2002
Информация
-
Реальное имя
Шабаев Антон
-
Город
Оренбург
-
Интересы
Сталкер
Недавние посетители профиля
2 641 просмотр профиля
-
Редактирование движка X-Ray
_ХоЗаР_ ответил на тему форума автора Rolan в Скрипты / конфиги / движок
@Cornholio Light_Render_Direct_ComputeXFS.cpp в рендере, по идее там считается размер карты теней. -
Ну толстый Gbuffer тоже можно эффективно использовать. Рекомендую вот какую статейку про низкоуровневую оптимизацию шейдров под GCN. Может быть полезно в будущем.
-
@Cornholio Оптимизация GBufer`a делалась после переезда на DX10 (Вполне вероятно что разработчики забили на существование Z-buffera) Оптимизация проводится исходя из того что записать 2 RT намного проще (По производительности), чем 3 RT. Декодирование нормалей, применяемое ПЫС не ест много инструкций, и по факту оказывается дешевле чем просто загрузка еще одной текстуры (Но тут точно не скажу, ибо на встройке это действительно так у меня и было, но вот на видеокарте я разницы практически то и не чувствую). Вообще вопрос хороший. В свое время товарищ @Zagolski писал (Возможно это было не на АМК) что более производительной является распаковка позиции из Z-buffer`a. У него знаний, наверняка, побольше чем у меня. У меня все так же
-
Честный PBR на пыс текстуры не нужен. Первое время глоссы можно использывать для расчета шероховатости. Для упаковки всех BW карт хватает и двух пыс текстур технических. Карты самосвечения и SSS используются, как правило, не так часто, и не в каждом движке вообще. С некоторыми упущениями правка рендера заключается лишь в передаче цвета (color) в шейдры освещения, и замену типа фильтрации у текстур окружения для просчета IBL (иначе не будет доступа к мип уровням (Для префильтрации можно использывать разные тулзы, я использую модификацию программы от АМД (CubeMapGen вроде)). Ну или еще проще - просто взять и стянуть все с условного репо на гитхабе, там много реализаций PBS. Многие сделаны на статье от Learn OGL. (Самое главное при реализации IBL на рентгене - не забывать учитывать затенение от окружения (У GSC в GBuffer`e оно называется hemi), ну или реализовывать систему проб отражений (что тоже не сложно, на базовом уровне). Да. Рекомендую почитать статейку Олеся о реализации рендера сталкера. Там есть несколько полезная информация.
-
Если правильно помню у ксеркса спекглосс, но при желании переписать возможно.
-
@WinCap По идее через СДК можно экспортнуть в .obj и его импортировать. Иногда так и делаю.
-
Редактирование движка X-Ray
_ХоЗаР_ ответил на тему форума автора Rolan в Скрипты / конфиги / движок
Насчет без серверной части ничего не могу сказать, но думаю стоит копнуть в сторону спавна в персонажа. Как правило, объекты которые спавнятся в персонажей намного быстрее переходят в онлайн. Еще замечал такую штуку. В мультиплеере, если спавнить предмет в персонажа, у него не возможно получить серверную часть по alife():object(obj:id()). Возможно стоит в ту сторону копать. -
@hetrikWHY В ЗП есть метод active_detector. Используется аналогично методу active_item. Думаю он есть и в ЧН.@Norman Eisenherz Давным - давно, (может пол года назад) Когда я переносил сортировку инвентаря из DMX мода на ЗП (Используя только оригинальный движкок, аля челенж такой). Я делал так. Окно на рендер отправлял в текущем вызове. В основном XML инвентаря убирал фон, и рендерил его из фейкового окна.
-
Прикольная тема. Неплохо показывает себя на плоских поверхностях, да и затрат в производительности почти нет. Не сравниться конечно с настоящими планарами, ибо потери информации тут примерно такие же как и у простых скринспейсов. Вот как выглядят настоящие планары на иксрее. Если позволяют ресурсы, можете их реализовать.
-
Можно использывать "перевернутый бекбуфер" как вариант. С мягкой водой его как правило можно не пугаться. Да он не сильно корректный, но в отличии от других скринспейсовых техник, не "дырявый". Вот моя реализация такова вида отражений float4 ScreenSpaceLocalReflections (float3 vspos, float3 vsnorm) //Initial beam length { float3 refl_vec = normalize(reflect(normalize(vspos), normalize(vsnorm))); float2 reflPos = saturate(position_get_tc(refl_vec)); // We get the pixel position in Screen Space of the reflected geometry float canrefl = refl_vec.z > 0.0 ? 1.0 : 0.0; float4 hit_pos = gbuffer_load_position(reflPos, 1e3); // Sample s_position canrefl *= smoothstep(length(vspos), length(vspos) * 1.15, length(hit_pos)); float borderAtten = GetBorderAtten(reflPos, 0.035f); // Grease the edges of the reflections for a smoother transition float3 color; // Sample Color #ifdef USE_DX9_LOAD color = tex2D(s_image, reflPos); #else color = s_image.Sample(smp_nofilter, reflPos); #endif return float4(color, borderAtten * canrefl); }
-
Редактирование движка X-Ray
_ХоЗаР_ ответил на тему форума автора Rolan в Скрипты / конфиги / движок
@xer-urg Ну я в ЗП делал примерно так. int dik = get_action_dik(kWPN_RELOAD); if (dik && g_pGameLevel->IR_GetKeyState(dik)) { ... } -
Возможно. Проверяете включен ли пнв при отправки модели на конвеер рендера. Рекомендую курить функции связаные с рендером в XrGame.
-
Редактирование движка X-Ray
_ХоЗаР_ ответил на тему форума автора Rolan в Скрипты / конфиги / движок
Я в скриншоте прикрепил правленую строчку на проверку текущего овнера. Ее тоже желательно повторить. Тогда не будет проблем. -
Редактирование движка X-Ray
_ХоЗаР_ ответил на тему форума автора Rolan в Скрипты / конфиги / движок
Ну да. Только как я и сказал у меня она отсылает на скрипт. -
Редактирование движка X-Ray
_ХоЗаР_ ответил на тему форума автора Rolan в Скрипты / конфиги / движок
@ARTLantist, вот что я васянил по этому поводу для Выбора. UIActorMenu_action.cpp { Ivector2 it_cell_pos = new_owner->PickCell(GetUICursor().GetCursorPosition()); CUICellItem* cell = (it_cell_pos.x > -1 && it_cell_pos.y > -1)?new_owner->GetCellAt(it_cell_pos).m_item:NULL; PIItem niitem = cell ? (PIItem)cell->m_pData : NULL; luabind::functor<void> StackCalback; if (niitem && ai().script_engine().functor("_a.stack_script_calback", StackCalback)) StackCalback(CurrentIItem()->object().ID(), niitem->object().ID()); } if ( old_owner==new_owner) { return false; } В _a.stack_script_calback в данном случае идет передача ID объектов, но можно делать напрямую тут, ну или вызывать функцию какую. Это были мои первые потуги в двигоправке, так что может быть быдлокодом.
УЧИМСЯ МОДДИНГУ
ИГРАЕМ В МОДЫ НА ТЧ
ИГРАЕМ В МОДЫ НА ЧН И ЗП
- [ЧН] OGSM CS 1.8 CE Fixes
- [ЧН] HARDWARMOD 3.2
- [ЗП] The Long Road
- [ЧН] New vision of War
- [ЧН] Old Good Stalker Mod - Clear Sky
- [ЗП] Unofficial Patch
- [ЗП] Смерти вопреки
- [ЗП] Контракт на хорошую жизнь
- [ЗП] Shoker Weapon Mod 2.1
- [ЗП] Hardcore pack for SGM 2.2
- [ЗП] Контракт Синдиката
- [ЗП] Клондайк 2.0
- ...и другие моды
ПОЛЕЗНОЕ И РАЗНОЕ