mikunyan 3.9.2 → 3.9.3
Sign up to get free protection for your applications and to get access to all the features.
- 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