Задать вопрос
  • Как реализованы порталы в игре Portal?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Честные порталы делать очень сложно, нужно хорошо понимать физику и весь пайплайн рендера. Есть очень много граничных случаев, каждый из которых нужно отдельно поддерживать: портал внутри портала, пересечение границ внутреннего и внешнего портала, несколько внутренних порталов, повороты плоскости портала, перемещение предметов, тени и освещение, прозрачные материалы и т. п. Есть две основные техники реализации отрисовки порталов: через рендер текстуры и стенсильный буфер.

    Порталы на рендер текстурах делаются проще, но они дороже по производительности, даже на простой геометрии несколько порталов могут оказаться непосильной задачей для компьютера. Основной принцип следующий: когда вы смотрите на портал, на другой стороне портала камера рисует картинку в текстуру, эта текстура натягивается на плоскую геометрию, и со стороны кажется, будто бы через дырку видно другую часть сцены. Примитивную реализацию такой схемы можно собрать руками в редакторе, но дальше начинаются сложности. Если у конечного портала "за спиной" будет геометрия, она попадёт во вьюпорт камеры и будет странно смотреться. Чтобы это предотвратить нужно ближнюю плоскость отсечения у камеры сдвигать в плоскость портала с помощью CalculateObliqueMatrix. Для вычисления положения камеры и пересчёта матрицы есть удобный колбэк OnRenderObject. После корректировки матрицы порталы будут смотреться более-менее корректно, но будут всплывать всевозможные косяки при перемещении через плоскость портала из-за буфера глубины и nearClipPlane основной камеры.

    Стенсильные порталы будут работать сильно быстрее, но для их реализации нужно хорошо шарить в шейдерах. Расписывать их работу подробно не буду, в целом они делаются точно так же, только трюки с рендер текстурами заменяются на трюки с буферами, предлагаю лучше почитать пару полезных статей на тему: раз и два. В контексте юнити всё немного сложнее, чем на чистом OpenGL, потому что нет прямого доступа ко всем буферам и для получения похожего результата придётся немного поизвращаться. Потенциально облегчить задачу может низкоуровневое API, но у меня не получилось добиться хороших результатов без потери качества картинки. Я возлагаю большие надежды на ScriptableRenderLoop, если судить по документации, это как раз то, что нужно.

    Прошу заметить, что всё вышесказанное касается чисто графической части, для простейшего случая, когда мы имеем FPS камеру без анимаций, без дополнительных механик, которая просто ездит по уровню и может заглядывать в порталы. Что уж говорить про миллион потенциальных багов, если вы захотите включить рядом с порталом систему частиц или взять в руки кубик. Посему советую либо купить плагин и довольствоваться тем, что он умеет, либо приготовиться потратить несколько месяцев на разработку своей портальной системы. И в том и другом случае ограничения движка не позволят вам в разумные сроки получить Portal, в лучшем случае это будет Narbacular Drop.
    Ответ написан
    Комментировать
  • Как лучше сверстать блоки с отступом сверху в 50% от своей высоты?

    Можно сделать их в виде колон, сделать контейнер флексовым и элементы через align-self (flex-start, center, flex-end) выровнять.

    Пример
    Ответ написан
    4 комментария
  • Странный вид ссылки с авито?

    @AlexRudkowskij
    Студент
    Ссылки такого вида это URI-схемы. Система переадресовывает такие ссылки приложениям, которые "отслеживают" их по определённому формату (в вашем случае ru.avito). Ещё можете такое встретить с почтой (mailto://) или ftp (ftp://). Что бы перейти по такой ссылки нужно иметь нужное приложение
    Ответ написан
    Комментировать
  • Как заменить цифры на звездочки в номере телефона?

    0xD34F
    @0xD34F Куратор тега JavaScript
    function replaceNumbers(str, matches) {
      let count = 0;
      return str.replace(/\d/g, d => matches.includes(++count) ? '*' : d);
    }
    
    
    replaceNumbers('+7 (000) 000-00-00', [ 2, 3, 4 ]); // "+7 (***) 000-00-00"
    replaceNumbers('+7 (000) 000-00-00', [ 2, 3, 4, 5, 6, 7 ]); // "+7 (***) ***-00-00"
    replaceNumbers('+7 (000) 000-00-00', [ 10, 11 ]); // "+7 (000) 000-00-**"
    Ответ написан
    3 комментария
  • Как настроить nginx под 800 запросов в секунду?

    Так, во первых у тебя сколько ядер на машине? Почему кластеров 10, а nginx воркер процессов 2(оба значения должны быть раны количеству ядер)? Во вторых вместо ПМ 2 можно использовать upstream в нигсе. В него же можно подсунуть другие серваки если этот не справляется. 800 подключений это не много, но уже требует кэширования, так что надо в нигсе в upstream, proxy и выдачу прописать кэширование. Ну и смотреть код курить логи с манами. Удачи.
    Ответ написан
    Комментировать
  • Есть ли примеры HOC'ов?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    connect
    withRouter
    frondloadConnect

    Какие могут быть примеры с Redux? Единственный HOC связанный с Redux это connect, возвращающий компонент подписанный на изменения store. Да и тот находится в пакете react-redux.

    Если вы не знаете где применить HOC, значит в нем нет необходимости в вашем коде.
    Ответ написан
    Комментировать
  • По какому принципу работает такая Captcha?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Если вкратце - используется анализ движения мышки и машинное обучение.
    Определяются некие паттерны поведения пользователя-человека, и если есть сомнения (это определяет алгоритм машинного обучения) - то капча усложняется (далее предлагается выбор дорожных знаков, витрин магазинов и прочее)
    Какие именно паттерны поведения анализируются - гугл не раскрывает.
    Ответ написан
    2 комментария
  • Как сделать правильное перенаправление в папку public?

    v_decadence
    @v_decadence
    Правильно будет направить DOCUMENT_ROOT в папку public. Таким образом не нужны будут эти костыли и все непубличные файлы будут закрыты от посторонних.
    Ответ написан
    Комментировать
  • SASS - LESS - Stylus что выбрать?

    @Camaro67
    Помог? - жми "Отметить решением"
    Владеть нужно всеми тремя препроцессорами. Как наберетесь опыта - сможете ответить на свой вопрос самостоятельно, никто другой за вас решить не сможет какой препроцессор вам больше подходит т.к. это дело вкуса.
    Ответ написан
    Комментировать
  • Почему метод объекта нужно вызывать через call или apply?

    mbelskiy
    @mbelskiy
    Software Developer
    Для того чтобы находить ответы на такие вопросы самостоятельно, учитесь изучать документацию.
    Math.max на вход ожидает перечисление аргументов типа Number, поэтому первые два не работают.
    В свою очередь, apply вызывает функцию с указанными параметрами, где второй параметр ожидается как массив, а к вызываемой функции передается как перечисление или arguments.
    Ответ написан
    Комментировать
  • Почему метод объекта нужно вызывать через call или apply?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Потому, что Math.max принимает не массив, а список аргументов. А apply первым аргументом принимает контекст this, а вторым массив, который будет передан аргументами в Math.max
    т.е. вот такой вызов
    Math.max.apply(null, [1,2,3])
    будет преобразован в
    Math.max(1,2,3)
    Если например аналогичный метод call, он вторым аргументом уже не принимает массив, ему нужно передавать аргументы последовательно
    Math.max.call(null, 1, 2, 3);
    // будет
    Math.max(1,2,3)
    Ответ написан
    Комментировать
  • Как работают ssl сертификаты letsencript?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Вас не смущает ключ dry-run? Это тестовый прогон, без реального выпуска сертификатов.
    Ответ написан
    4 комментария
  • Как все-таки начинать php код?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    https://www.php-fig.org/psr/psr-1/

    На дворе 2018г., но споры продолжаются(в т.ч. внутренние)

    На дворе 2018, php "программисты" всё еще не знают про PSR
    Ответ написан
    Комментировать
  • Переход с linux на Windows, подводные камни?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Переход с linux на Windows, подводные камни?
    Да никаких особых подводных камней нет. Это просто разные системы имеющие разные достоинства и недостатки.
    Следует быть готовым к тому что привычные вещи делаются по другому, или труднореализуемы в другой системе.
    Основная проблема при переходе как правило это именно незнание той системы на которую переходите.
    Весь ваш прежний опыт тут мало поможет, придется с нуля осваивать новую ОС.

    В общем основная проблема - непонимание новой ОС.
    Ответ написан
    44 комментария
  • Как различить юзер программист или нет ( то есть в кавычках, который мало что понимает)?

    myjcom
    @myjcom
    Как узнать всё, что нужно, задавая правильные вопросы
    Год издания: 2018
    Автор: Фрэнк Сесно
    Переводчик: Мария Кульнева
    Издательство: Альпина Диджитал
    ISBN: 978-5-9614-0923-9
    Язык: Русский

    Меня никто не понимает. Почему люди воспринимают нас не так и что с этим делать
    Год издания: 2017
    Автор: Хайди Грант Хэлворсон
    Переводчик: Юлия Цыганкова
    Издательство: Манн, Иванов и Фербер (МИФ)
    ISBN: 978-5-00100-842-2

    Тайны головного мозга. Вся правда о самом медийном органе
    Год издания: 2018
    Автор: Эрик Чадлер, Лизи Джонсон
    Переводчик: Александр Николаевич Анваер
    Издательство: АСТ
    ISBN: 978-5-17-105209-6

    Кругом одни идиоты. Если вам так кажется, возможно, вам не кажется [4-е издание]
    Автор: Томас Эриксон
    Переводчик: Катарина Мурадян
    Издательство: Эксмо
    ISBN: 978-5-04-091213-1
    Дата написания: 2014
    Дата перевода: 2018
    Ответ написан
    Комментировать
  • Как применить псевдокласс css только к элементам с определенным классом?

    Vlad_IT
    @Vlad_IT Куратор тега CSS
    Front-end разработчик
    Ответ написан
    Комментировать
  • Почему не работает редирект на телефоне?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    А где-то работает? Этот же метод, его вот так надо использовать
    window.location.replace("link");
    Ответ написан
    2 комментария
  • Считаете ли вы правильным, когда для удаления аккаунта нужно нарушать правила?

    pragmatik
    @pragmatik Куратор тега Тостер
    я попросил заблокировать свой аккаунт
    Если речь идет (хе-хе) о крупном ресурсе, поддержку которого осуществляют наемные работники, то эти работники, наверняка, действуют в соответствии с регламентом, утвержденным их руководством. Они не могут применять "блокировку", которая является инструментом борьбы с нарушителями правил, для каких-либо других целей.
    Блокировка и удаление аккаунта - разные операции. Блокировка помогает нарушителю правил обдумать ситуацию, дает время изучить правила ресурса, чтобы в дальнейшем не допускать их нарушений и не давать повода для новых санкций. Удаление учетной записи - подразумевает отказ от использования ресурса, сопровождающийся удалением всего контента, размещенного пользователем.
    Поэтому, на мой взгляд, вы изначально некорректно сформулировали вопрос, в заголовке которого Вы пишете "Считаете ли вы правильным, когда для удаления аккаунта нужно нарушать правила?", а в описании, пишете, что вы запросили блокировку и вам в ней отказали.
    А то, что забанили товарища без повода - это уже другая история и тут не имеет смысла её обсуждать.
    Как так ни за что? Вон же у него в профиле https://toster.ru/user/Maksclub (ссылку на который вы забыли удалить) написано: систематические нарушения п. 2.3, 5.17, 8.1. правил Сервиса.
    Я подписан на тег https://toster.ru/tag/toster.ru/questions и мне не сегодня на почту 2 письма пришло о его вопросах в которых он спрашивал почему были удалены вопросы. Не понимаю, почему он это спрашивал у пользователей Сервиса, а не у службы поддержки, ведь рядовой пользователь может ответить на его вопросы только одно: если вопросы были удалены, значит они содержали нарушения правил. Вон даже в правилах, которые он нарушил написано:
    2.3 Публикация вопросов, компетентно ответить на которые могут только представители конкретной организации, неизбежно приводит к провокации нарушений п. 3.4, 5.14 - 5.17 правил данного Сервиса. Помните, что для обращения к администраторам электронных ресурсов следует использовать предусмотренные этими администраторами каналы связи, например, если речь идет о данном Сервисе - форму обратной связи.
    5.17. В подавляющем большинстве случаев, инициирование публичных обсуждений такого рода влечёт за собой высказывание предположений, слухов и заблуждений. Это вынуждает сотрудников обсуждаемых электронных ресурсов тратить время на отслеживание и комментирование таких дискуссий.
    8.1. Любые вопросы, связанные с обсуждением санкций за нарушение данного регламента следует адресовать в службу поддержки.
    и все кто, как и я, подписаны на тег Тостер.ру сегодня стали жертвами действий вашего кумира, поскольку получили уведомления о его вопросах на которые они не могут ответить, т.е. напрасно потратили время жизни на их рассмотрение.
    Ответ написан
  • Как упростить запрос laravel?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    Потому что надо делать одним запросом нормально.

    А у вас выбирается вообще всё что только возможно ->get()
    А потом начинаются фильтры и еще подзапросы как минимум по одному на каждую строку которая нашлась в базе изначально по одному. Т.е. 75 000 запросов на выходе, а может даже в 2 раза больше с учетом первого фильтра.

    Читайте доку по with(), orderBy() и наверно leftJoin() и делайте один нормальный запрос.
    Ответ написан
    3 комментария