Czym jest odpowiednie rozszerzenie pliku dla GLSL shaders?
Uczę się cieniowania glsl i natknąłem się na różne formaty plików. Widziałem ludzi, którzy dają swoje rozszerzenia shaderów wierzchołków i fragmentów .vert
i .frag
. Ale widziałem również rozszerzenia .vsh
i .fsh
, a nawet oba shadery razem w jednym pliku .glsl
. Zastanawiam się, czy istnieje standardowy format pliku, czy w jaki sposób jest 'poprawny'?
5 answers
Nie ma standardowego rozszerzenia pliku dla shaderów GLSL. Najczęstsze z nich to prawdopodobnie .vert
i .frag
, ponieważ są to rozszerzenia, których 3D Labs używało w niektórych swoich narzędziach. Ale to wszystko dla każdej formy standardowego rozszerzenia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-21 23:32:51
Nie ma oficjalnego rozszerzenia w spec. OpenGL nie obsługuje ładowania shaderów z plików; po prostu przekazujesz kod shadera jako ciąg znaków, więc nie ma określonego formatu pliku.
Jednak glslang , kompilator/walidator referencyjny Khronos GLSL, używa następujących rozszerzeń, aby określić, do jakiego typu shadera służy plik:
- .Vert-a vertex shader
- .tesc-a teselation control shader
- .tese-ocena teselacji shader
- .geom-a geometry shader
- .frag-a fragment shader
- .comp-a compute shader
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-23 15:18:37
Identyfikacja typu pliku według rozszerzenia jest rzeczą specyficzną dla systemu Windows. Wszystkie inne systemy operacyjne używają różnych metod: MacOS X przechowuje Typ pliku w specjalnej strukturze metadanych we wpisach systemu plików. Większość * nixów identyfikuje pliki testując ich wewnętrzną strukturę na podstawie bazy danych znanych "magicznych bajtów"; jednak edytory tekstu używają tego rozszerzenia.
W każdym razie, źródła GLSL są jak każdy inny plik źródłowy programu: zwykły tekst, i to jest ich typ pliku.
The rozszerzenie można wybrać, jak chcesz. Używam następującego nazewnictwa:
- ts.glsl
- gs.glsl
- vs. glsl
- fs.glsl
Ale to mój wybór i technicznie moje programy nawet nie wymuszają żadnego nazewnictwa ani schematu rozszerzenia. Nazewnictwo jest dla ludzi, aby czytać i wiedzieć, co w nim jest; posiadanie wspólnego głównego rozszerzenia wymaga ode mnie reguły podkreślania składni tylko dla jednego zestawu rozszerzeń plików.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-22 06:59:20
Jak już inni wspominali, nie ma poprawnej odpowiedzi w ścisłym tego słowa znaczeniu. Warto wspomnieć, że sublime (potwierdzone dla v2 i v3) również oczekuje .vert i .frag do podświetlania i walidacji składni.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-12 00:00:03
Istnieją dwa sposoby pisania shaderów.
Możesz przechowywać zawartość shadera wierzchołków i fragmentu w zmiennej char *
i kompilować, łączyć i dołączać shader do programu.
Innym sposobem jest zapisanie oddzielnego pliku vertex i fragment shader z dowolnym rozszerzeniem i odczytanie go, aby skompilować, połączyć i dołączyć shader do programu.
Więc konwencja nazewnictwa, jak .vert/frag,vsdr/fsdr itp. są ważne tak długo, jak wiesz, jak czytać to...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-22 15:42:41