VRエンジン作成日記

ひたすらVRエンジンを作っていきます

Material.renderQueueの追加

今日は細々と気になっていたことを修正した。落ち着いて衝突判定の処理を書き進めていきたいところだけど、積もってきた未処理の作業を減らしておかないと落ち着いて考えることができなさそうだった。

今日やったことは主にMaterial.renderQueueの部分。renderQueueはどういう機能かというと、例えばUnityではTextMeshは常に最前面に表示されるんだけど、最前面に表示するにはどうすれば良いかと自然に考えると、一番最後に描画する方が破綻が少ないということになる。そういう時にrenderQueueの値でレンダラオブジェクトをソートして描画順を決定するというような仕組みが用意されている。例えば球や立方体等のプリミティブオブジェクトを画面に追加するとrenderQueueの値は2000になっている。TextMeshを追加すると3000になる。小さいもの順にソートされるようだ。

きちんと調べられていないけど、おそらくこの値はUnityだとShaderLabのソースコード内で値を書き込むのではなかろうか。ShaderLabは便利に作られていて、HLSL/GLSL等のシェーダ言語で表現できる範囲外の項目だけど、シェーダに関連して書いておくべき値を書く欄が用意されている。その仕組みを使ってエディタ内で設定できる色やテクスチャ等の変数の項目をGUI部品として表示できるようになっている。

今日は他に、MeshFilterをとりあえず作ったのと、Object3D.sendMessage()等を分かる範囲で書いておいた。動作テストはほとんどできていない。MeshFilterを作っている最中に、sharedMeshやsharedMaterialを作る必要がありそうだと思った。今のところ作らなくても動作に支障がでるわけではないから、この実装は後回しにする予定。

mocha用のUnitTestフォルダも作ったは良いけど、Vector3の一部しかテストが書けていない。数学用の関数となると、正しくテストが書けるのかという疑問も湧いてくる。

・関連するコミット

fix some problems · hikipuro/tea.js@cea6436 · GitHub