Difference between revisions of "Juda texture"
From KlayGE
Gongminmin (Talk | contribs) m |
Gongminmin (Talk | contribs) m (moved Juda Texture to Juda texture) |
||
(One intermediate revision by one user not shown) | |||
Line 27: | Line 27: | ||
*可视化编辑工具 | *可视化编辑工具 | ||
*支持HDR格式 | *支持HDR格式 | ||
+ | |||
+ | [[Category:渲染]] | ||
[[en: Juda Texture/en]] | [[en: Juda Texture/en]] | ||
[[ru: Juda Texture/ru]] | [[ru: Juda Texture/ru]] |
Latest revision as of 10:49, 13 May 2012
Juda Texture是KlayGE中的虚拟纹理技术,名称来自于中文的“巨大”一词。
技术指标
- 最大大小:1Mx1M
- 纹理格式:ARGB8,ABGR8,GR8,R8
用途
地形渲染
地形数据可以直接存放在Juda Texture中,并在运行期根据需要自动载入。地形编辑器和渲染都将得益于Juda Texture。
纹理打包
可以把一个游戏所用到的所有纹理都打包入一个Juda Texture中,省去载入的麻烦。
实现方法
整个Juda Texture被表示成一棵四叉树,树的每个节点保存一个数据块。原始数据提交给Juda Texture的时候,会被分成大小相同的块,先存于对应位置的叶子节点中。接着,上一级节点会被更新成降采样后的数据,而叶子节点仅仅保存上一级节点超采样后与自己的残差。如果一个子树的残差之和小于某个阈值,该子树就会被砍掉。这样依次向上更新整棵树,直到根节点为止。最后,每个节点的数据块都通过LZMA算法无损地压缩。 在运行期,当需要某个块的时候,Juda Texture会在树中搜索从根节点到存储该数据块的叶子节点的整条路径,经过解压和累加后放入一个纹理缓存中。shader里通过间接索引来访问纹理缓存,得到该块数据。
工具集
JudaTexPacker
JudaTexPacker可以把多张普通的纹理打包成一个Juda Texture文件。原纹理在Juda Texture中的排布通过一个JTML文件来描述。
JudaTexViewer
JudaTexViewer可以查看Juda Texture的内容。
未来的工作
- 更大的压缩率
- 可视化编辑工具
- 支持HDR格式