-
-
Notifications
You must be signed in to change notification settings - Fork 113
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
unify blitters using dankblit algorithm #1096
Comments
Would it pick the optimal character from the entire set ∪{8x1,2x2,3x2} (obviously, {1,2,4}x1 are made entirely redundant by 8x1, and there would also be a bit of redundancy between individual characters in the remaining 3 subsets), or would it still be restricted to a single subset within the union? |
What is implied here is you would still use the current API (i.e. specify some To answer your question (I think), As for, say, adding UPPER HALF and LOWER HALF to sexblitter, it's a nice thought -- it suggests you could get still "more" vertical resolution -- but it doesn't actually work out, i think, because you've got to map the same number of pixels to each row...hrmm maybe it could be made to. I'm unsure. Will think. but this bug is all about just internal reorganization, ideally with no user-visible side effects. |
Yup, that's more or less what I was getting at. Also adding the horizontal eighth blocks (U+258{9,B,D,F}) to gain horizontal resolution, and possibly the quadrant blocks if those happen to render a set of pixels with higher fidelity than a sextant block (e.g., if the set of pixels comprising the cell is close to perfectly quartered or horizontally bisected). Basically, a blitter that chooses the optimal glyph from the combination of all unique glyphs from |
So before we blit, especially with the aspectratio-nonmaintaining quad/sex blitter, we regularly run a resize via the multimedia engine. E.g. let's blit a 4096x4096 image to a 64x256 terminal.
so i run the blitting analysis on this scaled image, scaled to the optimal geometry for the blitter. three pixel rows for sexblitter correspond to one cell row. there's no way that 3 pixel rows can be perfectly bisected (i mean, maybe if you have { A, (A + B)/2 , B} you're best off going to { (2A + B) / 2, (A + 2B) / 2 } or something rather than sexblitter's choice of { (2A + B) / 2 on a 2/3 upper block and B on a on a lower 1/3 block }). so it seems we'd have to scale to some least common multiple LCM (6 for quadblitter + sexblitter), which blows up analysis time, and also means we're effectively doing scaling that could have been left to the (presumably much more competent) media layer. i haven't sat down and proven any of this out, though. so feel free to hit back with real analysis (pun not intended)! |
we're using the inverse of dankblit to implement the modern, panblitter |
We've completed the inverse panblitter |
During the course of sexblitter development, I worked out a general algorithm that takes as input
and blits its little heart out. We ought be able to collapse the 909 lines in
blit.c
to maybe 200 or fewer.The text was updated successfully, but these errors were encountered: