processing / processing/processing4
Support for #include in PShader (Enhancement)
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Java
- Star
- 494
- Fork
- 183
- Merge trung bình
- 4 giờ 39 phút
- Pull request đã merge (30 ngày)
- 3
Mô tả
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
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu bằng cách xác định createShader() và các đường dẫn mã tải PShader vertex và fragment. Đọc include parser được liên kết của lygia_p5_examples để xem nó xử lý các đường dẫn tương đối và đệ quy như thế nào, sau đó xác định các bài kiểm thử hoặc ví dụ hiện có về việc tải shader. Công việc được hoàn thành khi cả hai loại shader đều có thể mở rộng các tệp #include một cách an toàn, bao gồm cả các include tương đối lồng nhau, mà không xảy ra đệ quy vô hạn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- java
- Lĩnh vực
- computer-graphics
- Loại issue
- Tính năng
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 38/100