atteneder / KtxUnity

Load KTX and Basis Universal textures at runtime
Apache License 2.0
221 stars 42 forks source link

Support for XY Normal Maps (-separate_rg_to_color_alpha) #26

Open atteneder opened 3 years ago

atteneder commented 3 years ago

Tangent space normal maps with basis universal ETC1s mode compression suffer greatly from artifacts. A better solution is to only encode the X and Y components (red and green channel) into the color and alpha slices respectively.

This can be done with the -separate_rg_to_color_alpha option, which works for both toktx and basisu.

KtxUnity should be able to load and transcode such textures correctly. Optionally this is auto-detected.

Note: Users have to be aware of this format and adopt shaders accordingly (the missing Z component has to be restored in some way).

A workaround is to use UASTC mode.