From 5bebf6ad71a92b422cbbcd91e4d5594653d3dffc Mon Sep 17 00:00:00 2001 From: Rezmason Date: Sun, 5 Jun 2022 11:36:20 -0700 Subject: [PATCH] Replaced dithering logic with compositing a pre-rendered dithered gradient. --- playdate/matrix_lua/images/fade-gradient.png | Bin 0 -> 2853 bytes ...trix-table-20-20.png => matrix-glyphs.png} | Bin playdate/matrix_lua/main.lua | 34 ++++++++++++------ playdate/matrix_lua/pdxinfo | 2 +- 4 files changed, 25 insertions(+), 11 deletions(-) create mode 100644 playdate/matrix_lua/images/fade-gradient.png rename playdate/matrix_lua/images/{matrix-table-20-20.png => matrix-glyphs.png} (100%) diff --git a/playdate/matrix_lua/images/fade-gradient.png b/playdate/matrix_lua/images/fade-gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8f97fd9f38a1dc6431889f3e84f8fe6553ba9d GIT binary patch literal 2853 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 S6R1Gxeq`BRTxN+!XzK66h=7X# literal 0 HcmV?d00001 diff --git a/playdate/matrix_lua/images/matrix-table-20-20.png b/playdate/matrix_lua/images/matrix-glyphs.png similarity index 100% rename from playdate/matrix_lua/images/matrix-table-20-20.png rename to playdate/matrix_lua/images/matrix-glyphs.png diff --git a/playdate/matrix_lua/main.lua b/playdate/matrix_lua/main.lua index 752d869..3f363e0 100644 --- a/playdate/matrix_lua/main.lua +++ b/playdate/matrix_lua/main.lua @@ -10,16 +10,30 @@ local numRows = floor(screenHeight / glyphWidth) local numCells = numColumns * numRows local numGlyphs = 133 -local numFades = 16 -local blackImage = gfx.image.new(glyphWidth, glyphWidth, gfx.kColorBlack) -local glyphTable = gfx.imagetable.new('images/matrix') -local ditherType = gfx.image.kDitherTypeAtkinson +local numFades = 32 local glyphs = {} -for i = 1, numGlyphs do - glyphs[i] = {} - local glyph = glyphTable[i] - for j = 1, numFades do - glyphs[i][j] = glyph:blendWithImage(blackImage, 1 - j / numFades, ditherType) + +do + local glyphSpritesheet = gfx.image.new('images/matrix-glyphs') + local spritesheetColumns = floor(glyphSpritesheet.width / glyphWidth) + local fadeGradient = gfx.image.new('images/fade-gradient') + local glyph = gfx.image.new(glyphWidth, glyphWidth, gfx.kColorBlack) + + for i = 1, numGlyphs do + local column = (i - 1) % spritesheetColumns + local row = floor((i - 1) / spritesheetColumns) + gfx.lockFocus(glyph) + glyphSpritesheet:draw(-column * glyphWidth, -row * glyphWidth) + gfx.unlockFocus() + glyphs[i] = {} + for j = 1, numFades do + local fade = (j - 1) / (numFades - 1) + local variant = glyph:copy() + glyphs[i][j] = variant + gfx.lockFocus(variant) + fadeGradient:draw(fade * (glyphWidth - fadeGradient.width), 0) + gfx.unlockFocus() + end end end @@ -66,7 +80,7 @@ for x = 1, numColumns do end end -playdate.display.setRefreshRate(24) +playdate.display.setRefreshRate(0) playdate.resetElapsedTime() function playdate.update() diff --git a/playdate/matrix_lua/pdxinfo b/playdate/matrix_lua/pdxinfo index c2f9ae8..c98e9cd 100644 --- a/playdate/matrix_lua/pdxinfo +++ b/playdate/matrix_lua/pdxinfo @@ -1,6 +1,6 @@ name=The Playtrix author=Rezmason -description=A familiar +description=A familiar animation of mysterious raining symbols. bundleID=net.rezmason.theplaytrix version=1.0 buildNumber=1