Просмотр полной версии : Программное увеление разрешение.
В этой статье "От «Цветорасширителя для ZX-Spectrum» до ZX-Poly" (https://habr.com/ru/post/472232/) есть такая фраза "За счет этого удавалось даже программно поднимать разрешение экрана (что отлично показано например в деме "Dead Morose", где одновременно бежит текст с разрешением в 256, 512 и 768 точек по горизонтали)." И есть пример этого. У кого нибдуть есть материал (исходник, стати и т.п.) как получить подобный эффект? Или может кто рассказать более подробно?
NEO SPECTRUMAN
21.11.2019, 22:38
Уже была тема
собственно увидеть можно в упомянутой демке
https://zxaaa.net/view_demo.php?id=5717
как получить подобный эффект?
да легко!
нужно вместо одного спрайта 4 (для 2х)
полученные из одного по больше
вот так
0123
4567
89AB
CDEF
02 13
8A 9B
46 57
CE DF
потом в процессе перемещения по младшему биту координаты выбираешь нужный спрайт
а по оставшимся старшим 8 битам координаты рисуешь
эффект есть при постоянном перемещении спрайта
и скорей всего перемещать желательно именно с шагом в пол пикселя
только спрайт остановится эффект пропадет...
если просто дрыгать 4 такие картинки по кругу
"разрешение" НЕ увеличивается
изображение просто дергается...
так же лучше на спрайте не делать элементов тоньше 1 физического пикселя
или будет оно усердно мигать
скорей всего не применяется
по причине многократного увеличения потребляемой памяти
...я вообще уже забыл про это явление
- - - Добавлено - - -
благодаря этому же эффекту
можно лучше рассмотреть картинку в зуморотаторах с разрешением чанков 64х48
https://zxaaa.net/screen2/rage6.png
- - - Добавлено - - -
в детстве я гулялся стеклом от фотовспышки
там была поверхность из как бы плосковыпуклых линз расположенных сеткой
и разрешение сетки было довольно низкое дето 20х15 может
и при ложении стекла на картинку
она успешно пикселизировалась непадетски до 20х15
но при быстром перемещении стеклышка воспринимаемое разрешение ВНЕЗАПНО подскакивало
и можно было разглядеть более мелкие детали :v2_dizzy_roll:
- - - Добавлено - - -
Еще можно рисовать на субпиксельном уровне
https://upload.wikimedia.org/wikipedia/commons/7/7e/ClearType01.png
https://upload.wikimedia.org/wikipedia/commons/5/53/ClearType_demo.png
но тут разрешение только по одной оси
и нужен цвет на точку
при этом работать будет оно не везде
прокатит в эмуляторе с масштабом 1:1 на lcd
слегка будет эффект на реале с элт (с расположением пушек в ряд)
при этом последовательность RGB субпикселей должна совпадать c последовательностью RGB субпикселей на самом мониторе
а мониторы бывают разные...
субпиксели могут быть и в вертикальном исполнении...
RRR
GGG
BBB
опять же не желательно делать элементы тоньше 3-х субпикселей
эффект есть при постоянном перемещении спрайта
и скорей всего перемещать желательно именно с шагом в пол пикселя
А есть понимание какое перемещением минимально допустимо?
Например если смещу картинку на 1 знакоместо в право, а потом на 1 знакоместо влево. Это будет считаться необходимым перемещением для появление эффекта?
А при вертикальном перемещении эффект появляется?
Ищу места применения эффекта (кроме бугущих строк). Статичную картинку получить нельзя, но если можно получить эффект при небольших смещениях, то можно использовать для вывода иконок (например лиц персонажей) с "большим" разрешением. То есть, если у нас под фото персонажа отводится 3х3 знакоместа (24х24 пикселя), то нельзя ли за счет эффекта в это место вывести картинку 64х64 пикселей, но постоянно его перемещать по кругу на 1 знакоместо.
- - - Добавлено - - -
при этом последовательность RGB субпикселей должна совпадать c последовательностью RGB субпикселей на самом мониторе
а мониторы бывают разные...
субпиксели могут быть и в вертикальном исполнении...
RRR
GGG
BBB
То есть возможна два расположение: горизонтальное и вертикальное. А если для каждого случая готовить отдельный вариант? Либо полностью свои версии программ, либо настраивать в меню.
NEO SPECTRUMAN
23.11.2019, 01:52
Например если смещу картинку на 1 знакоместо в право, а потом на 1 знакоместо влево. Это будет считаться необходимым перемещением для появление эффекта?
ну дык п
если ты сместишь картинку на 16 половин пикселей влево и нарисуешь спрайт с пикселями 1357
а потом сместишь картинку на 16 половин пикселей вправо и нарисуешь опять спрайт с пикселями 1357
то моск никак не увидит пиксели 0246
и никак не сможет их вставить между пикселям 1357...
для появление эффекта нужно постоянное чередование этих кадров
и желательно каждый кадр (не обязательно именно фрейм)
то есть если показывать спрайты 1357 1357 1357 0246 1357 1357 1357 0246
это будет тупое мигание
для 2х мастшаба нужна скорость\шаг перемещения спрайта с половиной после запятой
0,5 1,5 2,5 итд
чтобы спрайты всегда чередовались
1357 0246 1357 0246 1357 0246 1357
скорей всего с увеличением шага
эффект будет резко ухудшаться
я даже не уверен сохраниться ли эффект вообще
при перемещении больше чем на 0,5 пикселя (для 2х масштаба)
тк не экспериментировал с таким вариантом...
А при вертикальном перемещении эффект появляется?
ну если у нас "большой" спрайт
0123
4567
89AB
CDEF
при перемещении по горизонтали
будут видны только пиксели
02
8A
13
9B
4567
CDEF
тупо не будут видны
тоесть если мы двигаем по вертикали
у нас удвоенное разрешение по вертикали
но НЕ удвоенное по горизонтали
если мы двигаем по горизонтали
у нас удвоенное по горизонтали
и не удвоенное по вертикали
если быстренько двигать по двум осям в разных направлениях
по идеи сможем видеть удвоение по обоим осям
так же если сделать минимальную ширину\высоту какого либо элемент спрайта меньше чем один физический пиксель
то в какой то момент времени
на экране этот элемент будет успешно исчезать и появляться
а если по одной из осей перемещения не будет
то исчезать мелкие объекты будут на долго...
вот один полтора пикселя пожалуйста
это прокатит
То есть возможна два расположение: горизонтальное и вертикальное. А если для каждого случая готовить отдельный вариант? Либо полностью свои версии программ, либо настраивать в меню.
и кроме вертикального и горизонтального
пиксели могут быть rgb и bgr
...
а так можно просто забить
если крутить эту gif-ку со скоростью кадров 50 в секунду
то моск вытягивает чб надпись при любом масштабировании gif-ки
https://jpegshare.net/images/d6/74/d67421c183f6bdd2984fe32be451b868.gif
Спасибо! Буду пытаться всё это осмыслить.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot