ç¡æã§éã¹ãã¢ãã€ã«ã²ãŒã ã®éçºã«äŒŽããæ°ããã°ã©ãã£ãã¯ã¹ãæ°ããæ©èœãšãšãã«å®æçã«è¿œå ãããŠããŸãã ãã®äžéšã¯ãã£ã¹ããªãã¥ãŒã·ã§ã³ã«å«ãŸããŠãããäžéšã¯ã²ãŒã äžã«ããŠã³ããŒããããŸãã RAMãµã€ãºãå°ããããã€ã¹ã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããããã«ãéçºè
ã¯
ããŒããŠã§ã¢å§çž®ãã¯ã¹ãã£ã䜿çšã
ãŸã ã
ETC1圢åŒã¯ ãOpenGL ES 2.0ãæèŒãããã¹ãŠã®Androidããã€ã¹ã§ã®ãµããŒãã«å¿
é ã§ãããæ¶è²»ãããRAMãæé©åããããã®è¯ãåºçºç¹ã§ãã PNGãJPEGãWebP圢åŒãšæ¯èŒããŠãETC1ãã¯ã¹ãã£ã®èªã¿èŸŒã¿ã¯ãã¡ã¢ãªã®éåžžã®ã³ããŒã«ããéäžçãªèšç®ãªãã§å®è¡ãããŸãã äœéã¡ã¢ãªããé«éã¡ã¢ãªã«éä¿¡ããããã¯ã¹ãã£ããŒã¿ã®ãµã€ãºãå°ãããªããããã²ãŒã ã®ããã©ãŒãã³ã¹ãåäžããŸãã
OpenGL ES 3.0ãæèŒããããã€ã¹ã§ã¯ãETC1圢åŒã®ãã¯ã¹ãã£ã䜿çšã§ããŸããããã¯ãæ¹è¯ããã
ETC2圢åŒã®ãµãã»ãã
ã§ã ã
ETC1圢åŒã§ã®å§çž®ãã¯ã¹ãã£ã®äœ¿çš
ETC1圢åŒã«ã¯RGBã«ã©ãŒã³ã³ããŒãã³ãã®ã¿ãå«ãŸããŠãããããã¢ã«ãã¡ãã¬ã³ãã£ã³ã°ãç¡å¹ã«ããŠãã€ã³ãããããšããå§ãããäžéæãªèæ¯ã«é©ããŠããŸãã
éæãªã°ã©ãã£ãã¯ã¹ãã©ãããŸããïŒ ãã®ããã«ã2ã€ã®ãã¯ã¹ãã£ETC1ïŒä»¥é-2xETC1ïŒã䜿çšããŸãã
-æåã®ãã¯ã¹ãã£ã«å
ã®RGBãä¿åããŸãã
-2çªç®ã®ãã¯ã¹ãã£ã§ãå
ã®ã¢ã«ãã¡ïŒä»¥é-AïŒãRGBã³ã³ããŒãã³ãã«ã³ããŒããŠä¿åããŸãã
次ã«ã2xETC1ãã¯ã»ã«ã·ã§ãŒããŒã§ãæ¬¡ã®æ¹æ³ã§è²ã埩å
ããŸãã
uniform sampler2D u_Sampler; uniform sampler2D u_SamplerAlpha; varying vec2 v_TexCoords; varying vec4 v_Color; void main() { vec4 sample = texture2D(u_Sampler, v_TexCoords); sample.a = texture2D(u_SamplerAlpha, v_TexCoords).r; gl_FragColor = sample * v_Color; }
ETC1圢åŒã«å§çž®ããåã«ã¢ãã©ã¹ãæºåããæ©èœ
ETC1圢åŒã¯ç¬ç«ãã4x4ãã¯ã»ã«ãããã¯ã䜿çšãããããç°ãªãèŠçŽ ãå
±éãããã¯ã«å
¥ããªãããã«ãã¢ãã©ã¹ã«é
眮ãããèŠçŽ ã®äœçœ®ã4ãã¯ã»ã«ã«æããããšããå§ãããŸãã
ã¢ãã©ã¹ã«é
眮ããããã¹ãŠã®èŠçŽ ã¯ã1ã2ãã¯ã»ã«ã®åãã®è¿œå ã®ä¿è·ãã¬ãŒã ãå¿
èŠãªã®ã§ãé¢ç©ããããã«å¢å ããŸãã ããã¯ãã¬ã³ããªã³ã°ã®åæ°åº§æšïŒã¹ãã©ã€ãã®æ»ãããªåãã«ããïŒãšãã¯ã¹ãã£ã®ãã€ãªãã¢ãã£ã«ã¿ãªã³ã°ã«ãããã®ã§ãã äœãèµ·ãã£ãŠããã®ããæ°åŠçã«æ£åœåããã«ã¯ãå¥ã®èšäºãå¿
èŠã§ãã
å€è§åœ¢ã®ã¢ãã©ã¹ã®å ŽåãèŠçŽ ã¯èš±å®¹å¯èœãªè·é¢ãŸã§é¢å©ããŸãã 4TC ETC1ãããã¯ã¯ãã¹ãŠã2x4ãŸãã¯4x2ã®ã¹ããªããã®ãã¢ã§æ§æãããŠããããã2ãã¯ã»ã«ã®è·é¢ã§ãè¯å¥œãªæç±å¹æãåŸãããŸãã
ETC1圢åŒã«å®æ§çã«å§çž®ã§ãããã®ã¯äœã§ããïŒ
ç¡æã®ãŠãŒãã£ãªãã£ã®äžãã
éžæã§ããŸãã
-ETC2Comp ;
-Mali GPUãã¯ã¹ãã£å§çž®ããŒã« ã
-PVRTexTool ;
-rg-etc1é«å質ã®ã°ã©ãã£ãã¯å§çž®ãè¡ãã«ã¯ãç¥èŠã®ç¹æ§ãèæ
®ããç¥èŠææšãèšå®ããäœéã¢ãŒããšæé©ã¢ãŒããéžæããå¿
èŠããããŸãã ãã¯ã¹ãã£2048x2048ã宿§çã«å§çž®ããããšãããšãããã¯é·ãããã»ã¹ã§ããããšãããããŸã...ãããããå€ãã®éçºè
ãäžé«éã®é«éãªä»£æ¿ææ®µã«å¶éãããŠããçç±ã§ãã ãã£ãšè¯ãããããšã¯å¯èœã§ããïŒ
Playrixããã°ã©ããŒã®1人ã«ããç¬èªã®ãŠãŒãã£ãªãã£
EtcCompressã®ãŒãããã®äœæã®è©±ã¯ãETC1圢åŒã®ã°ã©ãã£ãã¯ã¹ã®æçµçãªå§çž®ã蚪åäžã«3æéã®èšªåãè¶
ãã2014幎1æã«ããã®ãŒããŸãã
ETC1圢åŒã§ã®é«å質å§çž®ã®ã¢ã€ãã¢
ETC1圢åŒã¯ç¬ç«ãããããã¯åœ¢åŒã§ãã ãããã£ãŠãåã
ã®ãããã¯ãå§çž®ããå€å
žçãªã¢ãããŒãã䜿çšããŸãããããã¯ååã«äžŠååãããŠããŸãã ãã¡ããããããã¯ã®ã»ãããèæ
®ããããšã§ãããã¯ã®çµåãæ¹åããããšãã§ããŸããããã®å Žåãã¢ãã©ã¹èŠçŽ ã«å±ããããšã«é¢ããæ
å ±ãå¿
èŠã«ãªããã¿ã¹ã¯ã®èšç®ã®è€éããæ¥æ¿ã«å¢å ããŸãã
dssimãŠãŒãã£ãªãã£ã¯ãå§çž®çµæã®æ¯èŒã«é©ããŠããŸãã

ãããã¯ããšã«ãã³ãŒãã§æé©ãªCompressBlockColor颿°ãèŠã€ããããã«ã4ã€ã®å¯èœãªãšã³ã³ãŒãã¢ãŒããã¹ãŠãå®è¡ããå¿
èŠããããŸãã
-2ã€ã®2x4ã¹ããªããïŒããããç¬èªã®åºæ¬çãª4ãããã«ã©ãŒãæã€ïŒã¯ãã³ãŒãã§CompressBlockColor44ïŒ...ã0ïŒãåŒã³åºããŸãã
-ã³ãŒãã§CompressBlockColor44ïŒ...ã1ïŒãåŒã³åºã2ã€ã®4x2ã¹ããªããããããããç¬èªã®åºæ¬çãª4ãããã«ã©ãŒãæã¡ãŸãã
-2ã€ã®2x4ã¹ããªãããæåã®ã³ãŒãã¯åºæ¬çãª5ãããè²ã2çªç®ã®ã³ãŒãã¯CompressBlockColor53ïŒ...ã2ïŒãåŒã³åºãã³ãŒãã§3ãããã®ç¯å²ã®æåã®ã³ãŒããšã¯åºæ¬è²ãç°ãªããŸãã
-2ã€ã®4x2ã¹ããªãããæåã¯åºæ¬çãª5ãããè²ã2çªç®ã¯3ãããç¯å²ã®æåãšåºæ¬è²ãç°ãªãã³ãŒãã§ãCompressBlockColor53ïŒ...ã3ïŒãåŒã³åºããŸãã
 |  |  |  |
2x4ã444 + 444 | 4x2ã444 + 444 | 2x4ã555 + 333 | 4x2ã555 + 333 |

ãšã©ãŒãšããã°ãå€ãã®ãŠãŒãã£ãªãã£ã¯åŸæ¥ã®
PSNRã䜿çšããŸãã ãã®ã¡ããªãã¯ã䜿çšããŸãã
衚ããéã¿ãéžæã
ãŸã ã
PixelError = 0.715158 * (dstG - srcG)^2 + 0.212656 * (dstR - srcR)^2 + 0.072186 * (dstB - srcB)^2
ä¿æ°ã«1000ãæããŠäžžããããšã«ãããæŽæ°å€ã«ãªããŸãã 4x4ãããã¯ã®åæãšã©ãŒã¯
kUnknownError = (255^2) * 1000 * 16 + 1
ã«ãªããŸã
255
ã¯è²æåã®æå€§ãšã©ãŒã
1000
ã¯éã¿ã®åºå®åèšã16ã¯ãã¯ã»ã«æ°ã§ãã ãã®ãããªãšã©ãŒã¯
int32_t
é©åããŸãã æŽæ°ã®2ä¹ã¯ã
ã¬ã³ã2.2ãèæ
®ããããšã«æå³ãè¿ãããšã«æ°ä»ããããããŸããã
PSNRã«ã¯åŒ±ç¹ããããŸãã ããšãã°ããã¬ãã
c1 = c0 - d
ããã³
c2 = c0 + d
ããéžæããŠè²
c0
å¡ãã€ã¶ããã³ãŒãã£ã³ã°ãããšãåããšã©ãŒ
d^2
çºçããŸãã ããã¯ãããããçš®é¡ã®ãã§ãã«ãŒã䌎ã
c1
ãš
c2
éã®ã©ã³ãã ãªéžæãæå³ããŸãã
çµæãæ¹åããããã«ããããã¯å
ã®æçµèšç®ã
SSIMã«ãã£ãŠå®è¡ãããŸãã ã³ãŒãã§ã¯ãããã¯ãSSIM_INITãSSIM_UPDATEãSSIM_CLOSEãSSIM_OTHERãSSIM_FINALã®ãã¯ãã䜿çšããŠãComputeTableColor颿°ã§å®è¡ãããŸãã èãã¯ãæé«ã®PSNRïŒèŠã€ãã£ããšã³ã³ãŒãã¢ãŒãïŒãæã€ãã¹ãŠã®ãœãªã¥ãŒã·ã§ã³ã«å¯ŸããŠãæé«ã®SSIMãæã€ãœãªã¥ãŒã·ã§ã³ãéžæããããšããããšã§ãã

ãããã¯ã³ãŒãã£ã³ã°ã¢ãŒãããšã«ãåºæ¬è²ã®ãã¹ãŠã®å¯èœãªçµã¿åãããå®è¡ããå¿
èŠããããŸãã ç¬ç«ããåºæ¬è²ã®å ŽåãCompressBlockColor44颿°ã¯ãGuessColor4颿°ã®2ã€ã®åŒã³åºãã§ã¹ãã©ã€ããç¬ç«ããŠå§çž®ããŸãã
GuessColor4颿°ã¯ãåå·®ãšããŒã¹ã«ã©ãŒã³ã³ããŒãã³ããå埩åŠçããŸãã
for (int q = 0; q < 8; q++) for (int c0 = 0; c0 < c0_count; c0++)
äŸåããããŒã¹ã«ã©ãŒã®å Žåãã¹ããªãããµã€ã¯ã«ãäºéã«ãã¹ãããããããã¢ã«ãŽãªãºã ã®è€éããå¢ããŸãã CompressBlockColor53颿°ã¯ãåå·®ãåæããŸãã
for (int qa = 0; qa < 8; qa++) for (int qb = 0; qb < 8; qb++) AdjustColors53(qa, qb);
AdjustColors53颿°ã¯ã2ã€ã®åºæ¬è²ã®ã³ã³ããŒãã³ããåæããŸãã
for (int a0 = 0; a0 < a0_count; a0++)
æç€ºããã培åºçãªæ€çŽ¢ã¯ãåæ§ã®ãŠãŒãã£ãªãã£ã®æé«ã®å§çž®ã¢ãŒããããé«éã§ã¯ãããŸããããããã¯åŸ¹åºçãªæ€çŽ¢ã§ãããããã«é«éåãããŸãã

2xETC1ã°ã©ãã£ãã¯ã¹ã®å Žåãäžè¬çãªå Žåã®å®å
šã«éæãªãã¯ã»ã«ã¯ããŒãã¢ã«ãã¡ãä¹ç®ãããä»»æã®RGBã«ã©ãŒãæã€ããšãã§ããŸãã
éèŠã§ã¯ãªããã¯ã»ã«ã¯ç¡èŠã§ããŸãããã®ãããæåã¯FilterPixelsColorã®åŒã³åºãã§ããã³ãŒãã§ãã£ã«ã¿ãªã³ã°ããŸãã äžæ¹ããã¹ãŠã®éæãã¯ã»ã«ãéèŠãšããããã§ã¯ãããŸãããå°ãªããšã1ã2ãã¯ã»ã«ã®ä¿è·ãã¬ãŒã ãš
å¢çãçœããã广ãæãåºã
ãŠãã ãã ã
ãããã£ãŠãã¹ãã³ã·ã«ãäœæããŸãããã®å ŽåããŒãã¯éèŠã§ãªããã¯ã»ã«ãæå³ããæ£ã®å€ã¯éèŠãªãã¯ã»ã«ã瀺ããŸãã ã¹ãã³ã·ã«ã¯ãOutlineAlpha颿°ã§ããã³ãŒãã«ã¹ãããŒã¯ïŒéåžžã¯1ãã¯ã»ã«ãŸãã¯2ãã¯ã»ã«ã®ãµã€ãºïŒãé©çšããããšã«ããããã£ãã«Aã«åºã¥ããŠäœæãããŸãã
å®è·µã瀺ããŠããããã«ãã¹ãã³ã·ã«ã䜿çšãããšããªããžã§ã¯ãã®å§çž®ãããå¢çãæ¹åãããç®ã«èŠããªããããã¯ãããã«é©åã«ããã±ãŒãžåããããžãããã©ãã¯ã®è²ã«ãªããŸãã ãªã¹ãããããŠãŒãã£ãªãã£ãå«ãRGBãšAã®åå¥ã®å§çž®ãšæ¯èŒããŠãå質ã®é¡èãªåäžãããããã®ã¯ã¹ãã³ã·ã«ã®ã¢ã€ãã¢ã§ãã
ãããã£ãŠã2xETC1å§çž®ã¯ãEtcMainWithArgs颿°ã«å®è£
ãããæ¬¡ã®æé ã§è¡šãããšãã§ããŸãã
1ïŒãã£ãã«AãETC1圢åŒã«å§çž®ããŸãã
2ïŒå§çž®ããããã£ãã«Aãè§£åããŸãã
3ïŒå¯èŠã®ã¹ãããŒã¯ãäœæããŸãïŒA> 0ïŒãã¹ãã³ã·ã«ãååŸããŸãã
4ïŒã¹ãã³ã·ã«ãèæ
®ããŠãRGBãã£ã³ãã«ãETC1圢åŒã«å§çž®ããŸãã
ETC1圢åŒãžã®å質ã®å§çž®ãå éããããã®ã¢ã€ãã¢
ãŠãŒãã£ãªãã£ããã®çšéãèŠã€ããããã«ã¯ãçµæã®å質ã«å ããŠãåäœæéãéèŠã§ãã èæ
®ãããç¶²çŸ
çãããã¯å§çž®ã¢ã«ãŽãªãºã ã¯ã貪欲ãªã¢ã«ãŽãªãºã ã«åºã¥ãããã®ãå«ããäœæ¥éçšã«ãããè¿
éãªåæãã¥ãŒãªã¹ãã£ãã¯æšå®ããã³æçšãªã«ãããªãã«å€ããŸãã

ç¬ç«ãããããã¯åœ¢åŒã®å Žåãå¢åå§çž®ã¯ç°¡åã«å®è£
ã§ããŸãã ããšãã°ãåã®å§çž®ã®çµæãä¿åããããšãã
ãã®å Žåãããã«ãŒã¯åºåãã¡ã€ã«ãèªã¿åã£ãŠè§£åããæ¢åã®ãšã©ãŒãèšç®ããããšããŠããŸãããããæåã®è§£æ±ºçã«ãªããŸãã ãã¡ã€ã«ãååšããªãå ŽåããŒãã®åæè§£ãååŸãããŸãã ã³ãŒãã§ã¯ãããã¯LoadEtc1ãCompressBlockColorãMeasureHalfColorã§ãã
æ¬¡ã®æé ã§ã¯ãè€éããå¢ãã¢ã«ãŽãªãºã ã䜿çšããŠæ¢åã®ãœãªã¥ãŒã·ã§ã³ã®æ¹åã詊ã¿ãŸãã ãããã£ãŠãé«éã®CompressBlockColor44ãæåã«åŒã³åºãããæ¬¡ã«äœéã®CompressBlockColor53ãåŒã³åºãããŸãã å°æ¥ã®ãã®ãããªãã§ãŒã³èšèšã«ãããå§çž®ãETC2圢åŒã«çµ±åã§ããããã«ãªããŸãã

ãã¹ããããã«ãŒãã§åæãéå§ããåã«ãè²æåã®ã³ã³ããã¹ãã§è§£æ±ºçãèŠã€ããããšã¯çã«ããªã£ãŠããŸãã äºå®ãæè¯ã®è§£æ±ºçã¯ãåã³ã³ããŒãã³ãGãRãBã®æè¯ã®è§£æ±ºçã®ç·èª€å·®ãããå°ãã誀差ãæã€ããšã¯ã§ããŸãããå€ãã®å Žåãçµæã®èª€å·®ã¯èãã倧ãããªããETC1ã¢ã«ãŽãªãºã ã®éç·åœ¢æ§ãšè€éããç¹åŸŽã¥ããŸãã
è²æåã«ãããœãªã¥ãŒã·ã§ã³ã¯ãGuessStateColorããã³AdjustStateColoræ§é ã§è¡šãããŸãã åå·®ããŒãã«g_tableã®åå€ã«ã€ããŠãããŒãã¹ããªããã®ãšã©ãŒãèšç®ããããã£ãŒã«ãnode0ãnode1ãnode2ã«ä¿åãããŸãã ããã«ãGuessStateColorã€ã³ããã¯ã¹[0x00..0x0F]ã¯ãå¯èœãªãã¹ãŠã®ããŒã¹ã«ã©ãŒg_colors4ã®èšç®ããããšã©ãŒãæ ŒçŽããã€ã³ããã¯ã¹[0x10]ãæé©ãªãœãªã¥ãŒã·ã§ã³ã§ãã AdjustStateColorã®å Žåãæé©ãªãœãªã¥ãŒã·ã§ã³ã¯ã€ã³ããã¯ã¹[0x20]ã«æ ŒçŽãããå¯èœãªãã¹ãŠã®åºæ¬è²ã¯g_colors5ããååŸãããŸãã
ã«ã©ãŒã³ã³ããŒãã³ãã«ãããšã©ãŒèšç®ã¯ãInitLevelErrors颿°ã«ãã£ãŠä»¥åã«èšç®ãããg_errors4ãg_errors5ããŒãã«ã«åºã¥ããŠãComputeLevelãGuessLevelsãAdjustLevels颿°ã«ãã£ãŠå®è¡ãããŸãã

è²æåãå°å
¥ãããšã©ãŒã®æé ã§æŽçããããšã¯äŸ¡å€ããããŸã;ãã®ããããã£ãŒã«ãnode0ãnode1ãnode2ã¯SortNodes10ããã³SortNodes20颿°ã«ãã£ãŠãœãŒããããŸãã
äžŠã¹æ¿ããé«éåããããã«ãããŒã
ãµã€ãã§èšç®ãããäžŠã¹æ¿ããããã¯ãŒã¯
ã䜿çšãããŸãã
äžŠã¹æ¿ããåã«ãèŠã€ãã£ããœãªã¥ãŒã·ã§ã³ãè¶
ãã倧ããªãšã©ãŒãç Žæ£ããããšã¯çã«ããªã£ãŠããŸãã ããã«ããããã£ãŒã«ãnode0ãnode1ãnode2ã®èŠçŽ æ°ã倧å¹
ã«åæžããããœãŒããšåæã倧å¹
ã«é«éåãããŸãã

ComputeErrorGR颿°ã䜿çšããŠçŸåšã®GãRã®æé©ãªãœãªã¥ãŒã·ã§ã³ãèŠã€ããããšã«ãããè²æåGãRãBã®3çªç®ã®ãã¹ããããã«ãŒããåæããããšããããšãã§ããŸãã ãšããã§ããããã¯ãããã¡ã€ã©ãŒã®ãããã¹ãããã§ãã

äŸåããŒã¹ã«ã©ãŒã¢ãŒãã§ã¯ãæ€åºããããšã©ãŒãå€ãã®å Žåè²æåã®æ¥œèгçäºæž¬ãè¶
ããåæã«ã«ãããªãåºæºã§ãããããè¯å¥œãªå éã«ããåååã®æé©ãªãœãªã¥ãŒã·ã§ã³ãæ€çŽ¢ãããŸãã
ãŠã©ãŒã¯ããã³ããã æ©èœããããè¡ããŸãã

AdjustColors53颿°ã64ååŒã³åºããšãåãããŒã¹ã«ã©ãŒãã©ã¡ãŒã¿ãŒã䜿çšããŠComputeErrorGR颿°ãšComputeErrorGRB颿°ãç¹°ãè¿ãåŒã³åºãããšãã§ãããããåŒã³åºãã®çµæããã£ãã·ã¥ããŸãã æ¬¡ã«ããã£ãã·ã¥ãè¿
éã«åæåããããã«ã3çªç®ã®è²ã³ã³ããŒãã³ãã§é
å»¶èšç®ã䜿çšã§ããŸãã
AdjustStateColoræ§é äœã§ã¯ãLazyGRã«ãã£ãŠã¯ãªã¢ãããErrorsGãErrorsGRãã£ãŒã«ããããã³ErrorsGRBãã£ãŒã«ãã«ãããããã©ãŒãã³ã¹ã倧å¹
ã«åäžããŸãã

ããŸããŸãªã¢ã«ãŽãªãºã ã®æ¹ååŸãSIMDã䜿çšããŸãããã®å Žåããœãªã¥ãŒã·ã§ã³ã¯æŽæ°SSE4.1ã§å
¬éãããŠããŸãã 1ãã¯ã»ã«ã®ããŒã¿ã¯int32x4_tãšããŠä¿åãããŸãã
_mm_adds_epu8ããã³_mm_subs_epu8ã³ãã³ãã¯ãããŒã¹ã«ã©ãŒãšåå·®ãã4è²ãã¬ãããèšç®ããã®ã«äŸ¿å©ã§ãã
颿°ComputeErrorGRBããã³ComputeErrorGRã¯ãã»ãšãã©ã®å Žåããããæ·±åºŠãååãªã®ã§ã_mm_madd_epi16ã³ãã³ãã«ãã£ãŠæé©åãããéšåçã«å±éãããã«ãŒããæåã«äœ¿çšããŸãã 倧ããªãšã©ãŒã®å Žåã2çªç®ã®ãµã€ã¯ã«ã¯ãé
ãã_mm_mullo_epi32ã³ãã³ãã§æ©èœããŸãã
ComputeLevel颿°ã¯ã4ã€ã®åºæ¬è²å€ã®ãšã©ãŒãäžåºŠã«èšç®ããŸãã

1ã€ã®ãã£ã³ãã«Aãå§çž®ããã«ã¯ãçµæã®RGBå§çž®ã³ãŒããåçŽåã§ããŸãã ãã¹ããããã«ãŒããèããå°ãªããªããããã©ãŒãã³ã¹ãåäžããŸãã
éæãããçµæ
äžèšã®ã¢ãããŒãã¯ãããŒããŠã§ã¢åœ¢åŒETC1ã®å§çž®ãã¯ã¹ãã£ã䜿çšããããšã«ãããAndroidããŒãžã§ã³ã®ã²ãŒã ã®RAMèŠä»¶ãåæžã§ããŸãã
ã¢ãã©ã¹ãçæããããã®ã¹ã¯ãªãããšå§çž®ãŠãŒãã£ãªãã£èªäœã¯ãã¢ãŒãã£ãã¡ã¯ãã鲿¢ããå§çž®ãããã°ã©ãã£ãã¯ã®åè³ªãæ¹åããåé¡ã«æ³šæãæããŸãã
é©ãã¹ãããšã«ãå§çž®ãããã°ã©ãã£ãã¯ã®åè³ªãæ¹åãããšãšãã«ãå§çž®èªäœãå éããããšãã§ããŸããïŒ
Gardenscapesãããžã§ã¯ã
ã§ã¯ãIntel Core i7 6700ããã»ããµãŒã§ã¢ãã©ã¹ãETC1圢åŒã«å§çž®
ããã®ã«24ç§ããããŸãã ããã¯ãã¢ãã©ã¹èªäœãçæãããããé«éã§ã以åã®é«éå§çž®ãŠãŒãã£ãªãã£ãããæ°åé«éã§ãã ææ¡ãããå¢åå§çž®ã¯19ç§ã§è¡ãããŸãã
çµè«ãšããŠãIntel Core i7 6700ããã»ããµäžã®Win64
ã®EtcCompressãŠãŒãã£ãªãã£
ã«ãã£ãŠæäŸããã8192x8192 RGBãã¯ã¹ãã£ã®å§çž®äŸã瀺ããŸãã
x:\>EtcCompress Usage: EtcCompress [/retina] src [dst_color] [dst_alpha] [/debug result.png] x:\>EtcCompress 8192.png 1.etc /debug 1.png Loaded 8192.png Image 8192x8192, Texture 8192x8192 Compressed 4194304 blocks, elapsed 10988 ms, 381716 bps Saved 1.etc Texture RGB wPSNR = 42.796053, wSSIM_4x2 = 0.97524678 Saved 1.png x:\>EtcCompress 8192.png 1.etc /debug 2.png Loaded 8192.png Image 8192x8192, Texture 8192x8192 Loaded 1.etc Compressed 4194304 blocks, elapsed 6487 ms, 646570 bps Saved 1.etc Texture RGB wPSNR = 42.796053, wSSIM_4x2 = 0.97524678 Saved 2.png x:\>fc /b 1.png 2.png 1.png 2.png FC:
ãã®ãŠãŒãã£ãªãã£ãã¢ãã€ã«ã°ã©ãã£ãã¯ã¹ãå¹ççãã€è¿
éã«å§çž®ããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã