friends [entries|archive|friends|userinfo]
phonomania

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

нам надо больше форков! [Jun. 2nd, 2020|08:32 am]

ketmar
[Tags|]

форкнул libart. если кто не в курсе — это библиотека, которая использовалась для рендера когда сairo ещё не было. умеет в антиалиас-рендер всяких векторных и безьерных путей, со стандартным набором фич (толстые линии, разные типы line joins/caps, dashing, gradients).

зачем? ну, во-первых, потому что могу. во-вторых, это интересно. и ещё мне нужна была небольшая библиотечка для рендера всяких векторов в битмапы, которую можно тупо кинуть в проект и использовать. libart как раз такая: конфигур ей нафиг не нужен, нужен только c99, «stdint.h» и «math.h» в котором есть `sincos()` (но это настраиваемо, можно задефайнить свою реализацию).

пока что как-то усердно её допиливать я не планирую, только добавлю несколько нужных мне фич.

да, учтите, что она на даблах, а не на флоатах. в алгоритмы не вникал, поэтому не знаю, можно ли без багов даунгрейднуть. в принципе, мне пофигу, меня даблы пока устраивают.

ещё там — как и полагается — беда с документацией. я засунул в репу древние доки из интернетов, но они реально древние, и очень неполные (собственно, на самом интересном месте обрываются: там, где надо бы написать, как запускать рендеринг). я добавил простой пример для xlib, где чуть-чуть процесс прокомментировал. и ещё потом добавлю.

как обычно уже с моей стороны — стабильность API не гарантируется. без нужды я ломать не буду, но и сильно переживать по поводу совместимости тоже.

p.s.: из уже добавленого — я сделал возможность сменить менеджер памяти, и установить колбэк для вывода всяких сообщений. планирую докинуть ещё разных растеризаторов безьерок, и всякие утилиты для рисования окружностей, дуг, элипсов, прямоугольников со скруглёнными углами, etc.
Link5 comments|Leave a comment

к прошлому [May. 31st, 2020|08:36 am]

ketmar
ага, вот чем MPR плохой: он не умеет посчитать минимальное расстояние между двумя фигурками (насколько я понял). соответственно, для CCD неприменим (равно как и для систем, где очень большие скорости).

хотя если вытянуть одну из фигурок в направлении движения (это несложно, они же выпуклые), то как минимум факт удара определить можно. для выталкивания, правда, не подойдёт — придётся прикидывать расстояние и потом уточнять. с другой стороны — MPR, похоже, чуть быстрее GJK, поэтому можно делать MPR для вытянутых, и потом GJK для минимального расстояния, если ударилось.

однако надо будет потом перепроверить: может я чего недопонял.
LinkLeave a comment

слоупоке рапортует [May. 30th, 2020|01:36 pm]

ketmar
фигасе. окромя GJK, о котором я писал, есть ещё MPR. тоже на саппортах и минковском, но автор говорит, что во-первых, проще, во-вторых, более стабильный, и в-третьих, не нужен дополнительный алгоритм (EPA) для вычисления «направления выталкивания».

странным образом никто особо о нём не упоминает, в основном везде говорят про GJK. я пока просто полистал «в режиме pgdn» — по-моему, круто. надо будет повертеть подробней.
Link3 comments|Leave a comment

и да [May. 25th, 2020|09:56 pm]

ketmar
скоро громче всех про то, что карантин только навредил, будут кричать точно те же ковидлодегенераты, которые кукарекали про «карантин мне запили бля». потому что безмозглые уебаны. жаль, что они от ковидлы не передохли — это вот была бы реальная польза.
Link11 comments|Leave a comment

миша вот удивляется, а всё просто [May. 25th, 2020|09:51 pm]

ketmar
американский консерватор — он за Старую Добрую Америку, где можно стрелять в государственных налоговых инспекторов и негров. и вполне здраво рассуждает, что налоговые инспекторы хуже негров, поэтому негры подождут. а мусор — это тот же налоговый инспектор, только ещё более мерзкий.
LinkLeave a comment

mirror, mirror on the wall^w floor... [May. 24th, 2020|07:44 pm]

ketmar
[Tags|]

пытаюсь понять, что Янис сделал с порталами, как я их поломал, и как вернуть это обратно. пока не совсем, и ещё проглюкивает, но кое-что уже восстановил.

к сожалению, и порталы, и shadow volumes, и декали хотят stencil buffer. поэтому в зеркалах не отражается кровища на стенах, и нет стенсильного динамического освещения (лайтмаповое есть).

в принципе, можно попробовать рендерить зеркала в отдельный FBO, а потом его блитать: тогда стенсили нужны только в момент блита. и поставить scissor по порталу ещё. так, может, даже будет быстрее и лучше.

картинко )
Link32 comments|Leave a comment

metafont [May. 23rd, 2020|05:28 pm]

ketmar
я как-то никогда не обращал внимания на то, что у TeX есть своя система создания шрифтов METAFont. ну, знал, но типа: «да понятно, тогда ttf ещё не придумали, и Кнуту пришлось какую-то полурабочую херь на коленке слепить. теперь она, конечно, не нужна, но тащуть по привычке.»

ошибиться сильнее было бы сложно.

метафонт совершенно гениален, метафонт совершенно охуенен, а ttf как сосало в углу, так и сосает.

пример. вот это код на metafont:
Phi=(1+sqrt5)/2;
w=100;
h=Phi*w;
z1=z3-h*up=origin;
x2=w;
(y3-y2)=Phi*(y2-y1);
pickup pencircle scaled 15 xscaled Phi rotated angle (Phi,1);
draw z1..z3;
draw z1{right}..z2{up}..{left}z3;
labels(range 1 thru 3);
showit; shipit; end


а вот это — результат:


го-го рисовать это безьерками, рихтуя руками их параметры. успехов, чо.


поясню. чтобы код был понятней, будем знать, что `z1` — это сокращённая запись для `(x1,y1)`. точки.

значит, мы видим тут систему линейных уравнений, которая задаёт расположение опорных точек. эту систему метафонт любезно нам решит.

ещё мы видим линию и сплайн. у сплайна подхинтованы опорные точки, чтобы буква вышла чуть красившее (можно не хинтовать, тогда метафонт будет делать красиво в силу своего разумения).

и самое главное: мы видим тут выбор пера. метафонт рисует буквы точно так же, как их рисуют каллиграфы: при помощи набора разного вида перьев и карандашей! это очень, очень круто. потому что всякими безьерками в ттф именно это и пытаются эмулировать, но как обычно — через жопу.

из таких описаний без проблем создаются семейства шрифтов, путём автоматического применения простейших трансформаций. полужирные, наклонные, condensed, всё вот это вот. и сменой перьев тоже можно получать интересные эффекты.

Кнут на самом деле создал шрифтовую систему, у простоты, красоты и мощи которой нет аналогов до сих пор.

почему же она «массово не взлетела»? во-первых, взлетела — вместе с TeX. а во-вторых, растеризатор безьерок быстрее (метафонт вообще использует кубические сплайны, чтобы покрасившее). а что на создание шрифтов безьерками надо потратить значительно больше усилий (реально, при всём огромном количестве ttf-шрифтов — сколько из них хороших?) — так это неважно, человеческие трудозатраты, как известно, ничего не стоят. и в третьих, подозреваю, что Трепетные Натуры Художников просто полопались от вида уравнений. хотя хороший художник, конечно, без проблем увидит сверху «золотое сечение», и прочитает расположение опорных точек — но хорошие-то везде редкость, что у художников, что в любой другой области.


p.s.: картинко и пример я вырезал из учебника по метафонт.
Link54 comments|Leave a comment

всё поломал! [May. 21st, 2020|11:31 am]

ketmar
переделываю scope management в вавумцэ. поскольку в языке строки всегда динамические, и есть динамические массивы, то по выходу из функции локалы с такой фигнёй надо чистить. янис, естественно, это предусмотрел, но методом несколько упрощённым: не парясь скопами просто деструктить всё, что в этом нуждается, перед `return`.

в принципе, решение рабочее, но в нём есть очевидные черви. во-первых, это сильно усложняет повтороное использование стековых слотов: фактически, локал живёт всю функцию, даже если используется один раз где-то глубоко внутри кода. во-вторых, некоторые штуки типа «scripted foreach» (который вызывает для итерации другие методы на вавумцэ) хочет после этого цикла вызвать метод «done» (в том числе и если из цикла вышли по `break`) для всяческой очистки, например. в третьих, мне захотелось привинтить к структурам деструкторы, потому что почему нет. и вот тут схема дала сбой.

проблему со «scripted foreach» я решил адовым хаком с введением особых «финализаторов», ручной регистрацией их в общем контексте кодогена и прочей грязью. при том, что у нас уже есть совершенно очевидный scope list: AST-ноды рекурсивно вызывают кодоген для своих детей же. так что всего и надо — поддерживать аплинк, и у нас есть zero-effort current scope list.

далее в каждую ноду-оператор просто добавляются методы «сгенерить деструкторы» и «сгенерить финализаторы». первая вызывается перед выходом из скопа, вторая после. в большинстве нод эти методы делают ничего, а в некоторых — нужный код. фаза семантического анализа переписывает дерево так, что каждое создание локала делает новый скоп, так что как-то специально трекать локалы не надо, они после такого переписывания отлично ложатся в общую канву. `break`, `continue` и `return` очевидно просто идут по аплинкам, вызывая методы генерации деструкторов и финализаторов. всё, никакого специального менеджмента, и заодно контекст кодогенерации больше не обязан знать о том, как там операторы чем управляют.

в общем, за два дня более-менее переписал, теперь ловлю блох. в частности, дерево именно операторов нифига не было сделано с возможностью влёгкую его переписать, особенно если по пути могут возникнуть новые scopes. пока что думаю, как сделать это покрасивей, и по дороге ловлю баги от ошибок в переписывании, лол.

короче, мы старый мир разрушим, а потом… как-нибудь. но новый дизайн однозначно красивей и логичней, так что оно того стоит.
Link9 comments|Leave a comment

утритесь, маловеры! [May. 18th, 2020|09:09 pm]

ketmar
лично мне совершенно очевидно, что star citizen выйдет уже в этом году, у них давно всё готово.

совершенно очевидно, что технологии с этого и этого видео без проблем потянут обещаную робертсом mmo с сотней звёздных систем и тысячами игроков на сервер одновременно. (почему тысячами? потому что только команды некоторых кораблей требуют 50+ человек, и робертс обещал, что команда будет свободно находиться в корабле в режиме FPS, а корабли — встречаться и воевать в космосе.)

напомню вам, что эти технологии разрабатывались девять лет (в кикстартере 2012-го года робертс говорил, что игра уже минимум год в разработке, а робертс врать не станет!), на них потрачено около пятисот миллионов долларов. эти технологии вылизаны и оптимизированы, они обеспечивают высочайшее качество графики, они без проблем потянут всё обещаное. лично мне совершенно очевидно, что star citizen выйдет уже в этом году, у них давно всё готово. срочно вкладывайтесь в покупку кораблей, после выхода игры озолотитесь.
Link37 comments|Leave a comment

и про байцофф-за-права-патрибителей [May. 18th, 2020|05:55 pm]

ketmar
есть такой утупер «сидальфа», про видеоигори. ну, есть и есть, раньше пытался делать обзоры, но поскольку он охуительно унылый, то не взлетело. тогда переключился на скандалы-интриги-расследования, это какую-никаую аудиторию всегда набирает.

не так давно доставка пиццы, видимо, сильно подорожала, и он таки решил начать вставлять в видео рекламу. ну, решил и решил, она не особо навязчивая. однако, как говорится, есть нюанс. в самом начале рекламной вставки появляется лого «raid shadow legends», а потом так: «ой, я, конечно, не это рекламирую, а совсем другое, просто похоже называется, хихи.» «рейд», если кто не знает — это донатная деньговыжималка почти без геймплея, можете полуркать.

и я, конечно, верю, что полноэкранная эмблема этого «рейда» (полноценная, официальная, и вовсе не на долю секунды) там появляется уже не первое видео совершенно бесплатно. совсем-совсем бесплатно. ну, шутит он так. вообще-то он pro-consumer, а про «рейд» шутит. само собой.

ну да, я его смотрю (точнее, слушаю, смотреть там нечего) чтобы самому не бегать по помойкам в поисках Драмы. в смысле, чтобы сходить только на одну помойку, а не бегать по куче.

вот такие вот про-консумеры, страстно порицающие донатовыжималки, лутбоксы и прочие Плохие Практики. но только до тех пор, пока за рекламу донатовыжималки не предложили копеечку. креативненько, чо.

p.s.: кстати, интересно, его рекламодатели просто не в курсе, или они такое же говнонаебалово, как и «рейд»? потому что связь между ними он пытается установить вполне неплохо. а если он действительно не брал за «рейд» денег, и просто решил вот такую фигу в кармане рекламодателю сунуть — то вообще сказка: наебалово ничем не лучше тех, которые он типа порицает. пацан красава.
Link9 comments|Leave a comment

о, начинается процесс назначения виноватых [May. 18th, 2020|03:46 pm]

ketmar
правительства всяких стран требуют «расследования по короне». в виноватые, понятно, назначен китай, который во-первых, очень хочется раздербанить, а во-вторых, кто-то должен быть назначен всеобщим виноватым вместо реальных преступников. в прошлой серии, напомню, назначили германию.
Link17 comments|Leave a comment

уе5, не впечатлён [May. 18th, 2020|01:07 am]

ketmar
вообще не впечатлён. во-первых, это всё для того, чтобы пипл покупал технику поновее, а то ТАРМАЗИД. во-вторых, создание ассетов для графония такого качества стоит дохуя денег и занимает дохуя времени — и это то самое время и деньги, которые можно было потратить на геймплей. но всё потратят на графоний, а геймплей завезут для галочки, и стандартный — потому что Вложения Надо Отбить. и это снова возвращает нас к пункту один: нахуй не надо покупать новую технику для того, что можно увидеть за окном в намного лучшем качестве, и часто даже с геймплеем получше. что эта хуита нинужна, что хвалёный рытыхуй.
Link82 comments|Leave a comment

всё, что надо знать о Совестливых Российских Интеллигентах [May. 16th, 2020|09:10 pm]

ketmar
еськов, значица, скорбит по безвременно ушедшему харитонову, с которым почти дописал рОман. странным образом это не мешает Совестливому Интеллигенту еськову возмущаться действиями властей, которым крылов активно подмахивал. потому что интеллигенты — не мозг нации, а говно.

и да, мне похуй на крылова, я не скорблю и не радуюсь. но как-то так получается, что засрали ним многие места. живой нахуй никому нужен не был, а дохлый удобный оказался.
Link43 comments|Leave a comment

k8vavoom, новый билд [May. 12th, 2020|11:37 am]

ketmar
[Tags|]

анонс.
Link8 comments|Leave a comment

две мало связаные вещи [May. 12th, 2020|06:08 am]

ketmar
первое. была когда-то такая прикольная игра под дос: quarantine.

второе. ссылка на песенку. жаль, что в конце они немного об «красный крест» запомоились, но на свете таки ещё остались люди, которые верят в то, что эта схема реально для некоммерческой помощи (а не отмывочно-распилочная).

связано то, что выше, понятно, только ключевым словом.
Link3 comments|Leave a comment

хорошо потролил... [May. 10th, 2020|07:21 am]

ketmar
…танзанийский президент. но вы продолжайте верить, что страшная ковидла шагает по планете, ведь тесты не врут же!

извините, я не вижу, что тут обсуждать, а пара дежурных долбоёбов опять прибежит с хуйнёй. робот-то её вытрет, но зачем же? поэтому каменты закрыты.
Link

я чота нихуя не понял... [May. 7th, 2020|02:36 am]

ketmar
…где это сраное «глобальное потепление»? какого хуя мне нихера не тепло?
Link43 comments|Leave a comment

слоупоке и вга-палитра [May. 1st, 2020|06:01 am]

ketmar
всю жизнь был уверен, что цвета в палтире для vga 13h были выбраны от фонаря. сегодня дошло, что нет. истинно эльфийская скорость.
Link4 comments|Leave a comment

джва года! [Apr. 29th, 2020|06:13 am]

ketmar
[Tags|]

29 апреля 2018-го я сделал первый некосметический коммит в кодобазу вавумчика. так что сегодня, тащемта, у k8vavoom день рождения.
Link9 comments|Leave a comment

worse is better [Apr. 28th, 2020|09:54 am]

ketmar
всегда писал уи (а я вообще не люблю готовые библиотеки для этого, предпочитаю под задачу быстро сляпать с нуля) с фичей «диспетчер событий управляет передачей фокуса по нажатию мышекнопки». из-за чего наблюдались стрёмные хаки, потому что удобней всего, когда в уи есть «автозахват», как в иксах: пока кнопки на мыши нажаты, все события приходят элементу с фокусом. ну, и пилил автограбы и прочий ужас.

а тут внизапна! в вавумчике янис вообще не стал мудрить: тебе нужен фокус? сам в обработчике события и забери. и оказалось, что так намного проще. комбинируем это с моделью событий sink/bubble — и никакие автограбы в хуй не упёрлись. мышиные события тонут до текущего фокуса, а уже после него отпрвляются элементу, над которым мышь (если по дороге событие никто не съел). диспетчер событий сразу стал простым как полено, а вся система ещё гибче, чем с автозахватом.

это всё к тому, что иногда излишняя автоматизация всё только усложняет.
Link2 comments|Leave a comment

navigation
[ viewing | 20 entries back ]
[ go | earlier/later ]