Перейти к контенту

_ХоЗаР_

Проверенные
  • Число публикаций

    118
  • Регистрация

  • Последнее посещение

  • AMKoin

    4,968 [Подарить AMKoin]

Баланс оценок

47

2 подписчика

О _ХоЗаР_

  • День рождения 18.06.2002

Информация

  • Реальное имя
    Шабаев Антон
  • Город
    Оренбург
  • Интересы
    Сталкер

Недавние посетители профиля

2 660 просмотров профиля
  1. @Cornholio Light_Render_Direct_ComputeXFS.cpp в рендере, по идее там считается размер карты теней.
  2. _ХоЗаР_

    Шейдеры

    Ну толстый Gbuffer тоже можно эффективно использовать. Рекомендую вот какую статейку про низкоуровневую оптимизацию шейдров под GCN. Может быть полезно в будущем.
  3. _ХоЗаР_

    Шейдеры

    @Cornholio Оптимизация GBufer`a делалась после переезда на DX10 (Вполне вероятно что разработчики забили на существование Z-buffera) Оптимизация проводится исходя из того что записать 2 RT намного проще (По производительности), чем 3 RT. Декодирование нормалей, применяемое ПЫС не ест много инструкций, и по факту оказывается дешевле чем просто загрузка еще одной текстуры (Но тут точно не скажу, ибо на встройке это действительно так у меня и было, но вот на видеокарте я разницы практически то и не чувствую). Вообще вопрос хороший. В свое время товарищ @Zagolski писал (Возможно это было не на АМК) что более производительной является распаковка позиции из Z-buffer`a. У него знаний, наверняка, побольше чем у меня. У меня все так же
  4. _ХоЗаР_

    Шейдеры

    Честный PBR на пыс текстуры не нужен. Первое время глоссы можно использывать для расчета шероховатости. Для упаковки всех BW карт хватает и двух пыс текстур технических. Карты самосвечения и SSS используются, как правило, не так часто, и не в каждом движке вообще. С некоторыми упущениями правка рендера заключается лишь в передаче цвета (color) в шейдры освещения, и замену типа фильтрации у текстур окружения для просчета IBL (иначе не будет доступа к мип уровням (Для префильтрации можно использывать разные тулзы, я использую модификацию программы от АМД (CubeMapGen вроде)). Ну или еще проще - просто взять и стянуть все с условного репо на гитхабе, там много реализаций PBS. Многие сделаны на статье от Learn OGL. (Самое главное при реализации IBL на рентгене - не забывать учитывать затенение от окружения (У GSC в GBuffer`e оно называется hemi), ну или реализовывать систему проб отражений (что тоже не сложно, на базовом уровне). Да. Рекомендую почитать статейку Олеся о реализации рендера сталкера. Там есть несколько полезная информация.
  5. _ХоЗаР_

    Шейдеры

    Если правильно помню у ксеркса спекглосс, но при желании переписать возможно.
  6. _ХоЗаР_

    Моделирование в MilkShape 3D

    @WinCap По идее через СДК можно экспортнуть в .obj и его импортировать. Иногда так и делаю.
  7. Насчет без серверной части ничего не могу сказать, но думаю стоит копнуть в сторону спавна в персонажа. Как правило, объекты которые спавнятся в персонажей намного быстрее переходят в онлайн. Еще замечал такую штуку. В мультиплеере, если спавнить предмет в персонажа, у него не возможно получить серверную часть по alife():object(obj:id()). Возможно стоит в ту сторону копать.
  8. @hetrikWHY В ЗП есть метод active_detector. Используется аналогично методу active_item. Думаю он есть и в ЧН.@Norman Eisenherz Давным - давно, (может пол года назад) Когда я переносил сортировку инвентаря из DMX мода на ЗП (Используя только оригинальный движкок, аля челенж такой). Я делал так. Окно на рендер отправлял в текущем вызове. В основном XML инвентаря убирал фон, и рендерил его из фейкового окна.
  9. _ХоЗаР_

    Шейдеры

    Прикольная тема. Неплохо показывает себя на плоских поверхностях, да и затрат в производительности почти нет. Не сравниться конечно с настоящими планарами, ибо потери информации тут примерно такие же как и у простых скринспейсов. Вот как выглядят настоящие планары на иксрее. Если позволяют ресурсы, можете их реализовать.
  10. _ХоЗаР_

    Шейдеры

    Можно использывать "перевернутый бекбуфер" как вариант. С мягкой водой его как правило можно не пугаться. Да он не сильно корректный, но в отличии от других скринспейсовых техник, не "дырявый". Вот моя реализация такова вида отражений 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); }
  11. @xer-urg Ну я в ЗП делал примерно так. int dik = get_action_dik(kWPN_RELOAD); if (dik && g_pGameLevel->IR_GetKeyState(dik)) { ... }
  12. _ХоЗаР_

    Шейдеры

    Возможно. Проверяете включен ли пнв при отправки модели на конвеер рендера. Рекомендую курить функции связаные с рендером в XrGame.
  13. Я в скриншоте прикрепил правленую строчку на проверку текущего овнера. Ее тоже желательно повторить. Тогда не будет проблем.
  14. Ну да. Только как я и сказал у меня она отсылает на скрипт.
  15. @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 объектов, но можно делать напрямую тут, ну или вызывать функцию какую. Это были мои первые потуги в двигоправке, так что может быть быдлокодом.
×
×
  • Создать...