
Because fill patterns can be defined in the upper bits of a colour parameter, you can get per-face patterns for free
// WIP for #picotron 0.3.1

More surreal rendering tests for #picotron 0.3.1, this time with tline3d textures x colour tables. Notes and gif:
www.lexaloffle.com/bbs/?pid=193...

Yes, it uses the new line() flag that skips the last pixel (same as tline), so you get one pixel for each x integer boundary crossing. And lerp() flag gives you one scanline for each y integer boundary crossing. So offset everything by -0.5, -0.5 if want polygons that cover pixel centers.

Checking that quad boundaries join up with no holes or overlaps. This one kind of reminds me of a colour plate from an 80s siggraph paper. #picotron


It was an easy fix but I keep rolling back to the buggy version to try variations.

Similar, using the additive colour table from /system/screensavers/dizzy.p64 (1400 polys)
A target mask of 0x3f + fill patterns still gives 6 pixels / cycle, so not much of the cpu work actually happens in the scanline filling stage.
#picotron

More batch lerp() / line() tests for #picotron 0.3.1
The batch lerp can take a table of parameters that are each themselves an index into a quad definition. There's something like 3 layers of indirection going on there, but it enables a very tiny per-quad inner loop.
(1000 polys / 60fps / 55% cpu)

Sometimes it's easier to visualize low-level #picotron runtime bugs using a renderer, but with the added risk of spending time playing with pretty glitches.

[Tokyo] #picotachi vol.84 is this Saturday (July 25th) at
@picopicocafe.bsky.social
// 7pm~, cafe open from 2pm ~ DM us if you'd like to show or talk about something (tiny / WIP projects welcome), or email: picopicocafe @ gmail (EN/JP). See you there!
☕ www.picotachi.com

zep.p8@lexaloffle· Jul 12 Glowy quads for debugging #picotron, and suddenly a 90s advertisement for B2B IT Solutions. DATACUBE SYSTEMS LLC

zep.p8@lexaloffle· Jul 10 * sorry, quad:lerp(hline, edge_x0i, edge_x1i, y0i, y1i, 0x07)
They are all lookup indexes into the quad definition, so can pre-calculate static tables of edge lerping look-ups. (avoids having trapezoid splitting in lua).

WIP doodlemud for #picotron
(you can turn into a ball whenever you like)

More WIP #picotron quad rendering using batch ud:dot() and ud:cull_gt() for backface / nearplane culling. This wireframe sphere is drawing ~2k wireframe quads (of 4k) at ~70% cpu using a :take() call + batch line() call per quad.

Testing some #picotron userdata improvements useful for writing polygon renderers in userland:
ud:rdiv(1.0) gives 1.0 / v
batch ud:dot() for backface culling
:sweep(q) to remove rows where ud:get(n,row) < q
:sort by range
faster :lerp (-> fill batch scanline draws)

zep.p8@lexaloffle· Jun 21 #picotron tip: press shift-ctrl-R to reload a single code tab without resetting the program state.
// 0.3.0e fixes the crash that happens if there's no tab to reload

bonus: some earlier video games my brother and I made out of paper. You could stick thin strips of carboard through openings that allowed one person to control monsters / objects draw on the end, and the other to control the player.

I had a great weekend at #pigcon meeting #pico8 folks and talking about design loops (which I believe will be available online later). I forgot to show this slide, which my Dad dug out of storage and appears to be the first fantasy machine I designed when I was around 8.

zep.p8@lexaloffle· May 26 #picotron 0.3.0d is up. Faster scoresub(), batch scaled sprites, and a whole bunch of little improvements. www.picotron.net
Changelog: www.lexaloffle.com/dl/docs/pico...

zep.p8@lexaloffle· May 24 Testing batch #picotron 0.3.0d sspr // draw many scaled sprites with a single call by passing a userdata table of call parameters. Each row has its own src and dest region + anchoring bits (bottom center in this case).

zep.p8@lexaloffle· May 23 In general I find C and Lua occupy two completely separate parts of my brain, but it finally happened. #picotron

zep.p8@lexaloffle· May 20 More batched sspr drawing for #picotron 0.3.0d. Bits 0xf0000 in the sprite index can be used to anchor each sprite centered or right justified (used here to scale each sprite centered).

zep.p8@lexaloffle· May 20 batch sspr() calls for #picotron 0.3.0d
The sprite index can have bits 0x4000, 0x8000 set to flip horizontally / vertically (same as the map tile bits).

zep.p8@lexaloffle· May 15 [Tokyo] #picotachi vol.82 is next week! Saturday May 23rd at @picopicocafe.bsky.social
// 7pm~, cafe open from 2pm // DM us if you'd like to show or talk about something (tiny / WIP projects welcome), or email: picopicocafe @ gmail // ☕ More info: www.picotachi.com


what's the point of having a title screen if you can't mess with it? #picotron

wip grid fx for a #picotron port of neko puzzle
(you can turn them off)

#picotron now supports family LXO accounts: add up to 5 family members to your lexaloffle account via the settings page --> each one can log in to Picotron with a separate player identity. Also handy for testing multiplayer carts, and works under web too!
www.lexaloffle.com/lxo