13
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Riderがサポートするシェーダー周りの機能メモ

Riderの導入

Rider202.5958.478以降をインストールした後に、PackageManagerのJetBrains Rider Editor(2019系だとRider Editor)のパッケージを2.0.5にアップデートする。
プロジェクト内にC#スクリプトがないとシェーダーの補完とかも効かないようなのでC#スクリプトを作成しておく。
image.png
ここまでの作業で導入終了。シェーダーのサポートが効くはず。

ダメなときは、Preferences>External ToolsのRegenerate Project filesボタンを押すと良かったりするのかもしれない。New Shader Support - How To?
image.png

機能紹介

サッと触ってみて見つけた機能を列挙。VSCodeのUnityシェーダー用のプラグインをこれまで使っていたのでそれとの比較も併せて書きます。

入力補完

HLSLの組み込み関数もUnityの関数もユーザー定義の関数やら変数やらも全部出てきてくれます。前述のVSCodeのプラグインより網羅している感じ。ShaderLab部分の記述についてはサポートされていないみたい。(Blend構文とかPropertiesの型とか)
ShaderLab部分の補完に関してはVSCodeのプラグインの方が良い。
image.png

Rename

Shift+F6でリネームできる。VSCodeではCtrl+Hで文字列置換でやっていたけど、Riderはちゃんと識別子に対応してリネームしてくれる。cgincファイルで定義されている関数をリネームすると関数を呼び出してるファイル側でもリネームされる。

Find Usage

Ctrl+Alt+F7でUsageを見つけてくれてそこに飛べる。
image.png

Go to Declaration

Ctrl+Bで宣言に飛べる。

include周り

#include "."と入力すると候補を出してくれる。誤字しないし、フォルダを潜ってcgincを探すのも楽。
image.png

cgincの位置を変えたり、includeしてない状態で関数を呼び出そうとするとエラーで適切なインクルードを指摘してくれて、おすと#include文を自動挿入してくれる。
image.png

キーワード

#ifdef系は対応する#endifが分かりやすく表示される。入力時に既存のキーワードが表示されるので誤字、重複が防げる。
image.png

コード整形

Riderは通常はCtrl+Alt+Enterで自動フォーマットしてくれるみたいだけど、シェーダーで打つと改行されちゃうので、
1. Ctrl+Aで全選択
2. Alt+Enterでメニュー表示
3. EnterでFormat Selection実行
でやれば自動整形してくれる。
image.png

ShaderLab部分も整形してくれて助かるんだけど、#pragmaとか#includeとか#始まりの行はインデントされてない状態になってしまう。設定でどうにかできそうな気もするけどCode Styleの設定にcg/HLSLがないんですよね...
image.png
VSCodeのプラグインだとここもインデントされる。けどVSCodeの方は特定の書き方するとインデントがずれるバグがあるのでどっこいどっこい。

ShaderLab補完への対応

RiderのLive Templateなる機能を使って予めShaderLabの定型文を用意しておけばCtrl+Jで簡単に入力できる。っていうのがぱっと見つけられたShaderLab補完への対応策。
image.png
addと入力すればBlend One Oneを定型文として入力できるテンプレートを設定しておいたもの。
ただ、ShaderLab部分ではaddと入力しても自動でテンプレートが出てこないので、Ctrl+Jを押してテンプレート一覧を表示して選んだり、addと入力した後にCtrl+Jを押してテンプレート候補を表示させて選んだりする手間はある。

備考

既存の複雑目なシェーダー(cginc)を開いてみたら、入力補完は表示されるけどシンタックスハイライトが効いてない表示になっていたけど、再度確認しようとして開いてたら直ってたから、導入前にRiderを開いてたりしてなんかおかしいときは一度RiderかUnityかを閉じたりするといいのかもしれない。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
13
Help us understand the problem. What are the problem?