2D Simplex Noiseをjit.gl.pixに移植してみる

BY TOMOHIRO NAGASAKI(@blurrednote)

今回も Max6 の jit.gl.pix で遊んでみます。
Ashima Arts が公開している 2D Simplex Noise という、GLSL 向けのプロシージャルノイズシェーダーを jit.gl.pix に移植してみました。

完成パッチはGithubにあります。

移植元はこちらです。
https://github.com/ashima/webgl-noise/blob/master/src/noise2D.glsl
Array and textureless GLSL 2D simplex noise function. Copyright (C) 2011 Ashima Arts. All rights reserved.
上記のコードは、フラグメントシェーダーでノイズテクスチャを生成するもので、WebGLなどのコード内にコピペするだけで使えます。

この Simplex Noise は、Perlin Noise の変種で、コードが短く、より高速に動作するそうです。どんなものか GLSL Sandbox にペーストしてみました。
http://glsl.heroku.com/e#9644.0
simplex03

目標はこれをjit.gl.pixで表示してみることです。まず最初に、最低限のOpenGL描画パッチを作ります。
simplex02

GLSLコードを見ながら、パッチに変換していきます。ほとんど根性の世界です。
Genはパッチを入れ子にできるので、関数をまとめたり、外部ファイル読み込みを活用したりすると、効率よく組めると思います。
こんな感じです。
simplex05
※コードからパッチへの変換には細心の注意を払いましたが、間違っていたら、ごめんなさい

Simplex Noise は パラメータを変化させたり、戻り値を加工して使うようなので、もう一個のGenパッチで包みました。
simplex01

結果はこんな感じです。出来ているようです。
simplex04

このまま、テクスチャとして使ってもいいですし、頂点データに使ったり、タービュランスに使ったり、いろいろ活用出来そうです。サウンドの生成に使ってもいいかもしれません。