Google ΠΈ Π±ΠΈΠ½ΠΎΠΌ
Basis Universal Π΄ΠΎΠΏΡΠ»Π²Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎΡΠΎ
Π€ΠΎΡΠΌΠ°ΡΡΡ Basis Universal Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΠ΅ GPU ΡΠ΅ΠΊΡΡΡΡΠΈ, Π½ΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡ.
Basis Π΅ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΡΠΎΡΠΌΠ°Ρ, ΠΊΠΎΠΉΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π±ΡΡΠ·ΠΎ ΠΏΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° GPU ΡΠ΅ΠΊΡΡΡΡΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΊΠ°ΠΊΡΠΎ Π½Π° Π½Π°ΡΡΠΎΠ»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π½Π° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΡΠ΅Π΄ΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π°. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠΎΡΠΌΠ°ΡΠΈ PVRTC1 (4bpp RGB), BC7 (6 RGB ΡΠ΅ΠΆΠΈΠΌ), BC1-5, ETC1 ΠΈ ETC2. ΠΡΠ°ΠΊΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠΎΡΠΌΠ°Ρ ASTC (RGB ΠΈΠ»ΠΈ RGBA) ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ 4/5 RGBA Π·Π° BC7 ΠΈ 4bpp RGBA Π·Π° PVRTC1.
Π’Π΅ΠΊΡΡΡΡΠΈΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΡΠΎΡΠΌΠ°Ρ Π·Π°Π΅ΠΌΠ°Ρ 6-8 ΠΏΡΡΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΏΡΠ΅Ρ
Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠΈΠΏΠΈΡΠ½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΡΡΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° JPEG ΡΠΎΡΠΌΠ°Ρ ΠΈ 10-25% ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ ΡΠ΅ΠΊΡΡΡΡΠΈΡΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌ RDO. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° JPEG ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ 891 KB ΠΈ ETC1 ΡΠ΅ΠΊΡΡΡΡΠ° ΠΎΡ 1 MB, ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ Basis Π΅ 469 KB Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π½Π°ΠΉ-Π²ΠΈΡΠΎΠΊΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ. ΠΡΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΠ΅ΠΊΡΡΡΡΠΈ Π²ΡΠ² Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, JPEG ΠΈ PNG ΡΠ΅ΠΊΡΡΡΡΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅, ΠΈΠ·ΡΠ°Π·Ρ
ΠΎΠ΄Π²Π°Ρ 16 MB ΠΏΠ°ΠΌΠ΅Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅ΠΊΡΡΡΡΠΈΡΠ΅ Π²
ΠΡΠ½ΠΎΠ²Π°ΡΠ° ΠΈΠ·ΠΈΡΠΊΠ²Π° 2 MB ΠΏΠ°ΠΌΠ΅Ρ Π·Π° ΠΏΡΠ΅Π²ΠΎΠ΄ ΠΊΡΠΌ BC1, PVRTC1 ΠΈ ETC1 ΠΈ 4 MB Π·Π° ΠΏΡΠ΅Π²ΠΎΠ΄ ΠΊΡΠΌ BC7.
ΠΡΠΎΡΠ΅ΡΡΡ Π½Π° ΠΌΠΈΠ³ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΡΠΌ Basis Universal Π΅ Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡ. ΠΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° ΠΏΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΡΡΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π½ΠΎΠ² ΡΠΎΡΠΌΠ°Ρ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° βbasisuβ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠ°ΡΠΎ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΏΡΠ΅Π΄ΠΈ ΠΊΠΎΠ΄Π° Π·Π° ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΡΠ°Π½ΡΠΊΠΎΠ΄Π΅ΡΠ° Π½Π° baseu, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° ΠΏΡΠ΅Π²ΠΎΠ΄Π° Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈΡ ΡΠΎΡΠΌΠ°Ρ Π²ΡΠ² ΡΠΎΡΠΌΠ°ΡΠ°, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡ GPU. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° ΠΏΠΎ ΡΡΠ»Π°ΡΠ° Π²Π΅ΡΠΈΠ³Π° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΡΠ°Π²Π°Ρ ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½ΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π°ΡΠ΅Π΄Π΅Π½ΠΈ Π² ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½Π° ΡΠΎΡΠΌΠ° Π² GPU. ΠΠΌΠ΅ΡΡΠΎ ΠΏΡΠ΅Π²Π°Π½ΡΠΈΠ²Π½ΠΎ ΠΏΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, GPU ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ° ΡΠ°ΠΌΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΡΠ°ΡΡΠΈ ΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
Π’ΠΎΠΉ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½ΠΈ ΡΠ΅ΠΊΡΡΡΡΠ½ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ (ΠΊΡΠ±ΠΈΡΠ½ΠΈ ΠΊΠ°ΡΡΠΈ), ΠΎΠ±Π΅ΠΌΠ½ΠΈ ΡΠ΅ΠΊΡΡΡΡΠΈ, ΡΠ΅ΠΊΡΡΡΡΠ½ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ, Π½ΠΈΠ²Π° Π½Π° mipmap, Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΠ΅ΠΊΡΡΡΡΠ½ΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈ Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°ΡΠ΅ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ», Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΌΠ°Π»ΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠΎΠ²Π΅, ΠΈΠ»ΠΈ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΊΡΡΡΡΠΈ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΠ±ΡΠ° ΠΏΠ°Π»ΠΈΡΡΠ° Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄Π΅Π΄ΡΠΏΠ»ΠΈΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Π΅Π½ΠΊΠΎΠ΄Π΅ΡΠ° Basis Universal ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΌΠ½ΠΎΠ³ΠΎΠ½ΠΈΡΠΊΠΎΠ²ΠΎ ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° OpenMP. ΠΠΎΠ½Π°ΡΡΠΎΡΡΠ΅ΠΌ ΡΡΠ°Π½ΡΠΊΠΎΠ΄Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΌΠΎ Π² Π΅Π΄Π½ΠΎΠΏΠΎΡΠΎΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°
ΠΡΠ±Π΅Π»ΡΠ·Π²Π° ΡΠ΅, ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π²Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°ΠΌΠΎ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° GPU ΠΏΡΠ°Π²ΠΈ Basis Universal ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π½Π° WebAssembly ΠΈ WebGL, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΡΡΠΎΡΠΈΡΠΈ ΠΌΠ°Π»ΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠΎΠ²Π΅ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°. ΠΠΎΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π½Π° SIMD Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² WebAssembly Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈ ΠΊΠΎΠ΄Π΅ΡΠΈ, ΡΠΎΠ²Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΏΠΎΡΡΠΈΠΆΠΈΠΌΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° ΡΠ΅ΠΊΡΡΡΡΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΠΎ Π²ΠΈΠ΄Π΅ΠΎ Π½Π΅ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΎ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Ρ Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ ΠΊΠΎΠ΄ Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π° Π²ΠΈΠ΄Π΅ΠΎ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru