閲覧ありがとうございますっ!
ゲームが好きでUnityで作りながら遊んでいる、ペンギンです。何か作ってみたり遊んでみた事を頑張って載せていきたいと思います!

ノード型シェーダーエディタOSS

初めに

今回は、OSS(オープンソースソフトウェア)のお題で簡単なシェーダーエディタを作ってみました。

環境

Unity 2018.2.14f1

 

 

ノードの決め事

計算結果を毎回変数に格納して、その計算結果を後のコードに使える状態にします。

例)

float add1 = 1 + 2;

float add2 = add1 + 7;

 

ダメな例)

float add2 = add1 + 7;

float add1 = 1 + 2;

1行目でadd1にアクセスしますが、定義前のadd1にはアクセス出来ません。

 

定義前の変数にアクセスしない様、今回は深さ優先探索を使いノードの書き出し順を決めていきます。

下の画像は深さ優先探査の図です。折り返した時に定義するとします。

f:id:koutei7penguin-jp:20190126200119g:plain

 

ノード処理

fixed4をfixedに分解するノードを「ExportColor」と言うことにします。

下の図のコメントはシェーダーの書き出し部分です。

処理の流れ

ExportColorノードのインポートとして接続されたノードの変数(f4)を取得し、ExportColorで決めた変数名で定義します。また、インポート先とエクスポート先の変数の型を確認する必要があります。理由は、仮にExportColorのインポートノードがfixed4以外時のエラーを回避するためです。fixed3の変数のアルファ値をアクセスしますとエラー、想定外の処理が起きます。

f:id:koutei7penguin-jp:20190323105504j:plain

ID決定

その他にもExportColorノードが複数あった場合、定義変数が重複しエラーが出るので、ノード毎にIDを割り当てて定義変数に追加します。IDは上で書いた深さ優先探索でノードで訪れた順にします。

 

リポジトリ

github.com

 

初ハッカソンに出ました!!

大学のVR部としてMashup Awards 2017に出場しました!

作品のデモ動画

デモ中にリープモーションによる攻撃が出ないというアクシデントがありました💦 

プレゼンのデモの前に焦ってビルドしたのが良くなかったですね。

これからは気を付けますw

 受賞!!

Mashup Awards 2017で「データスパイダー賞」を受賞しました!!

 

このVRコンテンツをデジゲー博に向けて作って行きたいと思います!

プログラムによる分居モデル

分居モデルをC言語で作って遊んでみました。プログラムが少し甘い所があり、空所が少ないと無限ループします。

 

ルール

始めに各色をランダムに配置し、次に1ドットの周りのドットが中心のドットとどれほど色違いであるか計算して、あまりにも色違いであったら空いてる所(黒)に移動する、これを全てのドットが満足するまでループさせます。


分居モデルシミュレーション_01