T-Racing Development Blog

Three.jsのDDS対応フォーマット追加

Three.jsのDDS対応フォーマット追加

Three.jsのDDS対応フォーマット追加

Three.jsのリポジトリにDDS Loaderがあるのですが、DXT1, DXT3, DXT5, 32bit非圧縮ARGBの4種類のフォーマットのパーサしか実装されていません。
そのため、24bit/16bit非圧縮RGBや、NormalMap等で用いられる16bit非圧縮LuminanceAlphaFormatなどを読み込むことが出来ません。

このままではKN5に含まれるNormalMapが描画できなかったりするので、既存のDDS Loaderに追加実装する形でサポートしてみました。

新たに追加対応したフォーマットは以下のとおりです。
R8G8B8, A4R4G4B4, A1R5G5B5, R5G6B5, A8L8, A8, L8

https://github.com/Tsuka1427/three.js/blob/patch-1/examples/js/loaders/DDSLoader.js

元のコードと比較すると分かると思うのですが、かなりやっつけ仕事です。
というか、元のコードのフォーマット判別の箇所がかなり冗長で、それに無理やり合わせる形で追加したのでかなり無駄があります。
いずれ最適化できればと思いますが、とりあえずは動いたので当分はこれを使うとします…


コメントを残す

メールアドレスが公開されることはありません。