今日はcreativeCodingもくもく会という名のもくもく一人でcreativecodingする感じの勉強会に行ってきたのですが
そこで初computeShaderやってみました。
参考にしまくったサイト
notaさんのサイトです。いつもお世話なっててほんと感謝。
やったことは、まず、webcameraからとったテクスチャを、対象のパーティクルのテクスチャとしてくっつけて、
上記のサイトでいうC#スクリプトにいろんな形のなるようにスクリプトを作っていった感じ
ローレンツアトラクタの部分でいうとこんな感じ。
void lorenz attractor()
{
bulletsBuffer = new ComputeBuffer(100000, Marshal.SizeOf(typeof(Bullet)));Bullet[] bullets = new Bullet[bulletsBuffer.count];
mainCamera.transform.position = new Vector3(-57, 4.7f, 5.8f);
mainCamera.transform.rotation = Quaternion.Euler(357, 78, 324);
for (int i = 0; i < bulletsBuffer.count; i++)
{float xAnswer = x + 0.0001f * 10 * (-x + y);
float yAnswer = y + 0.0001f * (28 * x – y – x * z);
float zAnswer = z + 0.0001f * (-8.0f/3.0f * z + x * y);bullets[i] =
new Bullet(
new Vector3(xAnswer, yAnswer, zAnswer),
new Vector3(Random.Range(-1.0f, 1.0f)*0.3f, Random.Range(-1.0f, 1.0f)*0.3f, Random.Range(-1.0f, 1.0f)) * 0.3f,
new Color(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f)));x = xAnswer;
y = yAnswer;
z = zAnswer;}
bulletsBuffer.SetData(bullets);
}
ローレンツアトラクタ部分の式は
float xAnswer = x + 0.0001f * 10 * (-x + y);
float yAnswer = y + 0.0001f * (28 * x – y – x * z);
float zAnswer = z + 0.0001f * (-8.0f/3.0f * z + x * y);
この部分
いろいろ変数いじってみればおもしろそーかも