當記住性能時,我們(不願意)使用紋理壓縮。通過壓縮引入的人爲因素可能或多或少是可以接受的。有什麼不同的可能性,可以應用在原始圖像層次上的工作周,以最小化由壓縮算法引入的人爲因素。在我目前的情況下,使用漸變時會看到大部分的人工製品。dxt4紋理壓縮
Q
dxt4紋理壓縮
1
A
回答
4
如果您願意,DXT壓縮全是關於插值或漸變的。但是,你必須很好地理解它究竟做了什麼。 DXT壓縮是一種折衷方案,它在相當不好的壓縮下提供相當差的質量,但它提供了一些壓縮,並且在硬件中實現幾乎是微不足道的,並且以幾乎爲零的成本運行。這就是它被使用的原因。
有幾種方法可以提高質量,但如果質量問題不可接受,唯一的解決方案是不使用DXT。 (此外,DXT4你在你的問題的標題都還不是很廣泛的應用,這是DXT5預乘)
首先,請注意:
- DXT通過編碼紋理像素的4×4塊的顏色存儲兩個5:6:5顏色並在RGB空間中沿着這條線插入。插值量化爲2位,所以每個像素只能選擇4個值。
- DXT4/5中的alpha通道存儲兩個8位alpha值並使用3位內插器。
- DXT2/3使用明確的每位素材4位alpha通道(即不在一些選定的8位值之間進行插值)。
- DXT1可以佯攻一個1位的alpha通道,但這是一個排序/編碼技巧,和一個不同的故事。
- 如果不轉換到另一個色彩空間(由於端點存儲爲5:6:5),無法在DXT中獲得純灰色。
這意味着,DXT可以在原則(或多或少)完美重現沒有過於苛刻的變化很多水平,垂直或對角線1D梯度,但它是完全無法重現大多數其他模式(儘管它通常可以再現一些東西)。例如,如果您有2D漸變或旋轉漸變,則沒有辦法(除非是巧合!)存在一對兩種顏色,這將允許整個4x4塊很好地內插。另外,由於插值僅量化爲4種選擇,絕大多數「奇數旋轉」不能被編碼,也不能組合多種顏色。但是,對於大多數「天然」紋理來說,這是可以接受的。
DXT壓縮機通常會嘗試在4x4單元格內尋找最佳配合(儘管有些壓縮機會/可能會做其他操作)。即使單元格內的梯度表示良好,這也會導致梯度漸變。
什麼可以做DXT是:
- 使用不同的壓縮機,並選擇最好的結果。至少有3種不同的壓縮機採用不同的(非蠻力)策略,給出了不同的結果。
- 試試crunch庫。在某處也有一個Windows GUI壓縮器。雖然緊縮主要是爲了生成較小的(zip壓縮後)文件,並且它最終受到DXT塊格式技術限制的約束,但它使用了一種不尋常的搜索技術,它考慮了更大的範圍。它可能發生,它設法給你的梯度更好看一個或另一個。
- 避免梯度爲2D或與u/v或對角線不對齊的梯度,因爲您知道無法編碼這些梯度。
- 在壓縮之前將自然圖像轉換爲非RGB色彩空間。 YCoCg和YCbCr可能是候選者,或JPEG-LS變換。人眼在各方面都不是同樣敏感。有些錯誤不太明顯。使用不同的色彩空間利用了這一點。
- 如果您不需要alpha,則使用alpha通道作爲最重要的通道,因爲您知道它具有8位端點分辨率(而不是5/6)和3位內插器而不是2位。否則,使用綠色作爲最重要的通道,因爲它還有一個位。
- 對於手繪紋理,您可以嘗試使用5:6:5匹配的顏色,這至少會爲這些顏色提供完美的點擊。儘管對於「繪製」紋理(看起來像漫畫),DXT通常是非常不明智的選擇。
- 對於質量沒有削減的情況,不要使用DXT(是的,這聽起來像一個愚蠢的建議,但它確實是...如果它不適合,不要使用它)。
相關問題
- 1. PVRTC2紋理壓縮
- 2. DXT紋理壓縮?
- 3. 如何DXT1壓縮紋理?
- 4. 動態紋理壓縮
- 5. Quartz如何處理紋理壓縮?
- 6. 更改多重紋理壓縮格式
- 7. OpenGL ARGB與RGB和紋理壓縮
- 8. android opengl es 1.1動態紋理壓縮
- 9. Directx11是否支持ASTC壓縮紋理?
- 10. 在Android中加載壓縮紋理ETC1
- 11. PKM紋理與ETC2壓縮給黑屏
- 12. vulkan中壓縮紋理的大小
- 13. 有沒有ETC1紋理壓縮庫?
- 14. 桌面上的ETC1紋理壓縮?
- 15. three.js使用PNG進行紋理壓縮
- 16. GL_INVALID_OPERATION上傳壓縮紋理時
- 17. OpenGL保存壓縮紋理和mipmapps
- 18. 閱讀ATI壓縮紋理的問題
- 19. DXT2/3和DXT4/5紋理格式有什麼區別?
- 20. ASTC軟件紋理壓縮/解壓算法
- 21. 紋理縮放
- 22. 哪個程序或格式用於紋理壓縮
- 23. Android-WebGL上有什麼紋理壓縮格式?
- 24. 如何實現紋理的運行時壓縮?
- 25. 我可以使Qt Quick的使用壓縮的紋理?
- 26. 如何將壓縮的.dds圖像加載爲collada紋理?
- 27. 如何在iPhone/iPad上的OpenGL ES中壓縮紋理?
- 28. Android壓縮紋理加載(GL擴展缺失)
- 29. 如何壓縮在SceneKit中使用的紋理
- 30. Unity中紋理壓縮的最小有損方法?
哪些工件?你在使用什麼壓縮機?你使用什麼壓縮格式來處理你的數據?你在說什麼圖片?您的問題太模糊,無法在此表格中回答。 – 2012-04-02 09:40:59
這是你的反饋意見。以下是一些細節:我試過nvcompress和nvdxt,dxt {1..5},我試圖添加鏈接到一些壓縮的圖像來顯示所有的工件。 – ohmy 2012-04-02 09:52:26