«Батарея электрического суперкара запитывает революционный инвертор, с габаритами 50х50х100 см и массой в 50 кг, и позволяет развивать мощности до 1,2 МВт полезной нагрузки. Емкость батареи — 90 кВт/ч… Мощность CV-1 — 220 кВт, пиковая — 500 кВт. Запас хода автомобиля составляет 350 км. Время разгона от 0 до 100 км/ч — 6 секунд», — сказано в сообщении «Калашникова».
Wtf? Зачем там "революционный инвертор" на мегаватт с лишним, если пиковая мощность всего лишь 500 квт?
Опять же, что это за суперкар такой, который разгоняется за 6 секунд? Например, топовая комплектация skoda superb (Это не реклама, а пруф) при 205 квт максимальной мощности разгоняется до сотни за 5.8 секунд. (и весит она больше полутора тонн). Почему обычный автомобиль с двигателем на 200квт разгоняется лучше электро-супер-кара, который якобы в два с половиной раза мощнее (не говоря уж про 1.2 мегаватта после инвертора)? Это не убийцы теслы, а рекламная лапша.
Я думаю, лет через 5-10 самоуправляемые грузовики так и будут делать. Обмен информацией между передним и задними позволит синхронно тормозить и ускоряться, поддерживая минимальный интервал.
Этот формат надо использовать для текстур материалов, но не для рендер таргетов.
Да, я про текстуры материалов и писал. Похоже, получилось не совсем понятно. Идея:
Для текстуры указывается формат SRGB
openGL при чтении из этой текстуры сделает обратное преобразование и возвратит уже линейные значения яркости
Мы на основе этих значений в линейном пространстве как-то рассчитываем освещение
Рисуем сцену в floating point фреймбуфер, потому что значения могут быть большими.
Читаем значения из floating point буфера, ужимаем их в интервал от 0 до 1, вручную делаем гамма-коррекцию (после гамма-коррекции мы всё равно останемся в интервале от 0 до 1) и пишем результат в обычный фреймбуфер.
Но проведите аналогию с машиной. Машину надо периодически гонять на ТО. Это трата времени.
Продолжу аналогию. Машина просто берёт и в случайные моменты времени не едет, потому ей потребовалось ТО прямо здесь и сейчас. Весь мир подождёт. Нужна мне такая машина? Если я на ней иногда катаюсь в соседний магазин — может быть и да. Если смотреть на неё как на рабочий инструмент — нет. (Кстати, более старая машина этой марки почему-то прекрасно работает без столь частых ТО)
А есть другая машина. Она может прекрасно ехать 24/7 по несколько месяцев без всякого ТО. ТО можно сделать в любой момент времени, и оно делается реально быстро, зачастую прямо без остановки машины.
У нас немного разный подход. Похоже, Вы смотрите на сцену как на холст, на котором можно в каком-то порядке нарисовать спрайты, а я — как на объёмную сцену, на которой можно произвольно располагать и поворачивать прямоугольники с картинками.
Возьмем две точки (можете смотреть на первую иллюстрацию, ту что не гифка а сетка) с координатами (7,1) и (8,2). По вашей формуле они будут иметь одинаковый z1 = -(7 — 1) и z2 = -(8 — 2), z1=z2=-6 (почему там кстати минус?). В вашем случае их перекрываемость не детерминирована...
Да, эти две точки будут иметь одинаковую глубину. И это логично. Если нарисовать множество точек с одинаковой глубиной, то получится горизонтальная прямая. Перекрываться точки они не будут, так как они находятся в разных частях экрана. А вот спрайты — да, могут перекрываться. Как вариант, можно ещё попробовать в нарисовать спрайты с точностью до пикселя, чтобы не было перекрытий или сделать так, чтобы перекрывающиеся части выглядели одинаково. Ну или сделать Вашим сопособом. Минус — типа при меньшей z координате объект становится ближе.
в 2d есть куча своих сложностей и, как ни странно, во многих вещах 2d тормозит больше 3d
Я не знал ограничений движка, который Вы используете. Посмотрел — действительно, там нет вершинных шейдеров и мои идеи не получится реализовать.
Но в общем и целом — нет чёткого разделения. Видеокарты сделаны именно под 3д, и 2д является частным случаем. Совершенно нормально в плоской графике использовать z-координату и прочие хитрости из 3д игр — в идеале это не должно влиять на производительность.
+1 спрайт с иным zPosition дает ровно +1draws, +1draws даже статичного спрайта дает ощутимый минус к fps, а если спрайт еще и движется то на таком разрешении я усаживал iPhone 5 на 30-40 просто движущихся спрайтов с разными zPosition.
Это уже борьба с особенностями движка начинается. Похоже, его разработчики не планировали рисовать такое большое количество спрайтов. Если смотреть с точки зрения железа, то 600 спрайтов — не предел.
Triangle count of the entire scene should be <=500k for any view. This has been determined to be the maximum poly count that can hit 30fps on both iPad4 and iPad Air.
Лично мне цифра в 500 тысяч треугольников на сцене кажется слишком большой и более реальным выглядит ограничение в 50-100 тысяч. В любом случае, это на пару порядков больше, чем нужно для рисования шестисот прямоугольников.
Х и у похожи друг на друга, чем вам не подошло просто z = -(pos.z + pos.x - pos.y)? Для правильного рисования вертикальных элементов можно дополнительно хранить высоту для каждого пикселя, и тогда проблем типа "дерево заслоняет въезд в тоннель, который заслоняет поезд, а поезд заслоняет дерево" вообще не будет. Ну или можно высоту не хранить, просто вершины дерева сделать такими, чтобы оно было реально вертикальным.
С вызовами отрисовки вы что-то намудрили. Если использовать z-координату по назначению, то можно будет рисовать спрайты в произвольном порядке и сгруппировать их по содержанию, и например, за один вызов нарисовать всю землю, (ну будет на ней 1200 полигонов, для видеокарты это совсем не страшно, она и 10 тысяч потянет), ещё одним вызовом — деревья и т.п. (на самом деле, вызовов будет чуть побольше: надо будет включить шейдер, передать видеокарте буфер вершин, установить юниформы и только потом вызывать рисование)
эргономику этой мыши можно оценить на троечку, ведь каждые 10-12 минут приходилось делать перерыв, чтобы расслабить кисть. Если же бродить по сайтам и собирать информацию, выделяя куски текста и перемещаясь между окнами и страницами, рука начнет затекать лишь через полчаса.
Это не не троечку, это просто вредно для здоровья и находится за гранью понятия "эргономика". Мышь должна быть такой, чтобы ей можно было пользоваться любое разумное время без чувства дискомфорта. Если через полчаса обычного сёрфинга возникают проблемы, то эта мышь и даром не нужна.
Я бы перевёл как "хеш-таблицу" (немного вольный перевод, но зато сразу понятна идея) или "ассоциативный массив" (точный перевод, но не очень очевидный).
Обратив внимание на столбец «Ожидаемая продолжительность предстоящей жизни у доживших до возраста x лет», мы видим, что в 60 лет «среднему мужчине» по данным 2014 года предстоит прожить 15,84 года и получить 190 пенсий, а при выходе в 65 лет — 13,16 года и 158 пенсий.
Да, можно было подумать, что 5 лет прибавки пенсионного возраста снизят длительность периода «на пенсии» на 5 лет, но это не так. Вероятность смерти возрастает не линейно, а это значит что за 5 лет с 60 до 65 умирает значительно меньшее количество мужчин, чем за период с 65 до 70 лет и так далее. Повышение пенсионного возраста на 5 лет — это сокращение периода получения пенсии в среднем на 2,68 года или почти 17%.
Вы это преподносите как что-то хорошее. А на самом деле всё наоборот — цифра в 2.68 лет вместо 5 значит, что целая куча людей до пенсии просто не доживёт.
Например, есть три человека — один проживёт 58 лет, второй 62 и третий 72.
Если пенсионный возраст 60, то у нас средний период получения пенсии будет 7 лет. (а первый человек умрёт в 58 и статистику не испортит)
Если пенсионный возраст 65, то средний период получения пенсии так и останется 7 лет. Красота-то какая! И пенсии платить меньше, и пенсионный возраст больше.
Только вот 5 лет — это 5 лет, они никуда не деваются. Для каждого конкретного человека повышение пенсионного возраста значит, что он либо уйдёт на пенсию на 5 лет позже, либо вообще до неё не доживёт.
Ок, но дистанция между автомобилями может быть какой угодно. Автомобиль качнёт дорогу передними колёсам, потом качнёт задними (На резонансных частотах вклад от переднего и заднего колеса сложится) — и всё, подталкивания асфальта закончились. Следущюй автомобиль сильно дальше 1.8 метров — и даже если колебания не затухнут, воздействие следующего автомобиля не имеет жёсткой связи с первым — может отличаться скорость, расстояние между колёсами, не говоря уж о том, что расстояние до него может быть как 18 метров (усилит колебания), так и 18.9 метров (будет действовать в противофазе и гасить их)
Похоже, роскомпозор представляет интернет как кучку сайтов, и даже не догадывается про то, что интернет является универсальным средством связи и используется самыми разными способами.
Например, у меня brew не мог установить некоторый софт. С релизов на гитхабе его тоже нельзя было скачать. А ещё свежесозданный gradle проект не мог подтянуть зависимости — просто божественно!
Я уверен, что таких примеров — тысячи, и далеко не всегда легко найти причину.
К сожалению, я только сейчас заметил комментарий.
Почему в оригинале используется GL_NEAREST — не знаю. Думаю, автору было так удобнее по каким-то причнам (например, более заметные артефакты теней, с которыми мы потом боролись всю статью).
Я думаю, с использованием GL_LINEAR должно работать лучше. Похожие проблемы всё равно будут возникать, только в меньшем масштабе. Например, из-за погрешности вычислений или какой-нибудь изогнутой модели из маленьких полигонов, для которой линейное приближение будет не очень точным.
Мне и в голову не приходило, что описание простого эффекта можно так растянуть (А суть особо и не описана, подставить чиселки в формулу — не лучшее объяснение). Для ленивых — цирк с вырезанием и приклеиванием волоса и измерением линейкой не нужен, достаточно в темноте посветить лазером на волос или на dvd диск и полюбоваться на результат.
Надеюсь, роскомпозору втык международного уровня сделают, т.к. трафик иных государств может по каким-то причинам идти через Россию и нефиг в него вмешиваться. А то получается, что соседние с нами страны несут убытки.
В оффлайн рендерах (например, cycles в блендере) для борьбы с шумом для каждого пикселя пускают много лучей (порядка тысячи, там есть примеры), они каждый раз по-разному рассеиваются и в итоге получается довольно честный результат. Но там есть свои подводные камни — источник света должен быть по возможности большим. Если он маленький и яркий, то луч света с маленькой вероятностью попадает в него, но если уж попадает, то пиксель получает слишком большую прибавку к яркости. Кстати, рендерят на видеокарте, и одна картинка приличного качества рисуется несколько минут.
Столько рассчётов 30 раз в секунду делать крайне проблематично, и заслуга nvidia больше в том, что они придумали какой-то алгоритм убирания шума. Они почти во всех примерах из вашего видео сначала показывают ужасно шумный вариант, из которого каким-то образом потом вытягивают красивую картинку.
Не совсем. Ортографическая — частный случай параллельной, когда мы проецируем с помощью прямых на плоскость, именно перпендикулярную этим прямым. https://toster.ru/q/345904
Теневая рябь?
Можно и так. Главное — понять, как она образуется, название не очень важно.
Wtf? Зачем там "революционный инвертор" на мегаватт с лишним, если пиковая мощность всего лишь 500 квт?
Опять же, что это за суперкар такой, который разгоняется за 6 секунд? Например, топовая комплектация skoda superb (Это не реклама, а пруф) при 205 квт максимальной мощности разгоняется до сотни за 5.8 секунд. (и весит она больше полутора тонн). Почему обычный автомобиль с двигателем на 200квт разгоняется лучше электро-супер-кара, который якобы в два с половиной раза мощнее (не говоря уж про 1.2 мегаватта после инвертора)? Это не убийцы теслы, а рекламная лапша.
Я думаю, лет через 5-10 самоуправляемые грузовики так и будут делать. Обмен информацией между передним и задними позволит синхронно тормозить и ускоряться, поддерживая минимальный интервал.
Да, я про текстуры материалов и писал. Похоже, получилось не совсем понятно. Идея:
При создании текстуры можно передать параметр
GL_SRGB
, и тогда обратная гамма-коррекция будет делаться автоматически.Продолжу аналогию. Машина просто берёт и в случайные моменты времени не едет, потому ей потребовалось ТО прямо здесь и сейчас. Весь мир подождёт. Нужна мне такая машина? Если я на ней иногда катаюсь в соседний магазин — может быть и да. Если смотреть на неё как на рабочий инструмент — нет. (Кстати, более старая машина этой марки почему-то прекрасно работает без столь частых ТО)
А есть другая машина. Она может прекрасно ехать 24/7 по несколько месяцев без всякого ТО. ТО можно сделать в любой момент времени, и оно делается реально быстро, зачастую прямо без остановки машины.
В Казаках тоже так было сделано. В старых точно, насчёт новой третьей части — не знаю.
Да воды в ближайшем водоёме набрать и всё. Вдобавок её можно и на высоте выливать, она внизу пройдёт дождиком и никого не убьёт.
У нас немного разный подход. Похоже, Вы смотрите на сцену как на холст, на котором можно в каком-то порядке нарисовать спрайты, а я — как на объёмную сцену, на которой можно произвольно располагать и поворачивать прямоугольники с картинками.
Да, эти две точки будут иметь одинаковую глубину. И это логично. Если нарисовать множество точек с одинаковой глубиной, то получится горизонтальная прямая. Перекрываться точки они не будут, так как они находятся в разных частях экрана. А вот спрайты — да, могут перекрываться. Как вариант, можно ещё попробовать в нарисовать спрайты с точностью до пикселя, чтобы не было перекрытий или сделать так, чтобы перекрывающиеся части выглядели одинаково. Ну или сделать Вашим сопособом. Минус — типа при меньшей z координате объект становится ближе.
Я не знал ограничений движка, который Вы используете. Посмотрел — действительно, там нет вершинных шейдеров и мои идеи не получится реализовать.
Но в общем и целом — нет чёткого разделения. Видеокарты сделаны именно под 3д, и 2д является частным случаем. Совершенно нормально в плоской графике использовать z-координату и прочие хитрости из 3д игр — в идеале это не должно влиять на производительность.
Это уже борьба с особенностями движка начинается. Похоже, его разработчики не планировали рисовать такое большое количество спрайтов. Если смотреть с точки зрения железа, то 600 спрайтов — не предел.
Например, в советах к Unreal Engine пишут:
Лично мне цифра в 500 тысяч треугольников на сцене кажется слишком большой и более реальным выглядит ограничение в 50-100 тысяч. В любом случае, это на пару порядков больше, чем нужно для рисования шестисот прямоугольников.
Почти все эти проблемы можно было решить, если не присваивать спрайту фиксированную глубину, а, как в 3д, интерполировать её между вершинами спрайта.
Х и у похожи друг на друга, чем вам не подошло просто
z = -(pos.z + pos.x - pos.y)
? Для правильного рисования вертикальных элементов можно дополнительно хранить высоту для каждого пикселя, и тогда проблем типа "дерево заслоняет въезд в тоннель, который заслоняет поезд, а поезд заслоняет дерево" вообще не будет. Ну или можно высоту не хранить, просто вершины дерева сделать такими, чтобы оно было реально вертикальным.С вызовами отрисовки вы что-то намудрили. Если использовать z-координату по назначению, то можно будет рисовать спрайты в произвольном порядке и сгруппировать их по содержанию, и например, за один вызов нарисовать всю землю, (ну будет на ней 1200 полигонов, для видеокарты это совсем не страшно, она и 10 тысяч потянет), ещё одним вызовом — деревья и т.п. (на самом деле, вызовов будет чуть побольше: надо будет включить шейдер, передать видеокарте буфер вершин, установить юниформы и только потом вызывать рисование)
Это не не троечку, это просто вредно для здоровья и находится за гранью понятия "эргономика". Мышь должна быть такой, чтобы ей можно было пользоваться любое разумное время без чувства дискомфорта. Если через полчаса обычного сёрфинга возникают проблемы, то эта мышь и даром не нужна.
Я бы перевёл как "хеш-таблицу" (немного вольный перевод, но зато сразу понятна идея) или "ассоциативный массив" (точный перевод, но не очень очевидный).
Вы это преподносите как что-то хорошее. А на самом деле всё наоборот — цифра в 2.68 лет вместо 5 значит, что целая куча людей до пенсии просто не доживёт.
Например, есть три человека — один проживёт 58 лет, второй 62 и третий 72.
Если пенсионный возраст 60, то у нас средний период получения пенсии будет 7 лет. (а первый человек умрёт в 58 и статистику не испортит)
Если пенсионный возраст 65, то средний период получения пенсии так и останется 7 лет. Красота-то какая! И пенсии платить меньше, и пенсионный возраст больше.
Только вот 5 лет — это 5 лет, они никуда не деваются. Для каждого конкретного человека повышение пенсионного возраста значит, что он либо уйдёт на пенсию на 5 лет позже, либо вообще до неё не доживёт.
Ок, но дистанция между автомобилями может быть какой угодно. Автомобиль качнёт дорогу передними колёсам, потом качнёт задними (На резонансных частотах вклад от переднего и заднего колеса сложится) — и всё, подталкивания асфальта закончились. Следущюй автомобиль сильно дальше 1.8 метров — и даже если колебания не затухнут, воздействие следующего автомобиля не имеет жёсткой связи с первым — может отличаться скорость, расстояние между колёсами, не говоря уж о том, что расстояние до него может быть как 18 метров (усилит колебания), так и 18.9 метров (будет действовать в противофазе и гасить их)
Похоже, роскомпозор представляет интернет как кучку сайтов, и даже не догадывается про то, что интернет является универсальным средством связи и используется самыми разными способами.
Например, у меня brew не мог установить некоторый софт. С релизов на гитхабе его тоже нельзя было скачать. А ещё свежесозданный gradle проект не мог подтянуть зависимости — просто божественно!
Я уверен, что таких примеров — тысячи, и далеко не всегда легко найти причину.
Ну так рекурсивный архив ещё хуже — его можно бесконечно долго распаковывать
К сожалению, я только сейчас заметил комментарий.
Почему в оригинале используется GL_NEAREST — не знаю. Думаю, автору было так удобнее по каким-то причнам (например, более заметные артефакты теней, с которыми мы потом боролись всю статью).
Я думаю, с использованием GL_LINEAR должно работать лучше. Похожие проблемы всё равно будут возникать, только в меньшем масштабе. Например, из-за погрешности вычислений или какой-нибудь изогнутой модели из маленьких полигонов, для которой линейное приближение будет не очень точным.
Мне и в голову не приходило, что описание простого эффекта можно так растянуть (А суть особо и не описана, подставить чиселки в формулу — не лучшее объяснение). Для ленивых — цирк с вырезанием и приклеиванием волоса и измерением линейкой не нужен, достаточно в темноте посветить лазером на волос или на dvd диск и полюбоваться на результат.
Надеюсь, роскомпозору втык международного уровня сделают, т.к. трафик иных государств может по каким-то причинам идти через Россию и нефиг в него вмешиваться. А то получается, что соседние с нами страны несут убытки.
В оффлайн рендерах (например, cycles в блендере) для борьбы с шумом для каждого пикселя пускают много лучей (порядка тысячи, там есть примеры), они каждый раз по-разному рассеиваются и в итоге получается довольно честный результат. Но там есть свои подводные камни — источник света должен быть по возможности большим. Если он маленький и яркий, то луч света с маленькой вероятностью попадает в него, но если уж попадает, то пиксель получает слишком большую прибавку к яркости. Кстати, рендерят на видеокарте, и одна картинка приличного качества рисуется несколько минут.
Столько рассчётов 30 раз в секунду делать крайне проблематично, и заслуга nvidia больше в том, что они придумали какой-то алгоритм убирания шума. Они почти во всех примерах из вашего видео сначала показывают ужасно шумный вариант, из которого каким-то образом потом вытягивают красивую картинку.
Не совсем. Ортографическая — частный случай параллельной, когда мы проецируем с помощью прямых на плоскость, именно перпендикулярную этим прямым.
https://toster.ru/q/345904
Можно и так. Главное — понять, как она образуется, название не очень важно.