mikunyan 3.9.2 → 3.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/mikunyan/decoders/astc_block_decoder.rb +12 -16
- data/lib/mikunyan/decoders/image_decoder.rb +15 -13
- data/lib/mikunyan/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f06ec3ed2d2eaaea9e59be6ff6ffa0622e2b20b6
|
4
|
+
data.tar.gz: c293990ac585f20bdd3ee041367fb6b92ba26a05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0511ea6b9a57d4623946497a5485f4c31b5f63094d8087f5e432cf63987866c2a48e7fb795472fe1d0929f0f423fa5635f5464632016560db40d2417ba0c55ec
|
7
|
+
data.tar.gz: 85628047ca5c0ab33497ec82eac07992fde156352fec1afa6fc2eeb8c9a698dc205b1fac7d4b10183a72f3386bb045e60661ccf7738ca1d4de33044ad790ea36
|
data/README.md
CHANGED
@@ -104,7 +104,7 @@ obj.key
|
|
104
104
|
|
105
105
|
You can get png file directly from Texture2D asset. Output object's class is `ChunkyPNG::Image`.
|
106
106
|
|
107
|
-
Some basic texture formats (1
|
107
|
+
Some basic texture formats (1–5, 7, 9, 13–20, 22, 62, and 63), ETC_RGB4 (34), ETC2 (45, 47), and ASTC (48–59) are available.
|
108
108
|
|
109
109
|
```ruby
|
110
110
|
require 'mikunyan/decoders'
|
@@ -345,24 +345,20 @@ module Mikunyan
|
|
345
345
|
sh.reverse! if seed & 1 == 0
|
346
346
|
seeds.map!.with_index{|e, i| e >> sh[i % 2]}
|
347
347
|
|
348
|
-
@partition =
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
x <<= 1
|
356
|
-
y <<= 1
|
357
|
-
end
|
348
|
+
@partition = (0...@bw * @bh).map do |i|
|
349
|
+
x = i % @bw
|
350
|
+
y = i / @bw
|
351
|
+
if small_block
|
352
|
+
x <<= 1
|
353
|
+
y <<= 1
|
354
|
+
end
|
358
355
|
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
356
|
+
a = (seeds[0] * x + seeds[1] * y + (rnum >> 14)) & 0x3f
|
357
|
+
b = (seeds[2] * x + seeds[3] * y + (rnum >> 10)) & 0x3f
|
358
|
+
c = @part_num < 3 ? 0 : (seeds[4] * x + seeds[5] * y + (rnum >> 6)) & 0x3f
|
359
|
+
d = @part_num < 4 ? 0 : (seeds[6] * x + seeds[7] * y + (rnum >> 2)) & 0x3f
|
363
360
|
|
364
|
-
|
365
|
-
end
|
361
|
+
3 - [d, c, b, a].each_with_index.max[1]
|
366
362
|
end
|
367
363
|
end
|
368
364
|
end
|
@@ -359,14 +359,14 @@ module Mikunyan
|
|
359
359
|
def self.decode_etc1(width, height, bin)
|
360
360
|
bw = (width + 3) / 4
|
361
361
|
bh = (height + 3) / 4
|
362
|
-
ret = ChunkyPNG::Image.new(
|
362
|
+
ret = ChunkyPNG::Image.new(bh * 4, bw * 4)
|
363
363
|
bh.times do |by|
|
364
364
|
bw.times do |bx|
|
365
365
|
block = decode_etc1_block(BinUtils.get_sint64_be(bin, (bx + by * bw) * 8))
|
366
|
-
ret.replace!(ChunkyPNG::Image.from_rgb_stream(4, 4, block),
|
366
|
+
ret.replace!(ChunkyPNG::Image.from_rgb_stream(4, 4, block), by * 4, bx * 4)
|
367
367
|
end
|
368
368
|
end
|
369
|
-
ret.crop(0, 0,
|
369
|
+
ret.crop(0, 0, height, width).rotate_left
|
370
370
|
end
|
371
371
|
|
372
372
|
# Decode image from ETC2 compressed binary
|
@@ -377,14 +377,14 @@ module Mikunyan
|
|
377
377
|
def self.decode_etc2rgb(width, height, bin)
|
378
378
|
bw = (width + 3) / 4
|
379
379
|
bh = (height + 3) / 4
|
380
|
-
ret = ChunkyPNG::Image.new(
|
380
|
+
ret = ChunkyPNG::Image.new(bh * 4, bw * 4)
|
381
381
|
bh.times do |by|
|
382
382
|
bw.times do |bx|
|
383
383
|
block = decode_etc2_block(BinUtils.get_sint64_be(bin, (bx + by * bw) * 8))
|
384
|
-
ret.replace!(ChunkyPNG::Image.from_rgb_stream(4, 4, block),
|
384
|
+
ret.replace!(ChunkyPNG::Image.from_rgb_stream(4, 4, block.join), by * 4, bx * 4)
|
385
385
|
end
|
386
386
|
end
|
387
|
-
ret.crop(0, 0,
|
387
|
+
ret.crop(0, 0, height, width).rotate_left
|
388
388
|
end
|
389
389
|
|
390
390
|
# Decode image from ETC2 Alpha8 compressed binary
|
@@ -395,17 +395,17 @@ module Mikunyan
|
|
395
395
|
def self.decode_etc2rgba8(width, height, bin)
|
396
396
|
bw = (width + 3) / 4
|
397
397
|
bh = (height + 3) / 4
|
398
|
-
|
398
|
+
ret = ChunkyPNG::Image.new(bh * 4, bw * 4)
|
399
399
|
bh.times do |by|
|
400
400
|
bw.times do |bx|
|
401
401
|
alpha = decode_etc2alpha_block(BinUtils.get_int64_be(bin, (bx + by * bw) * 16))
|
402
402
|
block = decode_etc2_block(BinUtils.get_int64_be(bin, (bx + by * bw) * 16 + 8))
|
403
|
-
|
404
|
-
|
405
|
-
|
403
|
+
mem = String.new(capacity: 64)
|
404
|
+
16.times{|i| mem << block[i] + alpha[i]}
|
405
|
+
ret.replace!(ChunkyPNG::Image.from_rgba_stream(4, 4, mem), by * 4, bx * 4)
|
406
406
|
end
|
407
407
|
end
|
408
|
-
|
408
|
+
ret.crop(0, 0, height, width).rotate_left
|
409
409
|
end
|
410
410
|
|
411
411
|
# Decode image from ASTC compressed binary
|
@@ -498,10 +498,12 @@ module Mikunyan
|
|
498
498
|
colors[1] = colors[1] | (colors[1] >> 5 & 0x70707)
|
499
499
|
end
|
500
500
|
|
501
|
-
(
|
501
|
+
mem = Fiddle::Pointer.malloc(48)
|
502
|
+
16.times do |i|
|
502
503
|
modifier = Etc1ModifierTable[codes[subblocks[i]]][bin[i]]
|
503
|
-
etc1colormod(colors[subblocks[i]], bin[i + 16] == 0 ? modifier : -modifier)
|
504
|
+
mem[i * 3, 3] = etc1colormod(colors[subblocks[i]], bin[i + 16] == 0 ? modifier : -modifier)
|
504
505
|
end
|
506
|
+
mem.to_str
|
505
507
|
end
|
506
508
|
|
507
509
|
def self.etc1colormod(color, modifier)
|
data/lib/mikunyan/version.rb
CHANGED