Nao_uの日記 このページをアンテナに追加 RSSフィード

2019-10-13

Noise Lab (3D) Noise Lab (3D)  - Nao_uの日記 を含むブックマーク はてなブックマーク - Noise Lab (3D)  - Nao_uの日記 Noise Lab (3D)  - Nao_uの日記 のブックマークコメント

// Grab from https://www.shadertoy.com/view/4djSRW

#define MOD3 vec3(.1031,.11369,.13787)

//#define MOD3 vec3(443.8975,397.2973, 491.1871)

float hash31(vec3 p3)

{

p3 = fract(p3 * MOD3);

p3 += dot(p3, p3.yzx + 19.19);

return -1.0 + 2.0 * fract((p3.x + p3.y) * p3.z);

}

こんなシンプルなコードで3Dのノイズが返せてる

x = fract((p3.x + p3.y) * p3.z;

y = fract((p3.y + p3.z) * p3.x;

z = fract((p3.z + p3.x) * p3.y;

にしたら3次元化できる

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20191013

2019-09-16

Oculus Mediumの技術ブログ Oculus Mediumの技術ブログ - Nao_uの日記 を含むブックマーク はてなブックマーク - Oculus Mediumの技術ブログ - Nao_uの日記 Oculus Mediumの技術ブログ - Nao_uの日記 のブックマークコメント

Oculus Mediumの技術ブログの解説パね~。MediumってSigned Distance Fieldでモデル表現して、Transvoxelっていうマーチンキューブの亜種でメッシュ化して描画してるんだってよ。SDFをそのままレイマーチングで描画する手もあったけど、パフォーマンスの問題でやめたらしい

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190916

2019-09-15

Unity2018/2019における最適化事情 Unity2018/2019における最適化事情 - Nao_uの日記 を含むブックマーク はてなブックマーク - Unity2018/2019における最適化事情 - Nao_uの日記 Unity2018/2019における最適化事情 - Nao_uの日記 のブックマークコメント

カオス

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190915

2019-09-12

Unityではじめるオープンワールド入門 エンジニア編 Unityではじめるオープンワールド入門 エンジニア編 - Nao_uの日記 を含むブックマーク はてなブックマーク - Unityではじめるオープンワールド入門 エンジニア編 - Nao_uの日記 Unityではじめるオープンワールド入門 エンジニア編 - Nao_uの日記 のブックマークコメント

http://cedec.cesa.or.jp/2019/session/detail/s5ceb8b3b98c9d

これ自前で実装するの…

Just Cause 4: Physics Postmortem/ジャストコーズ4: 物理ポストモーテム Just Cause 4: Physics Postmortem/ジャストコーズ4: 物理ポストモーテム - Nao_uの日記 を含むブックマーク はてなブックマーク - Just Cause 4: Physics Postmortem/ジャストコーズ4: 物理ポストモーテム - Nao_uの日記 Just Cause 4: Physics Postmortem/ジャストコーズ4: 物理ポストモーテム - Nao_uの日記 のブックマークコメント

http://cedec.cesa.or.jp/2019/session/detail/s5cecf4cec3b5a

PC版でも物理は常に33msで計算して補間表示


ディープラーニングによる画像処理を実機側で高速に動かし、活用する技術 ディープラーニングによる画像処理を実機側で高速に動かし、活用する技術 - Nao_uの日記 を含むブックマーク はてなブックマーク - ディープラーニングによる画像処理を実機側で高速に動かし、活用する技術 - Nao_uの日記 ディープラーニングによる画像処理を実機側で高速に動かし、活用する技術 - Nao_uの日記 のブックマークコメント

http://cedec.cesa.or.jp/2019/session/detail/s5c9a015dea39f

Tensorflow Lite

DirectX12 を使用したシェーダー上への独自ニューラルネットワーク構築と描画品質向上のためのリアルタイムレンダリングへの応用 DirectX12 を使用したシェーダー上への独自ニューラルネットワーク構築と描画品質向上のためのリアルタイムレンダリングへの応用 - Nao_uの日記 を含むブックマーク はてなブックマーク - DirectX12 を使用したシェーダー上への独自ニューラルネットワーク構築と描画品質向上のためのリアルタイムレンダリングへの応用 - Nao_uの日記 DirectX12 を使用したシェーダー上への独自ニューラルネットワーク構築と描画品質向上のためのリアルタイムレンダリングへの応用 - Nao_uの日記 のブックマークコメント

http://cedec.cesa.or.jp/2019/session/detail/s5c906cc0259d8

DirectML

DirectX Raytracingを用いたライトベイカーの実装について DirectX Raytracingを用いたライトベイカーの実装について - Nao_uの日記 を含むブックマーク はてなブックマーク - DirectX Raytracingを用いたライトベイカーの実装について - Nao_uの日記 DirectX Raytracingを用いたライトベイカーの実装について - Nao_uの日記 のブックマークコメント

http://cedec.cesa.or.jp/2019/session/detail/s5c77a9646f7d3

5Gでゲームはどう変わる?~そろそろ気にしておきたい5G最前線~ 5Gでゲームはどう変わる?~そろそろ気にしておきたい5G最前線~ - Nao_uの日記 を含むブックマーク はてなブックマーク - 5Gでゲームはどう変わる?~そろそろ気にしておきたい5G最前線~ - Nao_uの日記 5Gでゲームはどう変わる?~そろそろ気にしておきたい5G最前線~ - Nao_uの日記 のブックマークコメント

http://cedec.cesa.or.jp/2019/session/detail/s5cbe7e6470aea

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190912

2019-09-11

『大乱闘スマッシュブラザーズ SPECIAL』~大規模開発を支えた 開発環境の整備と運用 『大乱闘スマッシュブラザーズ SPECIAL』~大規模開発を支えた 開発環境の整備と運用 - Nao_uの日記 を含むブックマーク はてなブックマーク - 『大乱闘スマッシュブラザーズ SPECIAL』~大規模開発を支えた 開発環境の整備と運用 - Nao_uの日記 『大乱闘スマッシュブラザーズ SPECIAL』~大規模開発を支えた 開発環境の整備と運用 - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5c9b5851a5fe3

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190911

2019-09-10

★『Tales of ARISE』におけるレンダリング技術と高速化 ★『Tales of ARISE』におけるレンダリング技術と高速化 - Nao_uの日記 を含むブックマーク はてなブックマーク - ★『Tales of ARISE』におけるレンダリング技術と高速化 - Nao_uの日記 ★『Tales of ARISE』におけるレンダリング技術と高速化 - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5c9c5bc2d3123

雲のレイマーチ、ライト方向だけ先に計算して3Dテクスチャに格納

半透明を縮小バッファに描くが、エッジだけマスクを作ってフル解像度で再度描画してる。

業界最先端のVFX制作の現場とSPARKGEARの最新機能について 業界最先端のVFX制作の現場とSPARKGEARの最新機能について - Nao_uの日記 を含むブックマーク はてなブックマーク - 業界最先端のVFX制作の現場とSPARKGEARの最新機能について - Nao_uの日記 業界最先端のVFX制作の現場とSPARKGEARの最新機能について - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5ce49dab14dc6

GPU最適化:シェーダ実行の高速化手法 GPU最適化:シェーダ実行の高速化手法 - Nao_uの日記 を含むブックマーク はてなブックマーク - GPU最適化:シェーダ実行の高速化手法 - Nao_uの日記 GPU最適化:シェーダ実行の高速化手法 - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5c9e9e51afd59

『大乱闘スマッシュブラザーズ SPECIAL』~膨大なアセットのビルド時間&容量との戦い 『大乱闘スマッシュブラザーズ SPECIAL』~膨大なアセットのビルド時間&容量との戦い - Nao_uの日記 を含むブックマーク はてなブックマーク - 『大乱闘スマッシュブラザーズ SPECIAL』~膨大なアセットのビルド時間&容量との戦い - Nao_uの日記 『大乱闘スマッシュブラザーズ SPECIAL』~膨大なアセットのビルド時間&容量との戦い - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5c9b0f38387a7

リアルタイムレイトレーシングの導入と最適化事例 リアルタイムレイトレーシングの導入と最適化事例 - Nao_uの日記 を含むブックマーク はてなブックマーク - リアルタイムレイトレーシングの導入と最適化事例 - Nao_uの日記 リアルタイムレイトレーシングの導入と最適化事例 - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5c9d78b0e6f2b

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190910

2019-09-07

2019-09-07 - Nao_uの日記 を含むブックマーク 2019-09-07 - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5c9f6c908d5b7

  • 影、AO、SSR,レイマーチ雲、大気散乱、ボリューメトリックフォグなど全部入り
  • 17:20 ボリューメトリックフォグによる空島の地形に沿った近距離雲
    • メッシュで作成した雲を濃度マップとしてボリューム化して3Dノイズと合成

エースコンバット7における”空の革新”について エースコンバット7における”空の革新”について - Nao_uの日記 を含むブックマーク はてなブックマーク - エースコンバット7における”空の革新”について - Nao_uの日記 エースコンバット7における”空の革新”について - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5c9cb6579df11

  • ミー散乱、雲底、雲頂など雲の基礎知識
  • TrueSky採用、パイロットに雲の特性を聞いて反映
  • ジオメトリ→TureSky→半透明の順で描画
    • 大気のミー散乱、ハイトフォグを調整
  • ミッション4ではシンガポールヘイズを再現、隣国の野焼きで黄色くなる
    • リニアに保管できるので日の出などが作れる
  • 雲の上下の高さとボリュームの幅で調整
  • 雲の量を変えるとアンビエントが変わる
  • 雲の上下の密度バランスで全体の形状を設定、上を濃くすると迷路っぽくなる
  • 夏のモコモコした雲→仏の薄い雲をパラメータ
  • 順方法、逆方向の産卵、アンビエント、太陽光の減衰率、ゴッド令などのパラメータで高原計算
  • エッジのパラメータは重要だがアーティファクトも出やすい。この辺は拡張している
  • 雲の配置を2Dテクスチャで設定できる拡張
    • 赤:雲を増やす 緑:減らす 青:そのままにする
  • 半透明合成用のTranslusency Modifireは自前追加したらしい…
  • ボクセルを視線に向くようにスライスすることで四角いアーティファクトが消せる
  • 様々な改善により、雲が占めるGPUコストが全体の3〜4割くらいに抑えられた

エースコンバット7 VRが実現したエースパイロット体験のひみつ エースコンバット7 VRが実現したエースパイロット体験のひみつ - Nao_uの日記 を含むブックマーク はてなブックマーク - エースコンバット7 VRが実現したエースパイロット体験のひみつ - Nao_uの日記 エースコンバット7 VRが実現したエースパイロット体験のひみつ - Nao_uの日記 のブックマークコメント

  • 作ったリソースを捨てることを前提に、イテレーションを上げることを重視
  • 離陸前の視線誘導、僚機を追うなど自動移動時に方向転換先を予測できるように
  • レーダーや機体の向きなどのUIをコクピットに統合することで実在感や没入感が上がる
  • ギャラクシアン3のゲーム開始前の導入と同じような文法で、入り口で機体を盛り上げる、ゲームが始まってからは酔い防止で守りに入る

レイ・トレーシングのデータ構造を極める! レイ・トレーシングのデータ構造を極める! - Nao_uの日記 を含むブックマーク はてなブックマーク - レイ・トレーシングのデータ構造を極める! - Nao_uの日記 レイ・トレーシングのデータ構造を極める! - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5c63bce679db2

  • ほぼ全てのレンダラがBVHを使用(Bounding Volume Hertrlcy)
    • First-Hit 最初に当たった
    • Any-Hit 当たるかどうかだけ調べる(AOや影で使う)
    • Multi-Hit 原点から近い順に全ての接触を調べる(半透明で使う)

「強い」を作るだけが能じゃない!ディープラーニングで3Dアクションゲームの敵AIを作ってみた 「強い」を作るだけが能じゃない!ディープラーニングで3Dアクションゲームの敵AIを作ってみた - Nao_uの日記 を含むブックマーク はてなブックマーク - 「強い」を作るだけが能じゃない!ディープラーニングで3Dアクションゲームの敵AIを作ってみた - Nao_uの日記 「強い」を作るだけが能じゃない!ディープラーニングで3Dアクションゲームの敵AIを作ってみた - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5c8f2a755dbc1

  • 自分と敵の相対位置やプレイヤーとの距離など97個のパラメータを与えて学習
  • いて欲しい適正な距離や、やって欲しい行動に報酬を与えることで個性を与えて望む形に学習させていく
  • 行動を補正したい時には再学習させるのではなく、追加で報酬を与えてコントロール(手移動でやってもいい?)
  • プレイヤーと敵、どちらか片方はちゃんとしたAIにしないと学習が進まない
  • 特定の連続攻撃が欲しいならそういう行動をセットにしておく
  • シチュエーションごとに学習が必要なので、複雑なステージで戦わせたいならそこで学習する必要がある
  • 保証ができないのと確認方法が課題

プロシージャルゲームコンテンツ制作ブートキャンプ 2019 Part 1 バリエーション生成 プロシージャルゲームコンテンツ制作ブートキャンプ 2019 Part 1 バリエーション生成 - Nao_uの日記 を含むブックマーク はてなブックマーク - プロシージャルゲームコンテンツ制作ブートキャンプ 2019 Part 1 バリエーション生成 - Nao_uの日記 プロシージャルゲームコンテンツ制作ブートキャンプ 2019 Part 1 バリエーション生成 - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5c9c3b18b187c

  • 三分割、特殊等分割にボタンを追加して作業フローを簡略化
  • 種子の発芽シミュレーションの話
  • Pythonの使い所の話

プロシージャルゲームコンテンツ制作ブートキャンプ 2019 Part 2 機械学習 プロシージャルゲームコンテンツ制作ブートキャンプ 2019 Part 2 機械学習 - Nao_uの日記 を含むブックマーク はてなブックマーク - プロシージャルゲームコンテンツ制作ブートキャンプ 2019 Part 2 機械学習 - Nao_uの日記 プロシージャルゲームコンテンツ制作ブートキャンプ 2019 Part 2 機械学習 - Nao_uの日記 のブックマークコメント

https://cedec.cesa.or.jp/2019/session/detail/s5c9c3c8c9a39d

  • 機械学習の話
  • 建築の話

質疑:

  • pythonの情報ソースは?
    • no more retake
  • 背景はどう作ってる?
    • 今回のでもは河川+6角形でボロの意分割
    • 実際製品では、最短のルート検索から求められる合理的な道を用意してそこに面した正面を
トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190907

2019-08-03

ゲーム部屋の整備 ゲーム部屋の整備 - Nao_uの日記 を含むブックマーク はてなブックマーク - ゲーム部屋の整備 - Nao_uの日記 ゲーム部屋の整備 - Nao_uの日記 のブックマークコメント

https://twitter.com/Nao_u_/status/1157630140442017792

奥さんと子供が帰省中なので滞ってたゲーム部屋の整備を再開。作業の過程でやっぱりエイリアンソルジャー最高!、とかクレタクはDC版が音楽も操作も一番安定してて楽しい、とか遊んでると何も進まない


MD版幽遊白書、一人で遊ぶなら裏技の1対3ハンデ戦がちょうどよく頑張らないと勝てない難度で面白いんだけど、4人対戦の楽しさには遠く及ばない。学生の頃に夜な夜な対戦してた時間はもう戻ってこないので、対戦ゲームの楽しさってほんと一期一会だなぁ、と。


クレタクはあと一人届けたらAWESOMEランクに届くところで集中力が切れて高速道路で対向車を避けれずタイムオーバー。クレタク2はまともな移植版がないのでDC実機でしか遊べないんだけど、マップが複雑すぎてまったく覚えてないのでほとんど新作を遊ぶ感覚になってた


ワイルドトラックス、車体とタイヤの間にバネ入った不思議なドリフト感で、フレームレートの低さを心の目で補完できれば今遊んでも十分楽しい挙動だった。FPS視点だとカーブで車体がちゃんとロールしたりなど四輪個別に物理計算してる最初のレースゲームだったりするのかも


海腹川背も操作はだいたい手が覚えてたけど、天井振り子から狙った場所にルアーをつける操作が安定せず、最終面でロケットジャンプに失敗して死亡。このゲームはフレーム単位のタイミングがシビアな操作が必要になるので、テレビの遅延があると一気に感覚が狂いそう


海腹川背を遊んでた頃はまだ20世紀だったので、こんな丁寧な攻略サイトもない時代だった。オタマがいるルートは倒すのに時間がかかるしその先のイシダイが安定せず心が折れるので、いつもほぼ最短クリアルートのみ遊んでた。カニやカツオが動いてる所は自力では見た事がない…

(link: http://umiharakawase.the-ninja.jp/newpage3.html) umiharakawase.the-ninja.jp/newpage3.html


DC版のセガラリー2はあまりいい印象がなく、もう10年以上起動してなかった。改めてプレイすると基本60fpsなのに頻繁に30fpsに処理落ちするせいで走りに集中できないのがだいぶストレスに。サターン版の1が30fpsでも気にならないのは解像度も低いし最初からそういうものだと割り切って遊べるからかな?


DCのガンコンが出てきたのにハウスオブザデッド2がどこを探しても見つからないので注文した。タイピングオブザデッドはディスクはあるけどキーボードが見つからず。子供の頃から自己流でキーボードを叩いてて、タッチタイピングできるようになったのはこのゲームで練習したおかげなので感謝してる

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190803

2019-07-31

SIGGRAPH2019 Phasor noise - shadertoy links SIGGRAPH2019 Phasor noise - shadertoy links - Nao_uの日記 を含むブックマーク はてなブックマーク - SIGGRAPH2019 Phasor noise - shadertoy links - Nao_uの日記 SIGGRAPH2019 Phasor noise - shadertoy links - Nao_uの日記 のブックマークコメント

フェーザーは電気回路の分野でサイン波を複素数で表現する手法。フーリエ変換の性質を持つ。

フェーザーノイズはガボールノイズを強度と変調正弦波成分に分離し再定式化したもの。コントラストの高いパターンを生成できる。

`Gabor Noise(x)= I(x)sin(φ(x))`

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190731

2019-07-28

Unity公式のHoudini HDAを使って、Unity用のPointCache(.pcache)やVectorField(.vf)を出力する Unity公式のHoudini HDAを使って、Unity用のPointCache(.pcache)やVectorField(.vf)を出力する - Nao_uの日記 を含むブックマーク はてなブックマーク - Unity公式のHoudini HDAを使って、Unity用のPointCache(.pcache)やVectorField(.vf)を出力する - Nao_uの日記 Unity公式のHoudini HDAを使って、Unity用のPointCache(.pcache)やVectorField(.vf)を出力する - Nao_uの日記 のブックマークコメント

【Unity】UnityへFGAをインポートしてVisual Effect GraphのVectorFieldとして使う方法 【Unity】UnityへFGAをインポートしてVisual Effect GraphのVectorFieldとして使う方法 - Nao_uの日記 を含むブックマーク はてなブックマーク - 【Unity】UnityへFGAをインポートしてVisual Effect GraphのVectorFieldとして使う方法 - Nao_uの日記 【Unity】UnityへFGAをインポートしてVisual Effect GraphのVectorFieldとして使う方法 - Nao_uの日記 のブックマークコメント

HoudiniでVectorField(.fga)を作成する方法(サンプルプロジェクト付き) HoudiniでVectorField(.fga)を作成する方法(サンプルプロジェクト付き) - Nao_uの日記 を含むブックマーク はてなブックマーク - HoudiniでVectorField(.fga)を作成する方法(サンプルプロジェクト付き) - Nao_uの日記 HoudiniでVectorField(.fga)を作成する方法(サンプルプロジェクト付き) - Nao_uの日記 のブックマークコメント

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190728

2019-06-08

Houdiniで交差点を含む複雑な道路を作るチュートリアル Houdiniで交差点を含む複雑な道路を作るチュートリアル - Nao_uの日記 を含むブックマーク はてなブックマーク - Houdiniで交差点を含む複雑な道路を作るチュートリアル - Nao_uの日記 Houdiniで交差点を含む複雑な道路を作るチュートリアル - Nao_uの日記 のブックマークコメント

https://dokaitutorials.com/complex-roads-in-houdini-1/

道路以外にも市街地やビルの生成の動画もあった

Houdini:Spare Input Houdini:Spare Input - Nao_uの日記 を含むブックマーク はてなブックマーク - Houdini:Spare Input - Nao_uの日記 Houdini:Spare Input - Nao_uの日記 のブックマークコメント

http://nomoreretake.net/2018/08/18/houdini_spareinput/

他のノードのパラメータを参照する方法。コンパイルブロック向けに追加されたっぽいが、それ以外の場面でも使えて、エクスプレッションの記述をシンプルにできる。こんなのがあるとは知らなかった

Houdini Twitterリンク Houdini Twitterリンク - Nao_uの日記 を含むブックマーク はてなブックマーク - Houdini Twitterリンク - Nao_uの日記 Houdini Twitterリンク - Nao_uの日記 のブックマークコメント

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190608

2019-05-06

極座標シェーダー実験メモ 極座標シェーダー実験メモ - Nao_uの日記 を含むブックマーク はてなブックマーク - 極座標シェーダー実験メモ - Nao_uの日記 極座標シェーダー実験メモ - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20190506202125p:image

https://twitter.com/Cyanilux/status/1123944969125998592

Shader "Unlit/PolarCorrdinates"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
		_Rotate("Rotate", Float) = 0.0
		_RotateSpeed("RotateSpeed", Float) = 0.0
		_RadiusAdd("RadiusAdd", Float) = 0.0
		_RadiusSpeed("RadiusSpeed", Float) = 0.0
	}
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;

			float _Rotate;
			float _RotateSpeed;
			float _RadiusAdd;
			float _RadiusSpeed;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
				float2 uv = (i.uv * 2.0f) - float2(1,1);
				float r = 1.0 - length(uv);
				float theta = atan2(uv.y, uv.x)*(1.0f / (3.1415926535f*2.0f));
				
				r = pow(r+0.9, 2.0);
				float2 puv;
				puv.x = r + _RadiusAdd + _RadiusSpeed * _Time.x;
				puv.y = r + theta + _Rotate + _RotateSpeed * _Time.x;

                // sample the texture
                fixed4 col = tex2D(_MainTex, puv);
                // apply fog
                UNITY_APPLY_FOG(i.fogCoord, col);

				return col;
            }
            ENDCG
        }
    }
}

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190506

2019-05-05

Interleaved gradient noise Interleaved gradient noise - Nao_uの日記 を含むブックマーク はてなブックマーク - Interleaved gradient noise - Nao_uの日記 Interleaved gradient noise - Nao_uの日記 のブックマークコメント

レイマーチのアーティファクトを減らすのに使えそう

https://blog.demofox.org/2017/10/31/animating-noise-for-integration-over-time/

Interleaved gradient noise, which gives middle results, is actually very similar in generation costs as white noise believe it or not, and so can also be done in real time on either the CPU or GPU.

If you have X and Y pixel coordinates (not uv coordinates), you can generate the noise value for the pixel by using this formula:


float noise = std::fmodf(52.9829189f * std::fmodf(0.06711056f*float(x) + 0.00583715f*float


マテリアルシェーダーの実験ソースメモ マテリアルシェーダーの実験ソースメモ - Nao_uの日記 を含むブックマーク はてなブックマーク - マテリアルシェーダーの実験ソースメモ - Nao_uの日記 マテリアルシェーダーの実験ソースメモ - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20190506121430j:image

動画:https://twitter.com/Nao_u_/status/1125247333183057920

元ネタ:https://twitter.com/MrZulubo/status/1122611573510377472

// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Custom/TestShader2"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
		_MainTex("Albedo (RGB)", 2D) = "white" {}
		_Volume("Volume", 3D) = "" {}
		_SparkMap("SparkMap", 2D) = "white" {}
	//		_ParallaxMap("_ParallaxMap", 2D) = "white" {}
	
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
		_Distotion("Distotion", Float) = 0.5
		_Iteration("Iteration", int) = 5
	}
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all light types
        #pragma surface surf Standard fullforwardshadows
		#pragma vertex vert
//		#pragma fragment frag

        // Use shader model 3.0 target, to get nicer looking lighting
        #pragma target 3.5

		sampler2D _MainTex;
		sampler2D _SparkMap;
		sampler3D _Volume;
		//		sampler2D _ParallaxMap;

        half _Glossiness;
        half _Metallic;
        fixed4 _Color;

		struct appdata
		{
			float4 vertex : POSITION;
			float2 uv : TEXCOORD0;
			float3 normal : NORMAL;
			float4 tangent : TANGENT;
		};


		float _Distotion;
		int _Iteration;
		int _Type;

        // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
        // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
        // #pragma instancing_options assumeuniformscaling
        UNITY_INSTANCING_BUFFER_START(Props)
            // put more per-instance properties here
        UNITY_INSTANCING_BUFFER_END(Props)


		struct Input {
			float2 uv_MainTex;
			float3 viewDirTangent;
			float4 screenPosition;
			float4 objPos;
			//UNITY_VPOS_TYPE vpos : VPOS;
		};

		void vert(inout appdata_full v, out Input o) {
			UNITY_INITIALIZE_OUTPUT(Input, o);

			float4 objCam = mul(unity_WorldToObject, float4(_WorldSpaceCameraPos, 1.0));
			float3 viewDir = v.vertex.xyz - objCam.xyz;
			float tangentSign = v.tangent.w * unity_WorldTransformParams.w;
			float3 bitangent = cross(v.normal.xyz, v.tangent.xyz) * tangentSign;
			o.viewDirTangent = float3(
				dot(viewDir, v.tangent.xyz),
				dot(viewDir, bitangent.xyz),
				dot(viewDir, v.normal.xyz)
				);

			o.screenPosition = ComputeScreenPos(v.vertex);
			o.objPos = UnityObjectToClipPos(v.vertex);
		}

		void surf(Input IN, inout SurfaceOutputStandard o)
		{
			// Interleaved gradient noiseでアーティファクトを消す実験
			float2 screenPos = IN.objPos.xy / IN.objPos.z;
			screenPos.xy *= 1;
			float x = screenPos.x;
			float y = screenPos.y*(16.0f / 9.0f);
			float ig_noise = frac(52.9829189f * frac(0.06711056f*float(x) + 0.00583715f*float(y)));
			float mm = 0.0001; // 100サンプルあるならいらないのでほとんど無効に
			float addNoize = -mm + (2 * mm *ig_noise);

			// テクスチャ歪み
			float2 warp = tex2D(_MainTex, -IN.uv_MainTex).rg;

			// パララックス
			float2 uv = IN.uv_MainTex;
			uv.x += _Time.x*-0.5;
			uv.y += _Time.x*-1.0;
			uv += warp*0.075;
			float parallax = 0;
			for (int j = 0; j < _Iteration; j++) {
				float ratio = (float)j / _Iteration;
				//float col = tex2D(_MainTex, uv + lerp(0, _Distotion, ratio+ addNoize) * normalize(IN.viewDirTangent)) * lerp(1, 0, ratio);
				float2 uv2 = uv + lerp(0, _Distotion, ratio + addNoize) * normalize(IN.viewDirTangent);
				float3 uv3 = float3(uv2.x, uv2.y, 0.5+_Time.x*2);
				float col = tex3D(_Volume, uv3) * lerp(1, 0, ratio)*1.0;

				if (col > ratio) {
					parallax +=  col;
				}
			}
			parallax /= _Iteration;

			// 適当に色を弄る
			fixed4 c = ((tex2D(_MainTex, IN.uv_MainTex+float2(_Time.x*-0.5,_Time.x*-1.1))-float4(0.2,0.5,0.5,0)) * 0.5) * float4(1, 0.5, 0.5, 1);
			o.Albedo = c.rgb + pow(parallax,1.7) * _Color.rgb*100;
			o.Albedo.gb = pow(o.Albedo.gb + float2(0.2, 0.1), 2.5);
			o.Albedo.r += c.r * 1.25;

			// 光の粒(3レイヤー)
			float4 spk_col0 = float4(1.0, 1.0, 1.0, 1);
			float4 spk_col1 = float4(2.0, 1.0, 2.0, 1);
			float4 spk_col2 = float4(2.0, 1.5, 2.0, 1);
			{
				float depth = 2.0;
				float2 uv = IN.uv_MainTex + float2(_Time.x * -3.1, _Time.x * -1.05);
				float4 spk = tex2D(_SparkMap, uv + depth * normalize(IN.viewDirTangent)) * spk_col0;
				o.Albedo += spk.rgb * 2;
			}
			{
				float depth = 0.5;
				float2 uv = IN.uv_MainTex + float2(_Time.x * 1.25, _Time.x * 0.25);
				float4 spk = tex2D(_SparkMap, uv + depth * normalize(IN.viewDirTangent)) * spk_col1;
				o.Albedo += spk.rgb * 3;
			}
			{
				float depth = 0.25;
				float2 uv = IN.uv_MainTex + float2(_Time.x * -0.20, _Time.x * -0.3);
				float4 spk = tex2D(_SparkMap, uv + depth * normalize(IN.viewDirTangent)) * spk_col2;
				o.Albedo += spk.rgb * 2;
			}

			// Metallic and smoothness come from slider variables
			o.Metallic = _Metallic;
			o.Smoothness = _Glossiness;
			o.Alpha = c.a;
		}


        ENDCG
    }
    FallBack "Diffuse"
}


トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190505

2019-04-29

Houdini PDG 基本チュートリアル「都市を構築するためのタスク ワークフローを作成する」 Houdini PDG 基本チュートリアル「都市を構築するためのタスク ワークフローを作成する」 - Nao_uの日記 を含むブックマーク はてなブックマーク - Houdini PDG 基本チュートリアル「都市を構築するためのタスク ワークフローを作成する」 - Nao_uの日記 Houdini PDG 基本チュートリアル「都市を構築するためのタスク ワークフローを作成する」 - Nao_uの日記 のブックマークコメント

https://support.borndigital.co.jp/hc/ja/articles/360000229582-Houdini-PDG-%E5%9F%BA%E6%9C%AC%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB-%E9%83%BD%E5%B8%82%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%82%BF%E3%82%B9%E3%82%AF-%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-

なんかROP_Geometry_outputとかでファイルに吐き出したあとにファイルが壊れてたりうまく読めなかったりすることがある?Houdiniを閉じて再起動したり、ちゃんとキャッシュされているかFileノードで読み込んだ後は動く、みたいなことがあった。よくわからない

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20190429