processing / processing/processing4
Support for #include in PShader (Enhancement)
まだ誰も着手していません。
- 主要言語
- Java
- スター
- 494
- フォーク
- 183
- 平均マージ
- 4時間 39分
- マージ済み PR(30日)
- 3
説明
Created by: patriciogonzalezvivo
Although #include routines are defined by Khronos as an extension they are left for the environment/framework running the GL driver to implement. The reason for that is the required access to file system. Implementing #include routines are fairly straight forward with a couple of gotchas to avoid, like: relative paths and infinite recursions.
Most serious CG engines support them because their advantages on modularity, reusability and clearer code.
For Processing this also could mean support for LYGIA a rich shader library pack with useful resources for creative coders and artist.
I made a simple implementations of a #include parser in this repository together with some examples on how it can be use.
void loadSource(String current_folder, String filename, ArrayList<String> source) {
println("search for", filename, "in", current_folder);
File file = new File(current_folder,filename);
String url = file.getPath().substring(1);
println("open", url);
String[] lines = loadStrings(url);
for (int i = 0; i < lines.length; i++) {
String line = lines[i];
String line_trim = line.trim();
if (line_trim.startsWith("#include")){
String include_file = line_trim.substring("#include".length()).replace("\"", "").trim();
File f = new File(current_folder,include_file);
loadSource(f.getParent(), f.getName(), source);
} else {
source.add(line + System.getProperty("line.separator") );
}
}
}
Adding this feature to createShader() to parse both vert and frag shaders shouldn't be hard and potentially bring numerous advantages.
cc @codeanticode @SableRaf @cacheflowe
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、createShader() と、vertex および fragment の PShader を読み込むコードパスを特定します。リンクされている lygia_p5_examples include parser を読み、相対パスと再帰をどのように処理しているかを確認してから、既存の shader 読み込みテストまたは例を特定します。完了の条件は、ネストされた相対 include を含め、両方の shader タイプが #include ファイルを無限再帰なしで安全に展開できることです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java
- 領域
- computer-graphics
- issue の種類
- 機能追加
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 38/100