プログラムdeタマゴ

nodamushiの著作物は、文章、画像、プログラムにかかわらず全てUnlicenseです

Unityに入門したいのにできない~URPを触ってみる~

 UnityもVivadoも全然入門できなくて困っています。

 まぁ、おっさんが無能なのは置いておいて、今後は URP というのと、 HDRP というのがスタンダードになっていく予定らしいですね。

 ということは、新参者のおっさんは取りあえず、 URP と HDRP をやっておけば良いのだと思います。

 RP はレンダー パイプラインで、レンダリング処理の流れをスクリプトで変更することが可能(SRP:スクリプタブルレンダーパイプライン )になる模様。シェーダーとかも旧レンダラとは互換性がなく、新規に作る必要があるらしい。ついでに、 URP と HDRP にも互換性がなく、どちらで作るのか最初に決めないとダメらしい。

 URP は軽量プラットフォームでも動く物で、HDRPは高性能なマシン(コンピュートシェーダが使えるマシンかな)で動く物。 URP は現在カスタム ポスト エフェクトが作れないらしく、固定の物から選択するしかないらしい。

 でも、検索すると公式な手段がまだ提供されてないだけで、URPでもポストエフェクトが作れるらしい。

 おっさんがUnity弄ってる目的ってぶっちゃけゲーム作りと言うより絵作りで、おっさんのPCで動けば満足なので HDRP で良い気がするけど。しかし、どうも HDRP は中々難しいらしい(?)ので、先ずは URP を試してみます。

 

URP のプロジェクトを作る

 まずはURP のプロジェクトを作ってみます。新規作成時に「Universal Render Pipelin」を選択しても良いのでしょうけど、何か最初からシーンが入ってて初心者にはわかりにくいので、3Dのプロジェクトから0から作っていきます。

f:id:nodamushi:20220228001010p:plain

 参考: Installing the Universal Render Pipeline into an existing Project

 

 先ずはPackage ManagerからUniversal RP をプロジェクトにインストールするらしい。

f:id:nodamushi:20220227231239p:plain

 Packages: Unity Registry を選択した後、 universal で検索し、 Universal RP が出ていて選択していることを確認後、 Install

f:id:nodamushi:20220227231453p:plain:w320

 

 インスコしただけだとダメで、URPのレンダー パイプライン アセットを作成する必要があるらしいです。

 というわけで、Assetsの下に適当にurpディレクトリを作りました。後は右クリックからメニューを辿って作成します。

 「Create」→「Rendering」→「Univarsal Render Pipeline」→「Pipeline Asset(Forward Renderer)」

f:id:nodamushi:20220227231902p:plain

 ふむ?ディレクトリに何か作成された。

f:id:nodamushi:20220227232046p:plain:w320

 作っただけではダメで、これをプロジェクトのグラフィックス設定で指定しないとダメらしい。

 Edit →Project Setings... →Graphics→Scriptable Render Pipeline Settingsの◎ボタンと押していって、最後に出てきた画面で作成したアセットを選択。

f:id:nodamushi:20220227232353p:plain:w320

 よくわからないけど、これで完了したらしい。

 

ポストプロセスを使ってみる

 URPだとカスタムポストエフェクトを作れないと書いたけど、そもそもどうやってポストエフェクト適応するんだ?ということでやってみる。

 参考: How to configure post-processing effects in URP

 まずは、シーンのカメラを選択して、InspectorでPost Processing にチェックを入れる。

f:id:nodamushi:20220228001753p:plain:w320

 次に、ポストエフェクトを適応するために右クリックからGlobal Volumeを作成。Volumeにはグローバルとローカルがあって、特定エリアだけエフェクトを書けるとかしたい場合はLocalを使うっぽいです。

 VolumeそのものはあらゆるGemeObjectにアタッチできて、有効なVolumeとWeightから使用する効果を決めるそうです。

f:id:nodamushi:20220228002309p:plain:w320

 効果はProfileというものに設定を保存してるのかな?とりあえず、新規にProfileを作成。

f:id:nodamushi:20220228002444p:plain:w320

 このProfileで適応する効果は、Add Overrideボタンで追加できる。ボタンを押すとポップアップが開いて、その中から効果を選択する。なるほど、この効果を現在は自作できない、ということらしい。

f:id:nodamushi:20220228002948p:plain:w320

 適当にカラー調整のエフェクトを追加して適当に設定。

f:id:nodamushi:20220228002749p:plain:w320

 おぉ、画面が赤くなった。

f:id:nodamushi:20220228002821p:plain:w320

 もう一個Volumeを作成して、こっちは青くする効果にしてみました。で、Weightをぐりぐり弄ると、混色具合が変わります。

f:id:nodamushi:20220228005057p:plain

 なるほどぉ。

 これ、複数のカメラ作ったとき、効果を変更するのはどうやるんだろう?

 まぁ、必要になったら調べれば良いか。

 

Shaderを作ってみる

 Shaderもこれまで作った物は使えないらしい。具体的に何が違うのか分からないけど、やってみよう。

 とりあえず、テンプレートっぽい物がメニューにあったので作ってみる。

f:id:nodamushi:20220228011346p:plain:w320

 で、出てきたのがコレ。

f:id:nodamushi:20220228011414p:plain:w320

 つ、ツライ。なにこれ、こんな分かりにくい物、絶対やりたくない………。ビジュアルプログラミングとか、クソの頂きですよ (現実の私を知る一部の方から「お前が言うな」と言われかねませんが)

 ………ん?この仮想テクスチャってなんじゃろ。なんかUEの事を調べてたときに読んだ気がする。

f:id:nodamushi:20220228011815p:plain

 調べてみると、やっぱりUEの仮想テクスチャの仕組みと同じっぽい。これが発展すると Nanite になるのですね。

 なお、仮想テクスチャはHDRPでしか使えないみたいですね。HDRPも面白そうですねぇ。

f:id:nodamushi:20220228012729p:plain

 

 まぁ、何にせよ、GUIは難しいし、触りたくないなぁ。

 というわけで、次回は0からShaderを書いてみる。