RTSL: a Ray Tracing Shading Language

by syoyo

RTSL: a Ray Tracing Shading Language
Steven G. Parker, Solomon Boulos, James Bigler, and Austin Robinson.
To appear IEEE Symposium on Interactive Ray Tracing 2007
http://www.cs.utah.edu/~boulos/research.htm

[En]

Wow, this is a good paper…
and what I am trying to do with my MUDA language [1] is already almost achieved by RTSL paper!

For instance,

– DSL(Domain Specific Language)
– SIMD code gen
– Can emit a code as efficient as hand-optmized low level code
– App specific optimization(In their case, ray packet optimization).

Although, I’ll continue to develop my MUDA language since I’m considering to use MUDA
to describe lucille core engine and also thinking to extend MUDA for shading language
and GI language in the future.

Anyway, DSL or something about language level thinkgs seems one of the hot topic in the recent CG reseach.
(There are Lpics, lightspeed, RSL for RPU, and this RTSL)

I think some people(including RTSL guys) are already combating to develop unified language system
for GI rendering(i.e. unified language to describe raytracing, pathtracing, bi-pathtracing, MLT and so on).

[Ja]

げー、なにこれ RTSL すごいよ。trace() が追加されているだけじゃなかったのね。

– GLSL ベースの DSL
– SIMD コード生成、リアルタイムレイトレにもオフラインレイトレにも使える
– ハンドオプティマイズされたコードと同じくらい効率的なコードを吐く
– 通常のコンパイラでは出来ないアプリレベルの最適化
(この後者ふたつがやっぱり DSL のうま味ですね)

ほとんど MUDA でやろうとしていることが達成されているし…

ただ、いずれにせよ彼らのシステムが open-source になろうと、
MUDA には MUDA の道があるし、 lucille のコアを MUDA で書き直そうとも考えて MUDA を
作ることにしたので、あと 196 年オレ言語を作り込んでいきたい気持ちもあるから
MUDA の開発は続けることになります。
(lucille は 200 年の長きに渡るプロジェクトです. 今年で 4 年がたちました)

また、MUDA は一度ある程度完成してきたら、ちょろっとシンタックスを変えて
lucille 向けのシェーダ言語や GI 言語(integrate とか cdf とかあったりするのですよ)
にも発展させていきたいところ。

Lpics, lightspeed などを見ていると、DSL(or 言語的なアプローチ)での効率化の追求はここ 2,3 年先の
グラフィックス研究のホットなトピックになりそうな予感がしています。

もちろん何度かグラフィックスの世界にも言語的な研究の波はあったわけで、ちょろっとまとめると

最初の言語的アプローチは 80 年代の shade tree,
次は 90 年代の shader specialization,
その次は 00 年代前半の multipass partitioning,
そして 00 年後半の lightspeed, RTSL などに見られるアプリレベルの最適化

という感じでしょうか。今は第四世代?

RTSL にもちょろっと書かれていますが、DSL から interval arithmetic(or affine arithmetic)なコードを
吐いてロバストな数値計算をするのも一つのよい DSL の利用例だなぁと思います。

[1] Load to MUDA. SIMD code generation, domain specific language, automatic optimization, functional programming, etc.
http://lucille.atso-net.jp/blog/?p=323

Advertisements