HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
1205
アキアキノヒロロ[hsp37b4] の [material]ファイル内での[path]指定について9解決


アキアキノヒロロ

リンク

2022/12/5(Mon) 15:39:18|NO.97460

[hsp37b3]までは、[material]ファイル内での[path]指定は、
[material]ファイルと同一フォルダ内のものなら、ファイル名だけの記述でよかったが、
[hsp37b4]では、[material]ファイル編集であっても、
『スクリプト』階層を基点としたパスで指定する記述でないとパスが通らなくなった、
ようですが、他の方の環境でもそうでしょうか。

もしそうなら、これって、『[shaders]フォルダ』との階層関係を厳密にするためでしょうか。
『スクリプト』階層と『[shaders]フォルダ』との階層関係は固定されているから、
この方法なら、ルート相対パスで指定しているようなものになるから......でしょうか。

であれば、[shaders]ファイルの設定を『スクリプト』に反映させる(?)には、
それに関するファイル編集でのパス指定は、どのファイル編集でも
> 『スクリプト』階層を基点としたパスで指定
することになる、のか。

言い方が、これでいいのか、知識が浅いので、間違っていたり、舌足らずであったなら、
お許し下さい。



この記事に返信する


youdai

リンク

2022/12/5(Mon) 20:31:07|NO.97461

HSP3.7beta4の更新履歴に以下のような記述があります。

>[HGIMG4][Windows] カレントフォルダ移動時にもシェーダーファイルが正しく参照されるように修正

例えば、以下のようなフォルダ構成だったとします。
res/*は、同じフォルダのことだと捉えてください。


res/shaders/a.vert res/a.vert a/res/shaders/a.vert a/res/a.vert a.vert 作品実行ファイル.exe

beta4の場合、.materialのパスに「res/shaders/a.vert」とある場合、作品実行ファイル.exeの位置から参照して「res/shaders/a.vert」がそのまま適用されるはずです。
この場合、更新履歴によればbeta4はカレントを移動してもアプリケーションは「res/shaders/a.vert」を正しく適用されます。
仮にシェーダーのパスが「a/res/a.vert」である場合は、「a/res/a.vert」が適用されます。
シェーダーのパスが「a.vert」だけである場合は、作品実行ファイル.exeの「a.vert」が適用されます。
これはbeta4以前からもこの仕様であったのですが、beta3以前ではこの仕様に加えて複数の場所を参照していたのではないでしょうか。それがbeta3以前ではカレントを移動した時にパスの相対関係が崩れ、シェーダーファイルが正しく参照されない不具合の原因になっていたのかもしれません。beta4ではこれがシェーダーファイルを正しく参照するために、厳密に「書いてある通りのそのままのパスに従う」この仕様に従っている形になっているのではないでしょうか。
加えてbeta4ではHGIMG4スクリプトの中でシェーダーやテクスチャを変更する自由度の高い命令が追加されましたから、パスを正確に記述する必要があるのかもしれません。
ただ、これは単にパスは「書いてある通りのものになった」だけで、難しいことではありません。
パス関係は難しく考えず、フォルダの構成通りに書けばいいと思います。



youdai

リンク

2022/12/5(Mon) 20:44:14|NO.97462

あと気をつけなければいけないことは、gpbファイルと.materialファイルのあるフォルダの位置です。
これらのファイルのフォルダの位置が異なると、.material内のパスもそのフォルダの位置に合わせたパスである必要があります。
これも難しいことではなく、通常のWindowsのファイルのパスと同じです。



youdai

リンク

2022/12/5(Mon) 21:01:45|NO.97463

ちなみにNO.97461の例の場合は、gpbと.materialは作品実行ファイル.exeと同じ位置にあるという前提です。



アキアキノヒロロ

リンク

2022/12/5(Mon) 22:20:27|NO.97465

youdai さん、ありがとうございます。
youdai さんから、レスを頂けるとは思ってもいませんでした。
先だっては、礼を失してしまい、本当に申し訳ありませんでした。
出来れば、これからもよろしくお願い致します。

本題ですが、

res/shaders/a.vert res/a.vert a/res/shaders/a.vert a/res/a.vert a.vert 作品実行ファイル.exe
は、図示(?)すると、

__[aフォルダ]__[a.vert] | |_[resフォルダ]_[a.vert] | |_[resフォルダ]_[shadersフォルダ]_[a.vert] |_[作品実行ファイル.exe] (|_[.gpb] ) (|_[.material] )
というような階層構造になるのでしょうか。
一応この階層構造でのご説明として、受け取ったのですが、
これでよろしいでしょうか。

いずれにしろ、「通常のWindowsのファイルのパスと同じ」と考えればいい訳ですね。

あと、前から気になっていたことですが、[material]ファイル編集でのパス指定に、
画像ファイルなどは、[path] を使い、

path = 〜/〜.png
のようにしているのに対して、
[.vertファイル]や[.fragファイル]などは、[pass] を使い、

pass { vertexShader = 〜/〜.vert fragmentShader = 〜/〜.frag }
のようになり、[path] [pass] を使い分けているんですね。
パス指定のこの使い分けは決まりごとなんでしょうか。



アキアキノヒロロ

リンク

2022/12/5(Mon) 22:33:38|NO.97466

このことに関しては、おにたま さんが、今程レスを上げていらっしゃいますね。
http://hsp.tv/play/pforum.php?mode=all&num=97105#97464



アキアキノヒロロ

リンク

2022/12/5(Mon) 22:43:01|NO.97467

もう一つ、お伺いしますが、
Drip さんへの、youdai さんのご返答に

「レンダリングパイプラインが全く異なるからです。
通常のシェーダーとは処理関係が全く別物」

というのは、[path] [pass] の使い分けにも関係するのでしょうか。



youdai

リンク

2022/12/6(Tue) 09:20:34|NO.97470

>というような階層構造になるのでしょうか。
>一応この階層構造でのご説明として、受け取ったのですが、
>これでよろしいでしょうか。
その構造で合っています。

>のようになり、[path] [pass] を使い分けているんですね。
>パス指定のこの使い分けは決まりごとなんでしょうか。
これはgameplay3Dの.materialの仕様と同じものになっているようです。
HGIMG4側で仕様変更がない限り、決まりごとと捉えても問題ないと思います。

passというのは、おそらくこの場合「通す」という意味だと思います。
この場合、「シェーダーをアプリケーション(HGIMG4)に通す」という意味になると思います。
pathというのは、おそらくこの場合「道」という意味だと思います。
例えば、テクスチャファイルなら、設定された「道」からテクスチャをシェーダーに対して「通す」というイメージです。

>「レンダリングパイプラインが全く異なるからです。
>通常のシェーダーとは処理関係が全く別物」
>というのは、[path] [pass] の使い分けにも関係するのでしょうか。

ケースバイケースになりますね。
ある場合もあるし、ない場合もあります。
どういうシェーダーかによって、変化すると思います。
これも難しいことではないです。自作したシェーダーファイルの位置が、どこのフォルダにあるかによってpassやpathが変化するだけです。



youdai

リンク

2022/12/6(Tue) 09:28:17|NO.97471

>ある場合もあるし、ない場合もあります。
詳しく説明すると例えば、1つのオブジェクトが1つのシェーダーで構成されている場合は全部同じシェーダーだし、複数のマテリアルで個別のシェーダーを使っている場合は、個別のシェーダー設定となります。
これも難しいことではなく、HGIMG4の標準のcoloredとtexturedの使い分けと同じです。



アキアキノヒロロ

リンク

2022/12/6(Tue) 11:25:40|NO.97472

youdai さん、詳しいご説明、ありがとうございます。

ただ、私は基礎知識もまだこれからというようなものですので、
これらのことを足掛かりに、勉強に励んでいきたいと思います。

youdai さん、重ね重ね有難うございます。

このスレは、一応、これで解決と致します。



ONION software Copyright 1997-2023(c) All rights reserved.