Отсечение модели в шейдере
Обычно на такие простые вещи "тратится" много математики. Реализовал "отсечение" вершин прямо в шейдере, как вам качество отсечения? :)
Зачем это?
Нужно было сделать реальные волны внури сосуда, а не однородную водную поверхность:
Инструмент перекомпиляции игр XBox 360 в нативные исполняемые файлы ~ Windows/ПК, выпущен на GitHub. Перекомпилировать игру для XBox на ПК без эмуляции.
Жду фейбл 2
Интересные отсылки и пасхальные яйца во втором Kingdome Come Deliverance
Генри Поттер и Меч Кобылы, Древние Свитки 6: Богемия, котики и другие невероятные кроссоверы в Богемии 15 века.
Через 2 дня выходит Split Fiction и самый прикол в том, что EA в очередной раз сделали только Multi 7 языков в игре. Видимо все деньги были потрачены на Veilguard
Довольно печальная картина вырисовывается. Ведь кроме Dragon Age, все их последние проекты были с ужасно малым количеством доступных языков на борту. Что уже как бы говорит, что на доступность компании все ровно. Да, можно спокойно играть на иглише, но иногда хочется все же на русском пройти игру, в особенности когда в Split Fiction планировал игра…
Почему люди платящие за игру одну и ту же цену должны получать совершенно разные экспириенс.
Он платит 70 баксов и получает полную поддержку своего родного языка, А я плачу 70 баксов и получаю игру которая не то что не локализовано она даже минимально не переведена.
Это просто нечестно что мы должны платить одну и ту же цену за совершенно разный уровень качества.
Комментарий недоступен
Комментарий недоступен
Блин а чо без кода то
Интересно. Реализацию подробнее опишешь?
Я опишу
Передаешь в шейдер точку (центр площади отсечения) и нормализованный вектор (нормаль плоскости отсечения)
В вертексном шейдере находишь позицию точки в мировом пространстве, находишь ее позицию относительно секущей плоскости, и, если она пересекает ее - сплющиваешь о плоскость.
На примере unity
вместо
o.vertex = UnityObjectToClipPos(v.vertex);
делаем
o.vertex = mul(UNITY_MATRIX_M, v.vertex); // находим точку в мировом пространстве
if (o.vertex.y > 0) // если точка пересекает плоскость (простой пример)
o.vertex.y = 0; // плющим ее
o.vertex = mul(UNITY_MATRIX_VP, o.vertex); // домнажаем на проекционно-видовую матрицу, чтобы найти положение точки на экране.
Возможно позже, после того как с работой разберусь :)
Комментарий недоступен