S.T.A.L.K.E.R.: Global War <<<>>> Инструмент - теперь и для ТЧ! <<<>>> NS OGSR: Сборка от 30.12.2023
-
Число публикаций
118 -
Регистрация
-
Последнее посещение
-
AMKoin
4,928 [Подарить AMKoin]
Сообщения опубликованы _ХоЗаР_
-
-
13 часов назад, Cornholio сказал:
толстый gbuffer
Ну толстый Gbuffer тоже можно эффективно использовать. Рекомендую вот какую статейку про низкоуровневую оптимизацию шейдров под GCN. Может быть полезно в будущем.
- 1
-
@Cornholio Оптимизация GBufer`a делалась после переезда на DX10 (Вполне вероятно что разработчики забили на существование Z-buffera) Оптимизация проводится исходя из того что записать 2 RT намного проще (По производительности), чем 3 RT. Декодирование нормалей, применяемое ПЫС не ест много инструкций, и по факту оказывается дешевле чем просто загрузка еще одной текстуры (Но тут точно не скажу, ибо на встройке это действительно так у меня и было, но вот на видеокарте я разницы практически то и не чувствую). Вообще вопрос хороший. В свое время товарищ @Zagolski писал (Возможно это было не на АМК) что более производительной является распаковка позиции из Z-buffer`a. У него знаний, наверняка, побольше чем у меня.
12 часов назад, Cornholio сказал:Я не программист
У меня все так же
- 1
-
05.09.2021 в 04:47, Cornholio сказал:
А самое плохое - что для честного PBR надо перерисовывать все текстуры
Честный PBR на пыс текстуры не нужен. Первое время глоссы можно использывать для расчета шероховатости. Для упаковки всех BW карт хватает и двух пыс текстур технических. Карты самосвечения и SSS используются, как правило, не так часто, и не в каждом движке вообще. С некоторыми упущениями правка рендера заключается лишь в передаче цвета (color) в шейдры освещения, и замену типа фильтрации у текстур окружения для просчета IBL (иначе не будет доступа к мип уровням (Для префильтрации можно использывать разные тулзы, я использую модификацию программы от АМД (CubeMapGen вроде)).
05.09.2021 в 04:47, Cornholio сказал:выдирай код из Unreal, Unity, Filament
Ну или еще проще - просто взять и стянуть все с условного репо на гитхабе, там много реализаций PBS. Многие сделаны на статье от Learn OGL. (Самое главное при реализации IBL на рентгене - не забывать учитывать затенение от окружения (У GSC в GBuffer`e оно называется hemi), ну или реализовывать систему проб отражений (что тоже не сложно, на базовом уровне).
05.09.2021 в 04:47, Cornholio сказал:некое приближение к физическому отображению свойств света
Да. Рекомендую почитать статейку Олеся о реализации рендера сталкера. Там есть несколько полезная информация.
- 1
-
02.09.2021 в 14:09, Lagrange сказал:
metall/roughness
13 часов назад, FozeSt сказал:Xerxes1138
Если правильно помню у ксеркса спекглосс, но при желании переписать возможно.
-
@WinCap По идее через СДК можно экспортнуть в .obj и его импортировать. Иногда так и делаю.
- 1
-
11.06.2021 в 23:47, НаноБот сказал(а):
Кто знает, как быстро создать CGameObject без создания серверной части
Насчет без серверной части ничего не могу сказать, но думаю стоит копнуть в сторону спавна в персонажа. Как правило, объекты которые спавнятся в персонажей намного быстрее переходят в онлайн. Еще замечал такую штуку. В мультиплеере, если спавнить предмет в персонажа, у него не возможно получить серверную часть по alife():object(obj:id()). Возможно стоит в ту сторону копать.
-
@hetrikWHY В ЗП есть метод active_detector. Используется аналогично методу active_item. Думаю он есть и в ЧН.@Norman Eisenherz Давным - давно, (может пол года назад) Когда я переносил сортировку инвентаря из DMX мода на ЗП (Используя только оригинальный движкок, аля челенж такой). Я делал так. Окно на рендер отправлял в текущем вызове. В основном XML инвентаря убирал фон, и рендерил его из фейкового окна.
-
8 минут назад, Cornholio сказал(а):
я сейчас вот это читаю и осмысливаю
Прикольная тема. Неплохо показывает себя на плоских поверхностях, да и затрат в производительности почти нет. Не сравниться конечно с настоящими планарами, ибо потери информации тут примерно такие же как и у простых скринспейсов. Вот как выглядят настоящие планары на иксрее. Если позволяют ресурсы, можете их реализовать.
-
15 минут назад, Cornholio сказал(а):
просто заменить на Screen Space Refection
Можно использывать "перевернутый бекбуфер" как вариант. С мягкой водой его как правило можно не пугаться. Да он не сильно корректный, но в отличии от других скринспейсовых техник, не "дырявый". Вот моя реализация такова вида отражений
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); }
- 1
- 1
-
@xer-urg Ну я в ЗП делал примерно так.
int dik = get_action_dik(kWPN_RELOAD); if (dik && g_pGameLevel->IR_GetKeyState(dik)) { ... }
- 1
- 1
-
27.03.2021 в 00:38, Biblia сказал(а):
только при условии включенно ПНВ
Возможно. Проверяете включен ли пнв при отправки модели на конвеер рендера. Рекомендую курить функции связаные с рендером в XrGame.
-
2 часа назад, ARTLantist сказал(а):
как я перемещу предмет в другой слот
Я в скриншоте прикрепил правленую строчку на проверку текущего овнера. Ее тоже желательно повторить. Тогда не будет проблем.
-
18 часов назад, ARTLantist сказал(а):
у тебя она норм вызывается?
Ну да. Только как я и сказал у меня она отсылает на скрипт.
-
@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 объектов, но можно делать напрямую тут, ну или вызывать функцию какую. Это были мои первые потуги в двигоправке, так что может быть быдлокодом.
-
14 минут назад, Марка демченков сказал(а):
Так вопрос - какого хрена он идет как решение Visual studio
Он не идет как решение VS. Он просто идет в комплекте с Исходным кодом движка, и связан с ним.
15 минут назад, Марка демченков сказал(а):что код для С++ Билдера
Да. 6го или 7го. Точно не помню. Вообще инструкция по сборке есть в сети. Кажется на сайте gameru в сталкерском форуме. Если найду ссылочку прикреплю.
16 минут назад, Марка демченков сказал(а):он компилился в VS
Собирается он полностью (на самом деле нет, проекты сломаны частично) в билдере.
- 1
-
27.02.2021 в 15:01, ARTLantist сказал(а):
а не одну с текстом х3
Если мне не изменяет память то за это отвечает параметр group_similar в XML файле инвентаря. Для ЗП это actor_menu(_16).xml.
-
1 час назад, XinnogeN XinnogeN сказал(а):
Ток релизную.
.PDB закидывал, старт через студию?
-
Попробуй в r3.cpp и r4.cpp заменить строчки r3\\objects\\ на r3\\new_objects\\
Может быть поможет.
-
1 час назад, XinnogeN XinnogeN сказал(а):
your video card doesn't meet game requirements try to lower game settings.
Классический тролинг от разработчиков. Смотрите файл лога. Там будут шейдры, на которые агрится игра. Думаю следует пахать от них.
- 2
-
Только что, XinnogeN XinnogeN сказал(а):
Т.е. дописать функцию all() будет правильней ?
В ЗП так вроде так и сделали. По идее этот шейдр влияет на atoc. Сглаживание альфатеста с MSAA. Сам msaa может не работать, а вот эта штука работать должна.
- 1
-
6 часов назад, XinnogeN XinnogeN сказал(а):
P == P0 && N == N0
Недоделка оригинала. Компилятор не может сравнивать трехмерные вектора. Если правильно помню, функция all() выполняет действия по осям.
Если правильно помню, то этот шейдр включается в расширенных настройках. Там еще строка не зарегистрирована в тексте.
- 1
-
Скорее всего вы смотрите анимации только для определенных частей тела. Рекомендую для таких случаев смотреть анимации смартов, или условных катсцен, где нет разделения на части тела.
-
20.12.2020 в 04:42, Cornholio сказал:
все хвосты от статики вырезать
Главное лайтмапы непрямого освещения не вырезайте, без них уж все очень плохо становится.
20.12.2020 в 04:42, Cornholio сказал:а вот при игре - я б выключал
Согласен
-
27.10.2020 в 02:52, Марка демченков сказал:
чем от друг-друга отличаются рендеры
Статическое освещение - DX9 рендеринг, используется в основном предпросчитаное освещение.
Динам. освещение объектов - DX9 отключены большенство пост процесс шейдров, отложенное динамическое освещение (Тень от солнца запечена)
Полное динамическое освещение - Улучшенное полное освещение - DX9 Полная динамика, из предрасчитаного только затенение + есть возможность включить SSAO (И аналоги)
Ул. полное освещение (DX10) - DX10 рендеринг, отличается синтаксис языка шейдров, добавлено намкание и объемный дым, +- технические правки.
Ул. полное освещение (DX11) - DX11 рендеринг, сломан объемный дым, сломаны шрифты, сломан свет от кастров, появилась тесселяция.
- 1
- 2
Редактирование движка X-Ray
в Скрипты / конфиги / движок
Опубликовано
@Cornholio Light_Render_Direct_ComputeXFS.cpp в рендере, по идее там считается размер карты теней.