ruccho / UniTyped

UniTyped is a source generator that allows typed access to data such as SerializedObjects, material parameters, tags and layers.
MIT License
167 stars 5 forks source link

MaterialView に関する要望 #2

Open yuyu0127 opened 1 year ago

yuyu0127 commented 1 year ago

日々ありがたく利用させていただいております😊 MaterialView に関して、2点要望がございます。

1. shaderPath で別フォルダ内のシェーダーを指定したい

フォルダ管理の都合上、下記のようなディレクトリ構成になる場合が頻繁にあります。

[ディレクトリ構造]
Assets
├ Scripts
│ └ ShaderViews
│   └ XView.cs
└ Shaders
  └ X.shader

このとき、XView.cs に

[UniTypedMaterialView("../../Shaders/X.shader")]
public partial struct XView { }

と記述することで X.shader に対するビューを生成できるようになると更に便利だと感じております。

2. キーワードを扱う機能が欲しい

shader_feature および multi_compile で定義されたキーワードに対して、EnableKeyword / DisableKeyword / IsKeywordEnabled といった機能を view 経由で呼び出せると嬉しいです。

例えば、シェーダー側で USE_DITHER というキーワードがあったとき、

Debug.Log(view.USE_DITHER.Enabled); // 取得
view.USE_DITHER.Enabled = true; // 設定

といった記述ができるようになる、というものを考えておりますが、特に構文に対する強い要望はございません。

ruccho commented 1 year ago

ありがとうございます。

  1. shaderPathでの .. 指定は現在の最新版(v0.2.0)で手元の環境(Windows / macOS, Unity 2021.3.24f1, .NET Standard 2.1)で動作することを確認しています。もし動作しないのであれば詳しい環境をお伝えいただけますでしょうか。
  2. シェーダーキーワードのオンオフについて、ぜひ実装したいと考えていますが、HLSLのパースに関する実装上の問題があるため、すぐには実装されないと思います。すみませんがご了承ください。
yuyu0127 commented 1 year ago

ご確認ありがとうございます!

  1. shaderPathでの .. 指定は現在の最新版(v0.2.0)で手元の環境(Windows / macOS, Unity 2021.3.24f1, .NET Standard 2.1)で動作することを確認しています。もし動作しないのであれば詳しい環境をお伝えいただけますでしょうか。

実験を重ねたところ、条件は不明ですが「同一プロジェクトで同じような記述でも、クラスが自動生成される場合とされない場合がある」ことを確認しました。 一方でゼロから作成したプロジェクトであれば常に動作しております。

動作しなくなっているプロジェクトの方が諸事情で共有できないため、共有可能なプロジェクトで不具合を再現でき次第共有させていただきます!

環境は以下の通りです。

  1. シェーダーキーワードのオンオフについて、ぜひ実装したいと考えていますが、HLSLのパースに関する実装上の問題があるため、すぐには実装されないと思います。すみませんがご了承ください。

承知しました。ありがとうございます!

bigdra50 commented 6 months ago

実験を重ねたところ、条件は不明ですが「同一プロジェクトで同じような記述でも、クラスが自動生成される場合とされない場合がある」ことを確認しました。 一方でゼロから作成したプロジェクトであれば常に動作しております。

同様の問題に遭遇し、 暫定的な対応ができたため共有させて頂きます。

概要

macとWindowsの両方の環境で UniTyped を利用していたプロジェクトにおいて、Windowsでのみ MaterialView に対応するシェーダーグラフの自動生成が行われないことがありました。
macでは問題なく動作していました。

内容

開発環境